skip to content

Your team's pull requests wait two days for a first review. How do you diagnose and fix that as a lead?

level: principalimportance: should knowfreq 38%

answer

  1. Treat it as queueing, not diligence
  2. Measure to first response, not to merge
  3. The biggest lever is change size
  4. A broadcast request belongs to nobody
  5. Targets corrupt the number you measure

basics

~20 s

Measure first: pull time-to-first-review and review size from the pull request data rather than trusting impressions. Then attack the causes — oversized changes, unclear reviewer routing, no agreed turnaround, and manual work that automation should be doing.

solid answer

~50 s

Treat it as a queueing problem, not a motivation problem. **Measure** time from ready-for-review to first review, review size, and how the wait distributes across authors and reviewers — the pull request and review timestamps are available through GitHub's API, and the distribution usually shows a small number of reviewers absorbing everything. Then fix the causes you find. **Size**: 2,000-line changes wait because reviewing them is a half-day commitment; incremental delivery shortens the queue more than any process change. **Routing**: a request sent to a twenty-person team is nobody's job — route by ownership, and let team assignment name individuals. **Norms**: agree an explicit turnaround and make review scheduled work, not something done after everything else. **Automation**: if humans are catching formatting and lint, move that to checks so reviewers spend attention on design and correctness. And make the metric a diagnostic, never a target — measured reviewers approve faster, which is the opposite of the goal.

go deeper

for a junior

Your part is keeping your own changes small and giving reviewers what they need — a clear description, a self-review pass, and a prompt response when feedback arrives.

for a middle

Be able to connect cause and effect: large diffs and vague reviewer requests produce long waits, and describe what you personally changed about your pull requests to shorten them.

for a senior

Show that you diagnose with data — first-response time, size distribution, load per reviewer — and that you fix the mechanism, whether that is ownership routing, automated checks, or splitting the work.

for a principal

Own the whole system, including the measurement risk: state plainly why review latency must stay a diagnostic rather than a target, and which counter-signals you watch so speed does not quietly buy itself with quality.

## Frame it correctly Review latency is a queueing problem: arrival rate, service time, and the number of servers. Every effective intervention changes one of those three, and most failed interventions are exhortations that change none of them. Framing it this way also keeps the conversation off individual diligence, which is almost never the binding constraint. ## Measure before acting Impressions are unreliable — the loudest complaint usually comes from the author of the largest pull requests. Pull the data instead. Pull request and review events carry timestamps, so you can compute **time from ready-for-review to first review** (not to merge, which mixes in the author's own response time), **size in changed lines**, and the **distribution of review load across people**. Look at the shape, not the mean. Common findings: the median is fine and the tail is terrible, which points at specific repositories or specific change types; or two senior engineers are named on eighty per cent of reviews, which is a routing problem wearing a latency costume; or the wait is concentrated in one time zone pairing, which is a staffing question. Exclude draft time and count from the moment the pull request became reviewable, otherwise you measure how long people leave work in progress. ## Reduce service time: size The strongest lever is almost always **pull request size**. A 100-line change gets reviewed in a gap between meetings; a 1,500-line change needs a booked afternoon, which is why it waits until Thursday. Halving typical size does more for latency than any reminder ever will. Getting there is engineering work, not policy: decomposition habits, feature flags so partial work can land safely, and separating mechanical changes from behavioural ones so the big diffs are the boring ones. This is where a lead's leverage actually is. ## Reduce queueing: routing A review request broadcast to a large team belongs to nobody. Two mechanisms fix that. **Ownership-based routing** ensures the people who must look are requested automatically, and **team code review assignment** turns a team request into named individuals using round robin or load balance, with absent members excluded. The pull request then shows a human who is on the hook rather than a team handle everyone assumes someone else will answer. Watch the ownership rules for a specific failure: if one shared directory routes every change to one small team, you have created a bottleneck by configuration, and no amount of goodwill will clear it. ## Change the norm Most teams have never actually agreed **when** review happens. Making it explicit — a stated turnaround for first response, and treating review as scheduled work rather than the thing done after everything else — converts it from interrupt-driven to planned. A first response that says "I can look properly this afternoon" is worth far more than silence, because it lets the author decide whether to wait or find someone else. Time zones deserve deliberate handling rather than hope: if the reviewer pool is nine hours away, a request sent at 5 p.m. costs a day by arithmetic, and the fix is coverage in the author's window, not urgency. ## Automate the cheap findings If reviewers are spending their pass on formatting, import order and lint rules, they are doing work a check should do — and worse, the expensive findings get less attention because the cheap ones filled the review. Move all of it into automated checks so human review is spent on design, correctness, security and the interfaces that will be costly to change. ## Beware the metric Once time-to-first-review becomes a target, it will improve and quality will not. Approving without reading is the fastest possible review. Keep the number as a diagnostic you look at with the team, pair it with signals that move the other way when review degrades — escaped defects, rollback rate, revert frequency — and never put it on an individual's performance page. ## What good looks like Small changes arriving steadily, routed to named people who have agreed when they respond, with mechanical feedback automated away so the human pass is about the parts that matter. Latency falls out of that as a consequence. Chasing the number directly, by reminders and dashboards, produces faster approvals and worse code — which is the failure mode a principal-level interview is checking that you can see coming.

  • Why measure time to first review rather than time to merge?
    Time to merge blends the reviewer's latency with the author's response time, CI duration and merge-policy waits, so it moves for reasons unrelated to review capacity. Time from ready-for-review to first review isolates the queue you can actually manage, and it is also the interval authors experience as being blocked. Measure from ready, not from open, so draft time is excluded.
  • What goes wrong when review turnaround becomes a performance target?
    The cheapest way to hit it is to approve without reading, so the number improves while review stops functioning. If you track it at all, keep it a team-level diagnostic rather than an individual measure, and pair it with counter-signals — escaped defects, reverts, rollback rate — that degrade when reviews become rubber stamps. Goodhart's law applies with unusual speed here.
  • How would you handle review latency across widely separated time zones?
    Stop treating it as urgency and treat it as coverage. Ensure each author's working window overlaps with at least one qualified reviewer, either by staffing reviewers in that region or by shifting ownership so a local team can approve. Smaller changes matter more here, because every round trip costs a day, and an explicit "I will look at 09:00 my time" response lets the author plan instead of waiting blind.

saying these in an interview costs you the question

  • Fixes it by asking people to try harder
  • Measures time to merge and calls it review latency
  • Sets an individual review-speed target
  • Ignores pull request size as a cause
  • Broadcasts requests to a large team and hopes

context