Minimum qualifications:
- Bachelor's degree or equivalent practical experience.
- 8 years of experience in software development, and with data structures/algorithms.
- 5 years of experience testing, and launching software products, and 3 years of experience with software design and architecture.
- 5 years of experience working with embedded operating systems.
- Experience with Linux, Linux Drivers, Firmware, Test Automation, Debugging, C, C++ and GPU programming.
- Master's degree or PhD in Engineering, Computer Science, or a related technical field.
- 3 years of experience in a technical leadership role leading project teams and setting technical direction.
Want more jobs like this?
Get jobs in Sunnyvale, CA delivered to your inbox every week.
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.
Platforms Engineering performs research, design, and development for the hardware, software, and networking technologies that power all of Google's products and services. The team works on solutions to deliver the next generation compute, storage, and networking products for the Google data centers, and also to counter the implications of Moore's Law. Within the Platforms organization, the GPU System Software team is responsible for building top quality GPU compute solutions that power various Google services like Google Cloud, Meet, YouTube, Deepmind, and more. The team also maintains the systems deployed in the data centers with reliability monitoring services, kernel roll-outs, firmware and driver upgrades.
Behind everything our users see online is the architecture built by the Technical Infrastructure team to keep it running. From developing and maintaining our data centers to building the next generation of Google platforms, we make Google's product portfolio possible. We're proud to be our engineers' engineers and love voiding warranties by taking things apart so we can rebuild them. We keep our networks up and running, ensuring our users have the best and fastest experience possible.
The US base salary range for this full-time position is $189,000-$284,000 + bonus + equity + benefits. Our salary ranges are determined by role, level, and location. The range displayed on each job posting reflects the minimum and maximum target salaries for the position across all US locations. Within the range, individual pay is determined by work location and additional factors, including job-related skills, experience, and relevant education or training. Your recruiter can share more about the specific salary range for your preferred location during the hiring process.
Please note that the compensation details listed in US role postings reflect the base salary only, and do not include bonus, equity, or benefits. Learn more about benefits at Google .
Responsibilities
- Develop, test, and help deploy and debug the software for multi-GPU and multi-node systems, including Linux Kernel, Driver, Firmware, and Test development.
- Develop benchmarks and metrics to drive and track performance across the data plane and lower stack layers.
- Create platform abstractions to improve feature velocity and create insulation for hardware generations.
- Contribute to all aspects of development including requirements definition, design, implementation, unit testing, and integration to ensure high quality deliverables.
- Design and implement tools for automating diagnostics, performance evaluation, and reliability assurance for servers.