Software Engineering in the Hardware organization is where software meets the physical world. The Waymo Embedded Software Engineering team develops the critical, safety-critical software running at the edge of the Waymo driver, interfacing directly with steering, braking, propulsion, power distribution, and vehicle sensors. You will develop the abstractions and business logic to safely control and manage autonomous vehicles across different vehicle platforms and OEMs. Operating under stringent real-time, deterministic, and fail-operational constraints, the team builds high-reliability onboard firmware and off-vehicle simulation tooling, having a direct and material impact on Waymo's ability to scale safely to more vehicles and cities.
You will:
- 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.
You have:
- 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).
We prefer:
- 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.
Note: This will be a hybrid onsite internship position. We will accept resumes on a rolling basis until the role is filled. To be in consideration for multiple roles, you will need to apply to each one individually - please apply to the top 3 roles you are interested in.
The expected hourly rate for this full-time position is listed below. Interns are also eligible to participate in the Company's generous benefits programs, subject to eligibility requirements.
Hourly Bachelors Pay
$60-$60 USD
The expected hourly rate for this full-time position is listed below. Interns are also eligible to participate in the Company's generous benefits programs, subject to eligibility requirements.
Hourly Masters Pay
$70-$70 USD