01
Review Axis
Purpose of review, the contract of a public interface and backward compatibility, correctness and edge cases, the meaningfulness and fragility of tests, a change's reflection in documentation, and handing the style discussion off to a tool.
- 01 Purpose of Code Review On the same change, three reviewers on the same axis find 6 defects, three reviewers on separate axes find 15, a single reviewer on five axes finds 22; five reviewers on five axes also find 22, and two unwritten-requirement defects escape all four of the four configurations.
- 02 Meaning of Interface The sets the five axes find are disjoint and the sum of pairwise intersections is 0; found drops from 22 to 19 when the interface axis is closed, and ten reviewers without an interface axis find 3 fewer defects than a single reviewer covering all five axes.
- 03 Meaning of Implementation An axis's marginal contribution is independent of which axes are already open: implementation adds 6 defects in both orders, and whether one, three, or twelve people look at the same axis does not change that 6.
- 04 Reviewing Tests All three test defects sit in chunks that were read, and reviewers giving findings on other axes are present in those chunks; missed-in-unread-chunk is 0 on all five axes, and found drops from 22 to 19 once the test axis is closed.
- 05 Documentation Review Closing the five axes one at a time always loses the size of the closed class — 3, 6, 3, 3, and 7 defects; closing the documentation axis drops found from 22 to 19, and two unwritten-requirement defects sitting in the same chunk keep being missed even with the axis open.
- 06 Code Style and Automation Once the style axis is handed to a tool, the human's finding drops from 22 to 15 and its style share from 0.318 to 0.000; the total stays the same if all five axes were already covered, and climbs from 15 to 22 in a three-reviewer panel.