Your Code Review Process Is Slowing You Down (Here's the Fix)
PR turnaround time is the most undervalued engineering metric. Here's how to cut it from days to hours without sacrificing quality.
A PR sits open for two days. The author has moved to the next task. When feedback arrives, they have to context-switch back. The fix takes 30 minutes, but the calendar time is two days.
Multiply by every PR. Multiply by every engineer. That's where your velocity went.
PR turnaround time is the single most underrated engineering metric. Below 4 hours, your team feels fast. Above 24 hours, your team feels stuck. Most teams sit at ~20 hours and don't measure it.
Why slow reviews compound
A PR that sits open isn't just blocked — it's actively decaying.
- Merge conflicts accumulate. Other PRs land. Yours diverges from main.
- Author context evaporates. They've moved on. Re-engaging with the diff costs 15 minutes.
- Reviewer context evaporates. They have to re-read more carefully each time they come back.
- Branch protection rules trigger. Stale CI, expired approvals, force-pushes break the review chain.
- Quality drops. Long reviews become rubber-stamps. Reviewers skim because they've been asked to look at it three times.
The cost of a 24-hour review isn't 24 hours of engineer time. It's a 30-minute review plus ~2 hours of context-switching for both author and reviewer, plus quality erosion.
The 4-hour target
Aim for: a PR opened in the morning is reviewed before lunch. Opened in the afternoon, reviewed before EOD.
That's "fast." Below 4 hours and engineers stop batching changes — they ship smaller PRs because the feedback loop is fast enough to make small PRs worth it.
This compounds. Smaller PRs are reviewed faster. Faster reviews encourage smaller PRs. The flywheel runs the other direction too — slow reviews encourage big PRs ("might as well bundle it"), which take longer to review.
What blocks the 4-hour target
1. No expectation of review. Engineers don't review until it's "their job for the day." Reviews are an interrupt, not a default.
2. PRs that are too big. A 1000-line PR is a four-hour review. Nobody schedules that. It sits.
3. Reviewers picked from a pool of two. If only the senior engineer can review, and they're in meetings all day, every PR waits for them.
4. No cultural pressure. Stale PRs are a manager's problem to resolve, not the team's.
5. Code review tools are bad. GitHub's review UI is okay but doesn't surface what you need to know — what's the blocker? Who needs to act?
The fixes that actually work
Set a SLA of 4 hours during work hours. Make it explicit. "If you open a PR by 2pm, it gets reviewed by EOD." Track it. Show it on a team dashboard.
PRs over 400 lines need a sync review. A diff that big is a meeting, not an async review. Either split it or do a 30-minute walkthrough.
Round-robin assignment. Don't let reviews bottleneck on one person. Use a code-owners file with multiple owners and rotate.
"PR review" is a slot in your calendar. Not "when I have time." A specific 30-minute block, twice a day. After standup, after lunch.
Surface the queue. A bot that says "@team you have 3 PRs waiting >2hr." Make it visible.
What good review feedback looks like
Three categories of comments:
- Blocker — "this is broken / wrong / dangerous." Must be addressed.
- Suggestion — "I'd do this differently, here's why." Non-blocking.
- Question — "I don't understand this." Author clarifies, may or may not change code.
Label them. "[blocker]", "[nit]", "[q]". Now the author can triage in 30 seconds: blockers first, address questions, ignore nits if they want.
The opposite — comments without context — forces the author to guess priority. They either fix everything (slow) or guess wrong and re-review.
The hardest cultural shift
Code review is part of your job, not extra. It's not "after I finish my work." It's interleaved with your work.
The team that gets this is 2x faster than the team that doesn't. Not because they review faster, but because nothing waits.
What to measure
- Median PR turnaround time (open → merge)
- P95 turnaround time — surfaces stuck PRs
- Review response time — how long until first non-author comment
- PR size distribution — track median lines changed; falling = good
GitHub's API has all of this. Github metrics dashboards (or tools like Linear/Swarmia) compute it.
The takeaway
Slow code review is invisible because nobody schedules "wait for review" on their calendar. But it's where most of your team's wall-clock time goes. Set a 4-hour SLA, split big PRs, rotate reviewers, and watch your team's velocity double — without anyone working harder.
Work with me
I consult with engineering teams on AI adoption, cloud architecture, and engineering effectiveness. If this post surfaced a challenge you're facing, let's talk.
Get in touch →Related posts
Explore more on these topics: