Code reviews are the most complained-about part of software development that almost nobody disputes is necessary. Every engineer has sat in a review that took three days to approve a one-line change. Every team has considered dropping reviews to "move faster". Most that actually try it come back within three months.
There is a reason. The cost of reviews is visible. The cost of skipping them is not.
What a review actually does
Strip away the ceremony. A code review is four things at once.
- A second pair of eyes looking for bugs, regressions and security issues.
- Knowledge transfer from the author to at least one other person.
- Quality enforcement of whatever standards the team has agreed on (naming, tests, documentation).
- A decision point before the change lands.
Each of these is doing real work. If you remove the review step, none of the work goes away. It just happens in a more expensive place (production), at a more inconvenient time (during an incident), or never.
The visible cost of reviews
Reviews take time. A PR sits in "waiting for review" for hours or days. The author context-switches while waiting. The reviewer context-switches into unfamiliar code. Both costs are real.
On a well-run team, this cost is 15 to 30 minutes of each engineer's day and a few hours of waiting time per PR. Over a sprint, it is visible in velocity metrics.
This is the cost people see. It is the cost that motivates "can we skip reviews?".
The invisible costs of skipping
More production bugs. Bugs caught in review are the cheapest to fix. A bug that ships takes 10x the time to diagnose and correct, plus whatever damage it does to users.
Knowledge silos. Without reviews, one person is the only one who has read a given module. When they leave or go on holiday, nothing in that module can safely change.
Style drift. Every developer ships their own conventions unchallenged. Over months, the codebase becomes a patchwork of half a dozen micro-styles, raising the cognitive load of every future change.
Security gaps. The patterns a reviewer would have flagged (hardcoded tokens, unparameterised queries, unsafe redirects) ship to production. Some get caught later by scanners. Some do not.
Decision opacity. Changes land without any justification in the history. When someone asks "why was this done this way?" six months later, nobody can answer. The PR title says "update user service". That is all the record there is.
Each of these compounds slowly. None is dramatic on any given day. Over six months, they produce a codebase that is buggier, more fragile, less consistent, and harder to understand. The team blames "tech debt" without ever connecting it to the decision to skip reviews.
When reviews break down
Reviews fail when the incentives are wrong. A few common patterns.
Rubber-stamp reviews. Reviewer looks at the PR for 30 seconds, clicks approve, moves on. The team believes reviews are happening. Nobody is catching anything. Same effect as skipping, with the appearance of rigour.
Reviews as gatekeeping. A senior engineer demands changes for personal preference, not substantive quality. Reviews become punitive. Authors game the system rather than engage with feedback.
Review backlog. PRs pile up. Review time creeps from hours to days. Authors lose context, reviewers skim harder, quality drops. Eventually someone proposes skipping reviews "to unblock the team".
One-person bottleneck. All PRs route to the same reviewer. That reviewer burns out or goes on holiday, and the team grinds.
Fix these issues before you conclude reviews are the problem. The process is rarely the real problem; the way it is run is.
What efficient reviews look like
Teams that sustain good reviews share a few habits.
Small PRs. A 50-line PR gets reviewed in 5 minutes. A 500-line PR takes 45 minutes and misses more. Authors write small PRs, reviewers prefer them, everybody wins.
Async first. Reviews happen in text, at readers' convenience. Only escalate to a call when the text is failing. This beats trying to schedule reviews into meetings.
Automation handles the mechanical. Linting, formatting, type checking and security scanning run in CI. Reviewers do not comment on tab indentation. They spend their attention on what the machine cannot see.
Expectations are written down. "Before you submit a PR, run X. Before you review a PR, check Y." Reduces the variance in what reviews look like.
Decision notes in the PR description. Not why the code is "correct" but why the approach was chosen. Future engineers read these when they inherit the change.
The bottom line
Code reviews are an investment. Some of their return is obvious: bugs caught before production. Most of it is invisible: knowledge shared, context preserved, consistency maintained, security checked.
The teams that ship reliably over the long term are not the ones that skip reviews to move faster. They are the ones that make reviews efficient enough to sustain under pressure.
If your reviews feel too expensive, do not skip them. Fix the process.