Senior Software Engineer, Robotic Applications
About The Role:
Our manufacturing system is composed of nodes; each delivers a unit of manufacturing capacity for a process, and there are a dozen or more node types. As a Software Engineer, Robotic Applications, you will bring nodes to life: designing the automation sequences, state machines, and APIs that turn integrated hardware into reliable, repeatable manufacturing capacity. Your deliverable is software, mainly Python, in the application layers of our stack: the APIs that wrap a node to automate manufacturing processes, the orchestration that sequences motion, vision, and process steps for throughput, and the calibration and diagnostic tooling that lets us replicate nodes and keep them healthy.
You will work shoulder to shoulder with mechanical, electrical, and process engineers through bring-up: one week defining machine behavior with a mechanical designer, the next chasing cycle time out of a motion sequence or root-causing a failure that crosses the software/hardware boundary. You can try code on the machine in the morning and land it as a tested, typed package through CI in the afternoon.
What You’ll Do:
- Design and implement machine behavior: automation sequencing, state machines, failure detection and recovery, and the APIs that expose it all.
- Write code that makes unsafe commands impossible rather than merely discouraged: enforce invariants, validate before touching hardware, and leave the machine in a known state on every exit path.
- Ship a simulator or mock with every device, test sequencing, timing, and recovery without the machine, and extend the conformance suite every machine runs in CI.
- Optimize cycle time: instrument sequences, find where time goes, and overlap or restructure motion/vision/process steps to get it back.
- Bring up new hardware with cross-functional teams, and build the calibration, verification, and diagnostic tools that make the next copy of a machine faster to stand up.
- Debug across the stack: from a misbehaving sensor or homing failure up through orchestration logic, using logs, telemetry, and the machine itself.
- Contribute to system reliability through observability that shows a machine degrading before it stops, fault handling, and graceful recovery, so machines run without babysitting.
- Take a turn on the on-call rotation: periodically a one-week shift that includes the weekend (about once every 10 weeks; less frequently as the company grows and eventually transitioning to dedicated support teams). Current coverage slots are 6am–2pm or 2pm–10pm, and you will not be expected to work beyond the shift for those days.
What You’ll Need:
- 3+ years developing software for systems that interact with hardware or the physical world (level set by experience and interview performance; we hire L3–L5 on this posting).
- Depth on something you built: at least one system you can take us two layers down into, what you wrote, why that design, what broke, and how you found it.
- Strong programming fundamentals and fluent Python: you will write and debug Python every day, and every coding exercise in our interview is in Python. If your strongest language is something else, you are welcome if you can work in Python live; it does not need to be polished.
- A first-principles mindset: you reason about why a design works, not just how you've seen it done.
- Practical understanding of state machines, sequencing, and failure modes in systems where software drives physical hardware: what is legal from the current state, what must still hold when a step fails halfway, and why an operation that may be retried must be safe to repeat.
- Systematic debugging habits, starting from the symptom and reaching the mechanism, and the collaboration skills to chase problems across the software/electrical/mechanical boundary.
- BS in CS, EE, ME, Mechatronics, Robotics, or equivalent experience.
Bonus Points For:
- Experience bringing up and integrating electromechanical systems (sensors, actuators, motion axes) in production environments.
- Working fluency in a systems language (C++, Rust, Go); our motion stack is C++ and it helps to read it.
- Robotics depth where this job uses it: kinematics, motion planning, vision-based alignment, calibration (hand-eye, kinematic, galvo scan-field), and a track record of landing it in shipped systems.
- Experience with hardware-in-the-loop test design, observability, or simulation and digital-twin validation beyond unit-level mocks.
- Realtime or embedded experience (valuable on adjacent teams; not required here).
The compensation for this position also includes equity and benefits.