As a
System Software Engineer III on the Commercial Landscaping Team, you will bridge the gap between firmware and higher-level robot software. You will maintain the operating system and foundational software that every other system on the robot depends on and write the lower-level abstractions that make the rest of the codebase possible. You will work closely with firmware engineers on CAN-connected microcontrollers, perception engineers processing camera data in real time, and applications engineers streaming telemetry to the cloud. Most of the codebase is Rust, with some C++ and Python. You will be required to regularly spend time on-bot verifying your own changes.
Requirements- Maintain and evolve the robot's operating system (Ubuntu and Yocto) and system-level tools.
- Write and maintain software in Rust, Python, and C++ across the stack.
- Bridge firmware and higher-level software, translating between the two layers.
- Build tools that improve fleet observability, stability, and performance at scale.
- Verify changes directly on-bot and assist other engineering teams in the field.
- Debug complex, multi-threaded issues across firmware, perception, and application layers.
- Collaborate daily with firmware, perception, and applications engineers on shared systems.
- Learn new tools and technologies as the robot platform and fleet grow.
Qualifications- 5+ years of experience writing production code in at least one compiled language: Rust, C++, Go, Java, or C.
- Has built and maintained large, complex software systems over time.
- Has operated and maintained a complex Linux system in a production environment.
- Can debug large, multi-threaded, multi-disciplinary software systems.
- Comfortable engaging with unfamiliar systems to triage and solve deeply technical problems.
- Willing to spend hands-on time verifying changes directly on real hardware.
Physical Requirements- Ability to remain in a stationary position for significant portions of the workday, including computer-based tasks and meetings.
- Ability to communicate and exchange information clearly and effectively with team members and collaborators.
- Capacity to analyze complex technical problems and make decisions in a fast-paced environment.
- Ability to move around a lab, shop, or field environment to verify software changes directly on the robot.