Code Review Is Broken

The average PR sits in review for five days. That's a full work week of context loss, task switching, and frustration. Something is deeply wrong.

Illustration for Code Review Is Broken
code-review-broken Code review as practiced by most teams is a bottleneck that provides less value than we pretend. Small PRs, distributed reviewing, and time SLAs can fix it. code review, pull requests, developer productivity, engineering process, PR review, team velocity, code quality

According to Hatica research, developers can lose up to 2 days per week - 40% of engineering capacity - to code review delays. Meta's internal analysis found the average pull request sits in review for over four days. That's nearly a full work week of context loss, task switching, and accumulated frustration. Something is deeply wrong with how we do code review.

TL;DR

Fix code review by timebox reviews (1 hour max), automate style checks, and focus human attention on architecture and logic. Let machines catch formatting.

{{label}} Code Review That Actually Works

Smart people fall for this because the theory sounds compelling.

Code review is supposed to catch bugs, spread knowledge, and maintain quality. In practice, it's become a bottleneck that slows teams down, frustrates developers, and often doesn't catch the bugs that matter anyway.

I've watched this dysfunction across dozens of teams. The pattern is remarkably consistent. And the solutions everyone reaches for usually make things worse.

The Five-Day Tax

Hatica research: Engineers lose up to 2 days/week (40%) to code review bottlenecks

Let's be concrete about the cost. Every day a PR sits in review, the author loses context on that code. By day three, they've moved on to something else. By day five, coming back to address feedback requires re-loading the entire mental model from scratch.

Meanwhile, reviewers face a growing queue of stale PRs. The longer code sits, the more likely it conflicts with other changes. The more likely the original requirements have shifted. The more likely the author has forgotten why they made certain decisions.

This isn't a minor inefficiency. Studies suggest developers lose up to 2 days per week to code review delays. That's 40% of engineering capacity consumed by a process that's supposed to help.

Why Reviews Are Slow

The typical team has one or two people who actually do reviews. Everyone else avoids the queue. They feel underqualified, they're not incentivized to prioritize it, or the PRs are too large to review quickly.

PR size is the hidden killer. According to LinearB research, the optimal review size is under 400 lines. Beyond that, reviewer attention flags and defect detection drops. But most teams don't enforce size limits. So PRs grow to 1,000 lines, nobody wants to review them, and the queue backs up.

The same pattern I've seen with architecture - complexity accumulates until the system becomes unmanageable.

The Reviewer Bottleneck

In most teams, the senior engineers end up as the de facto reviewers. They know the codebase best, so they feel responsible for catching problems. Junior engineers defer to them, thinking "they'll catch anything I miss."

This creates a two-person bottleneck for a ten-person team. The seniors are overwhelmed. The juniors aren't developing review skills. The team's bus factor on code quality is dangerously low.

I've seen teams where the tech lead reviews 80% of all PRs. That's not sustainable, and it's not developing the team's capabilities either.

What Reviews Actually Catch

Here's the uncomfortable truth: code review is better at catching style issues than bugs. According to Microsoft Research, reviews catch 20-60% of defects. Most of what they catch are superficial issues that automated tools could find.

The bugs that matter - logic errors, edge cases, security vulnerabilities - often slip through. Reviewers don't have enough context to spot them. They see the code but don't understand the problem deeply enough to know if the code solves it correctly.

This doesn't mean code review is worthless. Knowledge sharing and collective code ownership are valuable. But we shouldn't pretend that review is a reliable defect-detection mechanism.

Review Dysfunction Scorecard

How broken is your code review process? Check all that apply:

Dysfunction Score: 0/14
Check items to assess your review process

The Approval Theater

The worst dysfunction is when code review becomes pure ceremony. PRs get approved without meaningful examination. The queue is too long, the deadline is too close, or the reviewer trusts the author.

This is worse than no review at all. It creates false confidence. The team thinks code is reviewed. Management reports that code is reviewed. But the actual verification never happened.

If you've ever seen a PR approved in under five minutes that later caused a production incident, you've seen approval theater in action.

What Actually Works

From watching teams that have functional review processes, here's what they do differently:

Strict PR size limits. 200-400 lines maximum, enforced by tooling. Large changes get broken into multiple PRs. This makes reviews tractable and keeps the queue moving.

