Senior Software Engineer, Distributed Simulation (C++)Posted today$253K
The opportunity
We are looking for a Senior Software Engineer with deep C++ and real-time systems experience to build the simulation layer of the SIE platform. This is a systems software role: you will design and write the services that let independent simulators share one world — a common…
What you'll do
Design and build the C++ services that federate independent simulators into a: single simulated world — time management, entity registry and ownership, join/resign lifecycle, and state distribution
Own the wire layer: protocol encoding and decoding, multicast and unicast transport, and the interoperability work required to make simulators built by different teams and vendors talk to each other
Make simulation runs deterministic and reproducible enough that a result is: evidence, not a demo — including time control, replay, and the instrumentation that explains a divergence
Build and generalize the scenario and laydown authoring tooling that: engineers and operators use to describe what they want to run
Build the content and resource catalogs that let users save, tag, search, and: reuse environment and scenario definitions instead of rebuilding them each time
Chase down performance: profile hot paths, control allocation and copying, and hold latency and throughput budgets under load with hundreds to thousands of entities
What they're looking for
- You have a bias for action and taking ownership. You have a track record of: fixing a problem when you see one, including problems that are not formally yours.
- Experience with distributed simulation and interoperability standards: DIS (IEEE 1278), HLA/RTI (IEEE 1516), TENA, or equivalent proprietary federation layers
- Experience with simulation engines, physics or flight dynamics models, game: engines, or discrete-event and time-stepped simulation frameworks
- Experience with software-in-the-loop or hardware-in-the-loop test systems,: robotics simulation, or synthetic environments used for test and training
- Experience making a distributed system deterministic or reproducible,: including logical clocks, lockstep execution, or record and replay
- Experience with gRPC/protobuf, or with designing binary protocols and schema evolution
- Experience running C++ services on hardware or containers on Kubernetes, or otherwise operating what you build
- Experience or interest working in monorepos with modern build systems like: Bazel, Buck, Nix, etc. (we use Bazel)