The Google Software Development Process: The Benefits of Code Review

This week, I have been attending the Large Synoptic Survey Telescope (LSST) All-Hands Meeting in Tucson, Arizona. During a session on software best practices, I heard a talk by Rob Pike on software development practices at Google. He described how 15,000 developers work on the same body of code, but what really piqued my interest was when he said that Google doesn’t use code branching – all code is instead committed at the “tip.”

How is this made to work? Well, one feature of the process is automated testing, usually done in the cloud. Google has available tools for tracking dependencies and then running automated testing. But perhaps the most crucial part of the process is code review before code is checked into the repository. And the most important part of the review is “writeability.” While developers have latitude in choice of language, the company provides a strict set of code guidelines, and adherence to them is expected. The net result of these reviews, conducted usually by small teams of engineers, is a (very nearly) uniform body of well annotated code. New projects are reviewed incrementally. While the process may appear to be top-heavy, it has the huge payoff of producing quality code: Rob’s view is that the effort repays itself.

Google uses the Rietveld Code Review Tool to keep track of all issues and comments, and to keep track of differences between versions of the code (it has a “diff” tool built in).  Learn more about this tool.The screenshots below show the tool in action:

Front page listing recent issues

Front page listing recent issues

Issue 6457091: Index code cleanup

Issue 6457091: Index code cleanup

Code differences page for  Issue 6457091: Index code cleanup

Code differences page for Issue 6457091: Index code cleanup

Advertisements
This entry was posted in agile development, cyberinfrastructure, information sharing, programming, software engineering, software maintenance, software sustainability and tagged , , , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s