Published May 26, 2020

Google's Engineering Practices - What to Look for in a Code Review

Delve into Google's engineering practices as Joe Zack unpacks the intricacies of code reviews, emphasizing design, architecture, and complexity management. Discover the importance of robust unit testing and learn how positive feedback and effective commenting can shape a more productive code review culture.
Episode Highlights
Coding Blocks logo

Popular Clips

Episode Highlights

  • Thorough Review

    In the realm of code reviews, examining every line of code is crucial to ensure quality and maintainability. emphasizes the importance of understanding each line of non-generated code, suggesting that if a reviewer struggles to comprehend it, future developers likely will too 1. This thorough approach prevents rubber-stamping and encourages reviewers to seek clarification when needed. adds that asking questions rather than being led through changes helps reviewers grasp the code's intent 2.

    If you don't feel qualified to be the only reviewer, make somebody else who is qualified come in and do the review.

    ---

    This collaborative effort ensures that complex areas like concurrency and security are adequately addressed.

       

    Design & Architecture

    Assessing the design and architecture of code changes is a pivotal part of the review process. notes that Google's emphasis on design ensures that code fits well within existing systems and is placed appropriately 3. This approach prevents architectural issues and enhances code readability. highlights that Google's internal services often differ from their public versions, reflecting the need for design adjustments based on context 4.

    Does the code make sense? Is it in the right place or does it belong in a library?

    ---

    These considerations help maintain system integrity and functionality.

       

    Complexity Management

    Managing complexity in code is essential to avoid over-engineering and ensure clarity. discusses the balance between utilizing language features and avoiding unnecessary complexity 5. He warns against clever coding that obscures understanding, advocating for straightforward solutions. and Joe explore the challenges of multithreading, noting that while it can enhance performance, it also introduces complexity that must be managed carefully 6.

    Complexity should be checked at every level of the change, whether it's single lines of code, functions, or classes.

    ---

    This vigilance ensures that code remains accessible and maintainable.

Related Episodes