About the Role
About The Job
Google's software engineers develop the next-generation technologies that change how billions of users connect, explore, and interact with information and one another. Our products need to handle information at massive scale, and extend well beyond web search. We're looking for engineers who bring fresh ideas from all areas, including information retrieval, distributed computing, large-scale system design, networking and data storage, security, artificial intelligence, natural language processing, UI design and mobile; the list goes on and is growing every day. As a software engineer, you will work on a specific project critical to Google’s needs with opportunities to switch teams and projects as you and our fast-paced business grow and evolve. We need our engineers to be versatile, display leadership qualities and be enthusiastic to take on new problems across the full-stack as we continue to push technology forward.
Responsibilities
- Own and deliver bootloader and firmware features in C and Rust.
- Participate in bringing up new Pixel devices throughout the full development cycle such as pre-silicon emulation environments, SoC development boards, prototypes, mass production, and in-market.
- Participate in software planning, design, and implementation of software features in areas such as interconnect, boot, reset, memory, high speed IO, low speed IO, interrupt controllers, and security.
- Debug issues involving complicated multi-faceted interactions between silicon, hardware, firmware, software, and the environment.
- Work in a variety of code bases (e.g., C, Rust, and Python).
Minimum qualifications
- Bachelor’s degree or equivalent practical experience.
- 2 years of experience with software development in C.
- 2 years of experience working with embedded operating systems.
Preferred qualifications
- Master's degree or PhD in Computer Science or a related technical field.
- 2 years of experience with data structures and algorithms.
- Experience with common debug or trace technologies (e.g., JTAG, ARM SWD, ARM CoreSight, gdb, TRACE32, etc.).
- Experience developing embedded software in bare-metal microcontroller firmware, RTOS, bootloaders (e.g., BIOS, uboot, UEFI, coreboot, etc.), or Linux kernel.
- Experience with modern SoC architecture, system bring-up, debug, or trace techniques.
- Proficiency in the Rust programming language.
Compensation
Individual pay is determined by factors including job-related skills, experience, and relevant education or training. US: $147000 - $210000 (USD) + 15% bonus target + equity + benefits.
Requirements
Software Development in C
You should have at least 2 years of experience in software development using C.
Embedded Operating Systems
Experience working with embedded operating systems is required.
Debugging Skills
Familiarity with debugging technologies such as JTAG and gdb is necessary.
Embedded Software Development
Experience in developing embedded software for microcontrollers and bootloaders is essential.
Nice to Have
A Master's degree or PhD in Computer Science or a related field is preferred.
Experience with data structures and algorithms is a plus.
Familiarity with modern SoC architecture and system bring-up techniques is beneficial.
Proficiency in Rust programming language is a valuable asset.
Benefits
Equity
Employees are offered equity as part of their compensation.
Bonus Target
A 15% bonus target is included in the compensation package.
Health Insurance
Comprehensive health insurance is provided.
Remote Work
Flexible remote work options are available.