Senior Software Engineer, Distributed Systems (Rust)Active$254K
The opportunity
Lattice is the software platform behind Anduril's autonomous systems. The Data Distribution team owns how data moves through it: the Distributed Service Bus (DSB), a messaging layer that carries every track, sensor reading, command, and video stream between nodes.
What you'll do
Messaging semantics. DSB provides pub/sub, reliable request/response, and: ordered bidirectional streams with flow control. You'll design the delivery guarantees, retry and acknowledgement behavior, and backpressure that sit behind each one, and decide what each guarantee costs on a link that drops packets.
Routing across a changing mesh. Topology changes constantly, and a node may: have several paths to the same destination. You'll work on OSPF-style link-state routing, multi-path link selection, and prefix-based routing, and on keeping routing state convergent when the network splits and rejoins.
Gossip and state dissemination. Subscription tables, topology, and node: metadata have to propagate across the mesh without flooding it. You'll design and tune gossip protocols and reason about how and when they converge.
Operating under constrained bandwidth. Some links carry a few kilobits per: second. You'll build priority-based QoS scheduling, compression, and protocol-level optimizations so that the important traffic gets through first.
gRPC over the mesh. You'll extend our gRPC proxy layer so existing services: can talk to each other over DSB without changes, including service discovery, retries, and timeouts across unreliable links.
Correctness through simulation. The same production code runs under a: deterministic, manually clocked scheduler, so failures are reproducible. You'll build simulation harnesses and tests that find the bugs that only show up under partitions, reordering, and loss.
What they're looking for
- Bachelor's degree in Computer Science, Engineering, or a related field, or equivalent experience
- + years of professional software engineering experience, with a focus on distributed systems
- Solid distributed-systems fundamentals. You can reason about delivery: guarantees, ordering, consistency, partition behavior, and failure modes, and explain why a given design does or doesn't converge.
- Production experience building or operating messaging systems, RPC: frameworks, databases, or other distributed infrastructure
- Depth in a systems language (Rust, C, C++, or Go). Depth matters more than: the specific language; we'll teach you Rust if you have the fundamentals.
- Working knowledge of networking: TCP/UDP, sockets, MTU, TLS/mTLS
- Familiarity with asynchronous programming (async/await, event loops, futures)
- Comfort with Protocol Buffers and/or gRPC