Software engineering and programming language researchers at Google study all aspects of the software development process, from the engineers who make software to the languages and tools that they use.
About the team
We are a collection of teams from across the company who study the problems faced by engineers and invent new technologies to solve those problems. Our teams take a variety of approaches to solve these problems, including empirical methods, interviews, surveys, innovative tools, formal models, predictive machine learning modeling, data science, experiments, and mixed-methods research techniques. As our engineers work within the largest code repository in the world, the solutions need to work at scale, across a team of global engineers and over 2 billion lines of code.
We aim to make an impact internally on Google engineers and externally on the larger ecosystem of software engineers around the world.
Team focus summaries
Google provides its engineers’ with cutting edge developer tools that operate on codebase with billions of lines of code. The tools are designed to provide engineers with a consistent view of the codebase so they can navigate and edit any project. We research and create new, unique developer tools that allow us to get the benefits of such a large codebase, while still retaining a fast development velocity.
Developer Inclusion and Diversity
We aim to understand diversity and inclusion challenges facing software developers and evaluate interventions that move the needle on creating an inclusive and equitable culture for all.
We use both qualitative and quantitative methods to study how to make engineers more productive. Google uses the results of these studies to improve both our internal developer tools and processes and our external offerings for developers on GCP and Android.
Program Analysis and Refactoring
We build static and dynamic analysis tools that find and prevent serious bugs from manifesting in both Google’s and third-party code. We also leverage this large-scale analysis infrastructure to refactor Google’s code at scale.
Machine Learning for Code
We apply deep learning to Google’s large, well-curated codebase to automatically write code and repair bugs.
Programming Language Design and Implementation
We design, evaluate, and implement new features for popular programming languages like Java, C++, and Go through their standards’ processes.
Automated Software Testing and Continuous Integration
We design, implement and evaluate tools and frameworks to automate the testing process and integrate tests with the Google-wide continuous integration infrastructure.
A book on how Google manages an ultra-large scale, living codebase that evolves and responds to changing requirements and demands over time.
Presentation at the @Scale conference in 2015 on why Google stores all the code in a single codebase and the tools we have created to manage it.
Presentation at the @Scale conference in 2017 on how we keep velocity up in a large scale codebase.
Industry-standard report that to helps teams and organizations benchmark themselves against the industry and identify key capabilities to become high performers.
Google’s standard static analysis tool for Java and the foundation for our refactoring infrastructure. We use a data-driven approach to refine checks and develop new ones. We describe the development of one such check (and some of the challenges we faced for large-scale deployment) in our publication “Detecting argument selection defects” (OOPSLA 2017).