Staff Software Engineer, ML, Compute Platform

Google
Sunnyvale, CA, USA

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. In this role, you will develop embedded software, diagnostics tests, tools in support of pre/post-silicon validation for inhouse SoCs, machine learning (ML) Systems (TPU/GPU) and compute servers. You will get an opportunity to do system health verification, performance characterization, and solve on-going reliability problems for millions of machines inside Google Data Centers across the globe. You will enable the hardware reliability and decision making on cutting-edge hardware and software design and deployment. You will work on projects that push the limits of technologies and provide you with an opportunity to make a large impact. The technologies include systems that support compute, search, machine learning, video transcoding, security, image processing etc.

Responsibilities

Provide technical leadership on high-impact projects.

Influence and coach a distributed team of engineers.

Facilitate alignment and clarity across teams on goals, outcomes, and timelines.

Manage project priorities, deadlines, and deliverables.

Design, develop, test, deploy, maintain, and enhance large-scale software solutions.

Qualifications

Minimum

Bachelor's degree or equivalent practical experience.

8 years of experience in software development.

5 years of experience testing, and launching software products.

5 years of experience working with embedded operating systems.

3 years of experience with software design and architecture.

Experience with embedded systems, ARM processor and Linux.

Preferred

Master’s degree or PhD in Engineering, Computer Science, or a related technical field.

8 years of experience with data structures and algorithms.

3 years of experience in a technical leadership role leading project teams and setting technical direction.

3 years of experience working in a complex, matrixed organization involving cross-functional, or cross-business projects.

Experience with diagnostics, networking and data analysis.