Metric Definition
Finding where reviews stall
Track from
Code review bottleneck analysis
Code review bottleneck analysis is the practice of measuring where pull requests spend their waiting time in the review pipeline so the slowest stage can be identified and fixed. It turns a vague sense that review is slow into a precise location. The goal is to find the one stage where the queue backs up, because fixing anything else barely moves the total.
8 min read
What is code review bottleneck analysis?
Code review bottleneck analysis is the practice of measuring where pull requests spend their waiting time in the review pipeline so the slowest stage can be identified and fixed. The review process is a series of stages: a pull request waits for a first reviewer, sits in active review, waits for the author to address comments, then waits for a re-review. Bottleneck analysis measures the wait at each stage and finds the one that dominates the total.
The value comes from a simple truth about pipelines. The slowest stage sets the pace of the whole system, and time invested anywhere else is largely wasted. If pull requests wait twelve hours for a first reviewer but only twenty minutes in active review, the bottleneck is reviewer availability. Making review faster would change almost nothing. Bottleneck analysis stops a team from optimising the wrong stage.
Definition note
A bottleneck is the stage with both a long wait and a deep queue. Wait time alone can mislead. A stage with a long wait but no queue is a slow step, while a stage with a deep queue is where work is genuinely piling up. The bottleneck is where both are true at once.
How to measure code review bottleneck analysis
There is no single number for bottleneck analysis. Instead you measure the median wait time and the queue depth at each stage, then compare them to find the stage that holds the most work for the longest. The stage that tops both lists is the bottleneck.
The practical method is to break the journey of a pull request into stages and timestamp each transition. From those timestamps you can compute how long the typical pull request waits at each step and how many pull requests sit in each step at once. Watching how the queue depth changes over a week shows whether the bottleneck is steady or moves around as the team batches work.
- 1
Define the pipeline stages
Split review into discrete stages such as awaiting first review, in review, awaiting rework, and awaiting re-review.
- 2
Timestamp every transition
Record when each pull request enters and leaves every stage.
- 3
Compute wait time per stage
Take the median time pull requests spend in each stage across the period.
- 4
Measure queue depth per stage
Count how many pull requests sit in each stage at a typical moment, then rank stages by wait and depth together.
Code review bottleneck analysis in a metric tree
Bottleneck analysis is itself a decomposition, which makes it a natural fit for a metric tree. The total review wait is the sum of the waits at each stage, and a tree lays those stages out so the dominant one stands out at a glance. Each stage then breaks down further into the causes you can act on.
When the tree shows that the first-review stage owns most of the wait, you look at its children: reviewer availability, queue depth, and time zone overlap. The bottleneck is rarely a single person being slow. It is usually a structural cause such as too few reviewers assigned to too many pull requests. The tree surfaces that cause instead of letting the team guess.
Metric tree insight
The dominant branch is the bottleneck, and it is the only branch worth investing in first. The tree makes this concrete: if awaiting first review holds 70 percent of the total wait, speeding up active review cannot help. Fix the bottleneck, then re-measure, because the bottleneck moves once you relieve it.
Code review bottleneck analysis benchmarks
There is no single benchmark for a bottleneck because the metric points at a location rather than a value. What you can benchmark is how concentrated the wait is in one stage and how the team typically performs at each. The table below shows where the bottleneck usually lands and what a healthy versus unhealthy share of total wait looks like for each stage. A healthy pipeline spreads wait fairly evenly. An unhealthy one parks most of it in one place.
| Stage | Healthy share of total wait | Bottleneck warning sign | Usual root cause |
|---|---|---|---|
| Awaiting first review | Under 40 percent | Over 60 percent | Too few available reviewers |
| In active review | 15 to 30 percent | Over 50 percent | Oversized or complex pull requests |
| Awaiting rework | 15 to 30 percent | Over 45 percent | Authors juggling other work |
| Awaiting re-review | Under 25 percent | Over 40 percent | Reviewers lose context between rounds |
How to improve code review bottleneck analysis
Improving bottleneck analysis means two things: getting better at finding the bottleneck, and clearing the one you find. Both depend on clean stage timestamps and a team agreement about who owns each stage. Once the dominant stage is clear, the fix is usually targeted at that stage alone rather than a general push to be faster.
Instrument every stage
You cannot find a bottleneck you do not measure. Timestamp each transition so wait time is visible per stage.
Relieve the first-review queue
When awaiting first review dominates, add reviewers to the rota or rebalance load rather than chasing authors.
Fix one bottleneck at a time
Clear the dominant stage, then re-measure. Relieving the bottleneck moves it somewhere new.
Alert on stalled pull requests
Flag any pull request sitting in a stage past a threshold so it does not silently pile up.
Common mistakes when tracking code review bottleneck analysis
- 1
Optimising a non-bottleneck stage
Speeding up active review when the wait sits in first review changes nothing. Find the dominant stage first.
- 2
Blaming individuals
A bottleneck is usually structural, such as too few reviewers, not one slow person. Look at the stage, not the name.
- 3
Measuring wait without queue depth
A long wait with no queue is a slow step, not a bottleneck. You need both signals to locate the real pile-up.
- 4
Assuming the bottleneck stays put
Once you relieve the dominant stage, the bottleneck moves. Re-measure rather than keep fixing the old one.
Related metrics
Cycle time
Process speed
Operations MetricsMetric Definition
Cycle Time = Process End Time − Process Start Time
Cycle time measures the total elapsed time from the start to the end of a process. It is a fundamental operations metric used in manufacturing, software development, service delivery, and any context where the speed of a process directly affects throughput, cost, and customer satisfaction.
Sprint velocity
Agile planning metric
Operations MetricsMetric Definition
Sprint Velocity = Sum of Story Points Completed in a Sprint
Sprint velocity measures the amount of work a team completes during a sprint, typically expressed in story points, ideal days, or another unit of estimation. It is a planning tool that helps agile teams forecast how much work they can commit to in future sprints based on their historical completion rate. Velocity is one of the most widely used and most frequently misunderstood metrics in agile software development.
Deployment frequency
DORA metric
Operations MetricsMetric Definition
Deployment Frequency = Number of Production Deployments / Time Period
Deployment frequency measures how often an organisation successfully releases code to production. It is one of the four DORA (DevOps Research and Assessment) metrics that predict software delivery performance and organisational outcomes. Teams that deploy more frequently deliver value to users faster, reduce the risk of each individual release, and create tighter feedback loops between development and production.
Why did my metric change? A diagnostic framework
Metric Definition
When review throughput drops, this diagnostic framework helps you trace why the metric moved and pinpoint where reviews are stalling.
Metric trees for engineering teams
Metric Definition
This guide shows engineering teams how to place code review bottlenecks within a wider tree of delivery and flow metrics they own.
Build code review bottleneck analysis as a metric tree with owners on every branch
KPI Tree lays out each review stage as a branch of the total wait, with an accountable owner on every one. When a stage starts holding most of the queue, its owner is notified, so the bottleneck gets cleared where it actually sits rather than guessed at.