Waymo is an autonomous driving technology company with a mission to make it safe and easy for people and things to get where they’re going. Since our start as the Google Self-Driving Car Project in 2009, Waymo has been focused on building the World’s Most Experienced Driver in hopes of improving the world's access to mobility while saving thousands of lives now lost to traffic crashes. Our Waymo Driver powers Waymo One, our fully autonomous ride-hailing service, as well as Waymo Via, our trucking and local delivery service. To date, Waymo has driven over 20 million miles autonomously on public roads across 25 U.S. cities and conducted over 20 billion miles of simulation testing.
The Embedded Software Vehicle team brings the Waymo Driver to life on each new vehicle and trucking platform across areas such as actuator control and monitoring, redundancy handling, fallback strategies, and interfacing with the autonomy systems. We collaborate closely with vehicle, hardware, system, test, and software engineers through the entire product lifecycle to ensure the Waymo driver is safe and works seamlessly on all our vehicles. If you are passionate about developing robust and safety-critical embedded software for complex electro-mechanical systems and like collaborating across multiple disciplines, then we’d love to hear from you.
In this role, you'll:
- Develop C++ software for embedded systems in a culture of safety and high quality that includes multiple tiers of testing (unit tests, simulation integration tests, in-vehicle end-to-end/fault-injection tests)
- Own the development space between the fast-pace non-embedded autonomous system and the OEM vehicle platform (brakes, steering, throttle, etc.)
- Collaborate with System/Safety/Hardware Engineers and Operations teams on requirements and reliability/safety goals
- Leverage Waymo onboard logging infrastructure and offboard data analysis to advance the design of embedded systems and the resolution of complex interaction/compatibility issues
At the minimum, we'd like you to have:
- Degree (BS, MS) in Computer Engineering, Computer Science, Robotics, Controls, or similar or equivalent practical experience
- At least 2 years of experience developing high-quality software plus a dedication to continuous improvement
- Passionate about seeing your own work operate within larger systems and committed to the importance of collaborative teamwork (e.g., robust design and code reviews)
- At least one of
1) Exceptional programming in C++11 or later
2) Deep experience with programming embedded systems (including resource-constrained microcontrollers)
It's preferred if you have:
- At least 5 years of software development experience
- Advanced knowledge of modern C++ patterns, idioms, and unit test methodology
- In-depth understanding of Embedded Systems and associated development and debugging tools (e.g., microcontroller cross-development in a Linux environment)
- Experience with safety critical systems and functional safety
- Automotive industry experience (e.g., CAN, UDS, vehicle control)
- Experience with data analysis tools applied to large data sets (e.g., fleet logs)
- Open source projects that demonstrate dedication to crafting high quality software
We appreciate your interest in Waymo. Waymo is an equal employment opportunity employer. Waymo’s policy is not to discriminate against any applicant or employee based on race, color, sex, religion, national origin, age, disability, military status, genetic information or any other characteristic protected by law. Waymo also prohibits harassment of applicants or employees based on any of these protected categories. Waymo will also consider for employment qualified applicants with criminal records in accordance with applicable law. Waymo also makes workplace accommodations for qualified individuals with disabilities as required by applicable law.