skip to main content
10.1145/3183519.3183525acmconferencesArticle/Chapter ViewAbstractPublication PagesicseConference Proceedingsconference-collections
research-article
Open Access

Modern code review: a case study at google

Published:27 May 2018Publication History

ABSTRACT

Employing lightweight, tool-based code review of code changes (aka modern code review) has become the norm for a wide variety of open-source and industrial systems. In this paper, we make an exploratory investigation of modern code review at Google. Google introduced code review early on and evolved it over the years; our study sheds light on why Google introduced this practice and analyzes its current status, after the process has been refined through decades of code changes and millions of code reviews. By means of 12 interviews, a survey with 44 respondents, and the analysis of review logs for 9 million reviewed changes, we investigate motivations behind code review at Google, current practices, and developers' satisfaction and challenges.

References

  1. 2017. Appendix to this paper. https://goo.gl/dP4ekg. (2017).Google ScholarGoogle Scholar
  2. A.F. Ackerman, L.S. Buchwald, and F.H. Lewski. 1989. Software inspections: An effective verification process. IEEE Software 6, 3 (1989), 31--36. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. A.F. Ackerman, P.J. Fowler, and R.G. Ebenau. 1984. Software inspections and the industrial production of software. In Symposium on Software validation: inspection-testing-verification-alternatives. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Alberto Bacchelli and Christian Bird. 2013. Expectations, outcomes, and challenges of modern code review. In ICSE. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Vipin Balachandran. 2013. Reducing Human Effort and Improving Quality in Peer Code Reviews Using Automatic Static Analysis and Reviewer Recommendation. In ICSE. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Mike Barnett, Christian Bird, João Brunet, and Shuvendu K Lahiri. 2015. Helping developers help themselves: Automatic decomposition of code review changesets. In ICSE. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. V.R. Basili, F. Shull, and F. Lanubile. 1999. Building knowledge through families of experiments. IEEE Trans. on Software Eng. 25, 4 (1999), 456--473. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Olga Baysal, Oleksii Kononenko, Reid Holmes, and Michael W Godfrey. 2013. The influence of non-technical factors on code review. In WCRE.Google ScholarGoogle Scholar
  9. Christian Bird, Nachiappan Nagappan, Brendan Murphy, Harald Gall, and Premkumar Devanbu. 2011. Don't touch my code!: examining the effects of ownership on software quality. In FSE. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Amiangshu Bosu and Jeffrey C Carver. 2013. Impact of peer code review on peer impression formation: A survey. In ESEM.Google ScholarGoogle Scholar
  11. Amiangshu Bosu, Michaela Greiler, and Christian Bird. 2015. Characteristics of useful code reviews: an empirical study at Microsoft. In MSR. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. chromium 2016. Chromium developer guidelines. https://www.chromium.org/developers/contributing-code. (August 2016).Google ScholarGoogle Scholar
  13. J.W. Creswell. 2009. Research design: Qualitative, quantitative, and mixed methods approaches (3rd ed.). Sage Publications.Google ScholarGoogle Scholar
  14. Jacek Czerwonka, Michaela Greiler, and Jack Tilford. 2015. Code Reviews Do Not Find Bugs: How the Current Code Review Best Practice Slows Us Down. In ICSE (SEIP). Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Martín Dias, Alberto Bacchelli, Georgios Gousios, Damien Cassou, and Stéphane Ducasse. 2015. Untangling fine-grained code changes. In SANER.Google ScholarGoogle Scholar
  16. M.E. Fagan. 1976. Design and code inspections to reduce errors in program development. IBM Systems Journal 15, 3 (1976), 182--211. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. gerrit 2016. https://www.gerritcodereview.com/. (August 2016).Google ScholarGoogle Scholar
  18. githubpull 2016. GitHub pull request process. https://help.github.com/articles/using-pull-requests/. (2016).Google ScholarGoogle Scholar
  19. Barney G Glaser and Anselm L Strauss. 2009. The discovery of grounded theory: Strategies for qualitative research. Transaction Books.Google ScholarGoogle Scholar
  20. Georgios Gousios, Margaret-Anne Storey, and Alberto Bacchelli. 2016. Work Practices and Challenges in Pull-Based Development: The Contributor's Perspective. In ICSE. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Georgios Gousios, Andy Zaidman, Margaret-Anne Storey, and Arie van Deursen. 2015. Work Practices and Challenges in Pull-Based Development: The Integrator's Perspective. In ICSE. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Toshiki Hirao, Akinori Ihara, Yuki Ueda, Passakorn Phannachitta, and Ken-ichi Matsumoto. 2016. The Impact of a Low Level of Agreement Among Reviewers in a Code Review Process. In IFIP International Conference on Open Source Systems.Google ScholarGoogle ScholarCross RefCross Ref
  23. Harrie Jansen. 2010. The logic of qualitative survey research and its position in the field of social research methods. In Forum Qualitative Sozialforschung, Vol. 11.Google ScholarGoogle Scholar
  24. Yujuan Jiang, Bram Adams, and Daniel M German. 2013. Will my patch make it? and how fast?: Case study on the linux kernel. In MSR. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Sami Kollanus and Jussi Koskinen. 2009. Survey of software inspection research. The Open Software Engineering Journal 3, 1 (2009), 15--34.Google ScholarGoogle ScholarCross RefCross Ref
  26. Oleksii Kononenko, Olga Baysal, and Michael W Godfrey. 2016. Code review quality: How developers see it. In ICSE. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Matthew B Miles and A Michael Huberman. 1994. Qualitative data analysis: An expanded sourcebook. Sage.Google ScholarGoogle Scholar
  28. Audris Mockus and James D Herbsleb. 2002. Expertise browser: a quantitative approach to identifying expertise. In ICSE. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. phabricator 2016. Meet Phabricator, The Witty Code Review Tool Built Inside Facebook. https://techcrunch.com/2011/08/07/oh-what-noble-scribe-hath-penned-these-words/. (August 2016).Google ScholarGoogle Scholar
  30. Rachel Potvin and Josh Levenburg. 2016. Why Google Stores Billions of Lines of Code in a Single Repository. Commun. ACM (2016). Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Teade Punter, Marcus Ciolkowski, Bernd Freimut, and Isabel John. 2003. Conducting on-line surveys in software engineering. In Empirical Software Engineering. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. P. Rigby, B. Cleary, F. Painchaud, M.A. Storey, and D. German. 2012. Open Source Peer Review---Lessons and Recommendations for Closed Source. IEEE Software (2012).Google ScholarGoogle Scholar
  33. Peter C Rigby and Christian Bird. 2013. Convergent software peer review practices. In FSE. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Peter C. Rigby, Daniel M. German, Laura Cowen, and Margaret-Anne Storey. 2014. Peer Review on Open-Source Software Projects: Parameters, Statistical Models, and Theory. IEEE Transactions on Software Engineering 23, 4, Article 35 (2014). Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. David L Sackett. 1979. Bias in analytic research. Journal of chronic diseases 32, 1-2 (1979), 51--63.Google ScholarGoogle ScholarCross RefCross Ref
  36. Caitlin Sadowski, Jeffrey van Gogh, Ciera Jaspan, Emma Söderberg, and Collin Winter. 2015. Tricorder: building a program analysis ecosystem. In ICSE. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. F. Shull and C. Seaman. 2008. Inspecting the History of Inspections: An Example of Evidence-Based Technology Diffusion. IEEE Software 25, 1 (2008), 88--90. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Andrew Sutherland and Gina Venolia. 2009. Can peer code reviews be exploited for later information needs?. In ICSE.Google ScholarGoogle Scholar
  39. William Isaac Thomas and Dorothy Swaine Thomas. 1928. The methodology of behavior study. The child in America: Behavior problems and programs (1928), 553--576.Google ScholarGoogle Scholar
  40. Patanamon Thongtanunam, Shane McIntosh, Ahmed E Hassan, and Hajimu Iida. 2016. Revisiting code ownership and its relationship with software quality in the scope of modern code review. In ICSE. Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Patanamon Thongtanunam, Shane McIntosh, Ahmed E Hassan, and Hajimu Iida. 2017. Review participation in modern code review. Empirical Software Engineering 22, 2 (2017), 768--817. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Patanamon Thongtanunam, Chakkrit Tantithamthavorn, Raula Gaikovina Kula, Norihiro Yoshida, Hajimu Iida, and Ken-ichi Matsumoto. 2015. Who should review my code? A file location-based code-reviewer recommendation approach for modern code review. In SANER.Google ScholarGoogle Scholar
  43. Motahareh Bahrami Zanjani, Huzefa Kagdi, and Christian Bird. 2016. Automatically recommending peer reviewers in modern code review. IEEE Transactions on Software Engineering 42, 6 (2016), 530--543. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Minghui Zhou and Audris Mockus. 2010. Developer Fluency: Achieving True Mastery in Software Projects. In FSE. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Modern code review: a case study at google

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in
    • Published in

      cover image ACM Conferences
      ICSE-SEIP '18: Proceedings of the 40th International Conference on Software Engineering: Software Engineering in Practice
      May 2018
      336 pages
      ISBN:9781450356596
      DOI:10.1145/3183519

      Copyright © 2018 Owner/Author

      This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike International 4.0 License.

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 27 May 2018

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article

      Upcoming Conference

      ICSE 2025

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader