Code review is the practice of having engineers read and comment on each other's proposed changes before merge.
Code review is the practice of having one or more engineers read a proposed code change, comment on it, and approve (or request changes) before it is merged. The Google Engineering Practices doc and Michael Lynch's writing are widely-cited references. Done well, code review improves code quality, catches bugs, spreads context across the team, and mentors junior engineers. Done poorly, it becomes a bottleneck, a bikeshedding forum, or a rubber stamp that adds process cost without quality gain.
Four goals, in priority order: (1) Does this change do what it claims to do and not obviously break anything? (2) Is the design reasonable given the codebase's conventions? (3) Will the next engineer be able to understand and modify this in six months? (4) Does it match style guidelines. Style should be enforced by linters and formatters, not humans; if reviewers spend time on formatting, the tooling is broken. Reviewers should not rewrite the author's code in comments — they should identify problems and let the author solve them.
The single biggest determinant of code review quality is turnaround time. Reviews that sit for 2+ days lose context on both sides; the author has moved on, the reviewer has to re-orient. Target: initial response within 4 hours during working hours; full round-trip within 24 hours for normal PRs. Teams that meet this bar keep PRs small, focused, and easy to review; teams that don't develop massive PRs, batching, and the whole system degrades.
Small PRs get better reviews and merge faster. Studies (SmartBear, Google) consistently show reviewer effectiveness drops sharply past ~400 lines of change; past 1000 lines, review is essentially theater. Norms that work: PRs under 400 lines expected; anything larger requires a design doc or breakdown into stacked PRs. Feature branches with 20-file mega-PRs are the primary source of review pain — the fix is upstream discipline, not more reviewers.
Single reviewer is fine for most changes; two reviewers only for high-risk areas (security, payments, data migrations, public APIs). Reviewers should include at least one person with domain context; only-adjacent-reviewers produce shallow reviews. Code ownership files (CODEOWNERS) that auto-request the right people scale better than 'ping whoever's around.' Junior engineers should review senior engineers' code too — reviewing above your level is one of the fastest ways to grow.
Distinguish blocking comments (must fix), suggestions (please consider), and nits (optional style). Use explicit prefixes: 'nit:', 'question:', 'blocking:'. Ask questions rather than assert corrections — 'why this approach vs. X?' opens dialogue; 'this is wrong, do X' shuts it down. Praise good code publicly; correct bad code without personal framing. Chesterton's Fence applies: before deleting something, understand why it was there.
Investor directory · Fundraising library · Articles A–Z · Company funding database