About Zipline
About You and The Role
As a staff embedded software engineer at Zipline, you will be responsible for building the flight software that enables a highly maneuverable aircraft to safely fly over millions of homes and make deliveries day-in and day-out. You will work closely with a range of other disciplines to ensure each aircraft seamlessly transitions from our manufacturing lines to being a participant in the largest drone delivery network in the world.
Our technical stack is a distributed system of desktop-grade Linux compute, microcontrollers, and dozens of peripherals such as redundant comms links, sensors, and actuators. We are hiring for detail-oriented engineers who will bring a generalist mindset and expertise in at least one of these technical domains: safety-critical Linux, real-time firmware applications, core onboard libraries such as high-throughput messaging and redundant logging, or embedded tooling.
What You'll Do
- Design and build the software architecture necessary to run everything from critical flight software to inter-connected ground-based hardware on embedded Linux systems
- Develop kernel and userspace drivers for production and prototype sensors, and refine sensor data APIs for perception, navigation and other autonomy software engineers
- Design and build the software necessary to run critical flight and safety processes on a network of microcontrollers, from bootloaders to network drivers to embedded applications
- Analyze the runtime characteristics of our avionics software in flight to build confidence in its performance, focusing on re-usable, maintainable software and optimizing where required
- Understand and improve the reliability of the flight software system as a whole, working with hardware and systems engineers to develop comprehensive fault management strategies and hardware-in-the-loop tests
- Develop metrics, monitoring and troubleshooting capabilities to prepare the system for field deployment at scale
- Design and build data collection and testing tools to support early stage evaluation of new sensors, communications systems, and edge compute platforms
What You'll Bring
- Strong software engineering skills, with proficiency in at least one strongly typed language. We use Rust and C++ onboard, and python for tooling.
- Excitement to contribute across the stack to solve problems from end-to-end. We use Yocto to build our in-house Linux distribution, and an RTOS on our microcontrollers.
- Expertise in embedded systems development.
- Strong software architecture skills, having designed and shipped solutions for complicated real-world use cases.
- Strong technical leadership skills and experience owning large technical systems that other engineers will contribute to.
Our team uses a hybrid in-office and distributed work environment, centered around our headquarters in South San Francisco, CA. You must be able to work from the office on a regular basis.