
Software Engineer (Embedded Firmware)
Zipline
Job description
-
As an embedded firmware engineer at Zipline, you will be responsible for building the lowest level and most safety-critical software on our aircraft
-
You will work closely with a range of other disciplines, including electrical, mechanical, embedded Linux, and systems engineers, to ensure each aircraft seamlessly transitions from our manufacturing lines to being a participant in the largest drone delivery network in the world
-
We use C++ in our firmware development, with Rust and Python for tooling that will be deployed to our production systems in the field
-
Our aircraft are deployed to locations around the world, many not easily accessible, even over a network
-
You will help build re-usable firmware infrastructure that will level up our systems’ observability and reliability, without requiring an equal scaling of our engineering team
-
Design and build the software necessary to run critical flight and safety processes on a network of microcontrollers, in cooperation with embedded Linux edge computers
-
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
-
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
-
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 microcontroller platforms- Fluency in implementing peripheral drivers based on electrical schematics and datasheets, and debugging at this boundary in order to support prototype hardware evaluation
-
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
-
Experience building and maintaining real-world deployed embedded systems, and handling the long tail of edge cases to ensure consistent safety, reliability and high performance
-
A systems mindset and intuition for debugging; when anything could be wrong, you know how to narrow down the possibilities
-
Curiosity and a willingness to learn and work in a variety of embedded environments, from running on bare metal, to using and RTOS and integrating with embedded Linux
-
Strong software engineering skills, with proficiency in at least one strongly typed language. We use C++, Rust, and Python
-
This role requires a minimum of 3 years of working experience at a business developing hardware. If you are a new graduate or currently in school, this is not an appropriate role to apply for