- Pay
- $60–$70/hr
- Where
- Mountain View, CA, USA
- Posted
- 2 days ago
Waymo is an autonomous driving technology company with the mission to be the world's most trusted driver. Since its start as the Google Self-Driving Car Project in 2009, Waymo has focused on building the Waymo Driver—The World's Most Experienced Driver™—to improve access to mobility while saving thousands of lives now lost to traffic crashes. The Waymo Driver powers Waymo’s fully autonomous ride-hail service and can also be applied to a range of vehicle platforms and product use cases. The Waymo Driver has provided over ten million rider-only trips, enabled by its experience autonomously driving over 100 million miles on public roads and tens of billions in simulation across 15+ U.S. states.
Software Engineering in the Hardware organization is where software meets the physical world.
What you'd do
- Develop high-quality vertically-integrated C++ software systems (on-vehicle firmware and off-vehicle simulation/tooling) running at the edge of the Waymo driver.
- Contribute directly to the bring-up, validation, and debugging of next-generation compute platforms, peripheral drivers, and hardware-software interfaces for new vehicle platforms.
- Write robust unit tests (such as gTest) and Software-in-the-Loop (SIL) simulation fixtures to validate edge-case handling, system robustness, and fault containment.
- Analyze field data logs, vehicle telemetry, and simulation results to identify root causes and improve firmware performance.
- Participate in cross-functional engineering workflows, design discussions, and code reviews alongside experienced embedded and systems engineers.
What they want
- Enrolled in a BS or MS program in Computer Science, Computer Engineering, Software Engineering, Information Systems, or a related technical field.
- Strong programming foundation in C or C++, with a solid understanding of data structures, pointers, and memory management.
- High curiosity, a continuous learning mindset, and the enthusiasm to explore unfamiliar hardware architectures, tools, and codebases.
- Demonstrated problem-solving ability, debugging skills, and comfort navigating ambiguity when working with evolving platforms or prototypes.
- Familiarity with Linux development environments, command-line tools, and version control systems (e.g., Git).
- Embedded Systems and Real-Time Programming: Hands-on experience developing software for microcontrollers (such as ARM Cortex-M or Cortex-R), bare-metal environments, or RTOS with resource-constrained execution.
- Hardware Bring-Up and Lab Debugging: Practical experience with board bring-up, hardware-software integration, and lab instrumentation such as oscilloscopes, logic analyzers, and multimeters.
- Testing and Quality: Experience with C++ unit testing frameworks like Google Test (gTest) and test-driven development methodologies.
- Open Source and Student Team Experience: Active involvement in collegiate engineering teams (such as Formula SAE, Formula Electric, Baja SAE, robotics clubs) or open-source projects demonstrating dedication to crafting high-quality modern C++ software.
- Scripting and Tooling: Proficiency in Python for test automation, telemetry data analysis, or build scripting.