Gerrit or directly Github.
Ideally, the first available person handles the review. As in the collective version, it shouldn't always be the same person who handles reviews, to promote collective code ownership.
This is a mandatory step in your development process, display it as a new column to your board before the functional review stage.
To be effective, a code review should be dedicated to address the defects, and corrections or any discussions should be held separately:
It is common that some complex issues require an exchange with the entire team:
The table below gives a (non-exhaustive) list of comparison criteria between the two types of code review:
Collective review | Pair review | |
Efficiency (number of defects detected) | +++ | ++ |
Collective Code Ownership and learning curve | +++ | ++ |
Quality improvement, standards evolution | +++ | +++ |
Cost | +++ | + |
Setup ease | + | +++ |
The various studies mentioned in Best Kept Secrets of Peer Code Review and the chapters on software quality and collaborative construction practices in Code Complete show that collective review is generally more efficient than peer review, but has the disadvantage of being more difficult and expensive to implement.
These studies also show that the vast majority of defects are identified during the review preparation. This comforts us in the effectiveness of the peer review, provided it is well prepared: it provides a good compromise, avoiding the cost of a meeting with many participants.
You can also use formal collective code reviews in addition to pair reviews:
There are so many blog titles labelled like "The [benefits | dangers] of [Code | Pair Review | Pair Programming]", but in the end, the debate is elsewhere. Even if we issue an opinion in favor of a preferred format, it does not matter if you do pair programming, collective or peer review: the key is to find the approach that matches the culture of your team.
This article offers an interesting analysis on the subject and we’ll sum up its conclusion as follows: analyze and admit your weaknesses in your collaborative development practices. If you have not yet chosen an approach, exchange with developers who regularly use these practices. Experiment and try to improve, during a retrospective for example.
We have so far described code review formats: through a following article, we will share with you the pitfalls encountered that could put at risk this practice.