Review rotation. Everyone reviews, not just seniors. Junior developers reviewing senior developers' code is particularly valuable. It forces clear communication and spreads knowledge fast.

Time SLAs. PRs should be reviewed within 24 hours. If that's not happening, it's a signal that something is wrong with the process.

Automation for the easy stuff. Linting, formatting, type checking, test coverage - automate all of it so human reviewers can focus on logic and design.

Pair programming as alternative. For complex changes, real-time collaboration often works better than async review. The feedback loop is immediate, the context is shared, and quality is higher by the time it's committed.

The AI Review Question

AI-assisted code review is the current hot topic. I've written about the limitations. The short version: AI can help with routine checks but can't replace human judgment on design and business logic.

More importantly, AI review doesn't solve the bottleneck problem. It might accelerate individual reviews. But if queue management is broken, faster reviews just mean faster queueing.

Fix the process first. Then think about tooling.

The Culture Component

Process fixes only work if the culture supports them. I've seen teams implement all the right policies - small PRs, review rotation, time SLAs - and still have dysfunctional reviews because the underlying values were wrong.

The most important cultural shift is treating review as collaborative, not adversarial. When reviewers see their job as finding problems to criticize, authors become defensive. When reviewers see their job as helping ship better code, the dynamic changes entirely.

Good review culture means being specific about what needs to change and why. Not "this is wrong" but "this could fail when X happens because Y." It means distinguishing between blocking issues and preferences. It means assuming good intent.

It also means authors taking feedback graciously. Explain context when it's missing, but don't get defensive when reviewers find real problems. Thank reviewers for their time even when feedback is hard to hear.

When Traditional Code Review Works

I'm not saying code review is always broken. The traditional model works well when:

  • PRs are genuinely small. Teams that enforce 200-400 line limits get fast, thorough reviews. The bottleneck is size, not process.
  • Reviewers have deep context. Pair programming partners reviewing each other's solo work, or tight teams on a single product - shared context makes review meaningful.
  • The goal is knowledge transfer. Junior developers learning from seniors, or spreading familiarity across a team - review as education works even when defect detection is imperfect.

But for most teams with large PRs, distributed reviewers, and review-as-gate-keeping culture, the process creates more friction than value.

The Metric Trap

Teams love to measure code review. Time to first review. Time to merge. Number of review cycles. These metrics can be useful signals, but optimizing for them directly backfires.

If you reward fast reviews, you get rubber stamps. If you penalize review cycles, you get approvals of flawed code. If you track review time per PR, you get PRs split artificially.

The right metrics are outcomes: production incidents, defect rates, developer satisfaction. Review metrics are inputs that should be monitored but not optimized directly. When review time is slow, that's a signal to investigate.

Review Dysfunction Scorecard

This interactive scorecard requires JavaScript to calculate scores. The criteria table below is still readable.

Score your team's review process. Click cells to diagnose each symptom.

DimensionScore 0 (Healthy)Score 1 (Warning)Score 2 (Broken)
Review TurnaroundUnder 24 hours1-3 days4+ days typical
Reviewer DistributionEveryone reviews regularly3-4 people do most reviews1-2 people are the bottleneck
PR SizeMost PRs under 400 lines400-800 lines common1000+ line PRs normal
Comment QualityBugs and logic focusMix of bugs and nitpicksMostly style nitpicks
Approval RigorThorough examinationQuick but reasonableRubber stamps common
Author ContextAuthors still fresh on codeSome context lossAuthors have moved on

The Bottom Line

Code review as practiced by most teams is a bottleneck that provides less value than we pretend. The five-day review cycle is killing productivity and frustrating developers. It often doesn't catch the bugs that matter.

Small PRs, distributed reviewing, and clear time SLAs can fix most of this. The technology isn't the problem. The process is the problem.

If your code review process makes engineers dread opening pull requests, the process is failing - no matter what the metrics say.

"If your code review process makes engineers dread opening pull requests, the process is failing - no matter what the metrics say."

Sources

Process Review

Is your engineering process helping or hurting velocity? Get an outside assessment.

Get Assessment

Debugged This at 3am?

If you have war stories from the trenches that add nuance to what I've written, I want to hear them.

Send a Reply →