InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Design and Code Reviews : The Good, Bad and Ugly

Posted by Vikas Hazrati on Mar 07, 2008

Sections
Process & Practices
Topics
Agile ,
Delivering Quality
Tags
Complementary Practices

In an interesting article on Design and Code reviews Kirk Knoernschild mentions that such reviews promise to improve software quality, ensure compliance with standards, and serve as a valuable teaching tool for developers. However, the way they are performed affects their value. In some organizations they might really add value to the software lifecycle whereas in others a review might just be a part of the bureaucracy.

He mentions some of the worst review practices as

Witch hunt reviews - Causing the developers who wrote the code to feel threatened and attacked.

Curly brace reviews - Emphasizing just on structure and indentation instead of serious issues.

Blind reviews - Reviewers have never looked at the code before and come to the review meeting unprepared.

Exclusionary reviews - Reviewing only a sample of the code and leaving out other important pieces.

Tree killer review - Waiting until the codebase becomes so large such that neither a complete review is possible nor effective.

Token review - Doing the review as a formality just because the management intends to get it done.

World review – Conducting the review infront of a huge audience, many of whom are not related to the project, there by intimidating the developers.

Kirk seems to mention that in order to do effective reviews; the team should try to automate the review process as much as possible and gather metrics. The team should try to incorporate feedback mechanisms in their existing development environment so that the developers are alerted about the red flags before they are ready to check in code.

He mentions some tools which help in bringing greater objectivity and focus to the review process, like

Kirk further mentions an interesting way to do reviews, called the 20% review

The idea behind the 20% review is simple: once 20% of development is complete, a review should be held. Some teams might find it beneficial to hold the 20% review each iteration. That's certainly effective, but I've found that if teams do a good job using metrics for a continuous review, holding the 20% review for each major system function is sufficient.

The 20% review should focus on initial design and code cleanliness. The metrics discussed above offer wonderful insight into the evolution and growth of the code while the size is still relatively manageable.

He concludes by emphasizing that using metrics to help drive reviews brings greater objectivity and focus to the review process.The greater the automation the easier it would be to arrive at those metrics and thus do an effective review. The review should also be held early enough so that the developers can utilize the learnings early on and the effectiveness of the review is not compromised.

  • This article is part of a featured topic series on Agile
bad links by Sébastien Gruhier Posted
Re: bad links by Dave Rooney Posted
Re: bad links by Deborah Hartmann Posted
Code Reviews are good... by Dave Rooney Posted
Re: Code Reviews are good... by Vikas Hazrati Posted
Link icons by Ali Bolourian Posted
  1. Back to top

    bad links

    by Sébastien Gruhier

    FYI, You have some bad links in your article
    Seb

  2. Back to top

    Re: bad links

    by Dave Rooney

  3. Back to top

    Re: bad links

    by Deborah Hartmann

    Thanks for your tact! Actually all the links were broken due to a formatting error.

    Fixed! Apologies for the inconvenience.

  4. Back to top

    Code Reviews are good...

    by Dave Rooney

    ...so why not do them in real-time? It's called Pair Programming! :)

    Dave Rooney
    Mayford Technologies

  5. Back to top

    Re: Code Reviews are good...

    by Vikas Hazrati

    Dave I totally agree with your statement. The problem is that in many companies, though they follow agile, pair programming has not really caught up as a result there is a need to do peer/formal code reviews later.
    I know a team of around 80 people split into smaller scrum teams who are not pair programming but they do want to wrote great code and do want all the team members to learn from the reviews.

    Vikas Hazrati
    vikashazrati.wordpress.com

  6. Back to top

    Link icons

    by Ali Bolourian

    Why do you use PDF icon for links at the bottom of your article? I saw this on other articles and other places on your web site too.

Educational Content

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.

Beauty Is in the Eye of the Beholder

Alex Papadimoulis discusses ugly code, where it comes from, how to avoid it, and how to get rid of it.

Architecting Visa for Massive Scale and Continuous Innovation

John Davies examines Visa’s architecture and shows how enterprises have architected complex integrations incorporating Hadoop, memcached, Ruby on Rails, and others to deliver innovative solutions.

Max Protect: Scalability and Caching at ESPN.com

Sean Comerford unveils ESPN.com’s architecture, what components are used and why, and the current changes the website goes through.

The Seven Deadly Sins of Enterprise Agile Adoption

Are there repeated patterns of failure on Enterprise Agile Enablement efforts? Sanjiv and Arlen discuss Seven Deadly Sins to avoid when adopting Agile in an enterprise.

Questions for an Enterprise Architect

Erik Dörnenburg answers: What is Enterprise and Evolutionary Architecture?, discussing 4 issues: Turning strategy into execution, Ensuring conformance, Where do the architects sit? Buying or building?

Wrap Your SQL Head Around Riak MapReduce

Sean Cribbs explains what Map-Reduce and Riak are, why and how to use Map-Reduce with Riak, and how to convert SQL queries into their Map-Reduce equivalents.