Cycle Time for Engineering Teams: Median, P85 and the Long Tail
Cycle time — how long work takes from start to done — is the most practical flow metric a team has. It is also one of the most frequently miscalculated, because the data needed to compute it is not in a standard Jira export.
ABC-204 · one issue’s journey
The longest single segment is code review (4 days) — more than development itself.
Cycle time is the sum of waiting and working in each stage — the longest segment is where to look first.
What cycle time is
Cycle time is the elapsed time from when work starts (first moves into an in-progress status) until it is done. Lead time is measured from when the item was created (or requested). Lead time includes backlog waiting; cycle time does not.
| Measure | From | To | Answers |
|---|---|---|---|
| Lead time | Created | Done | How long does a request wait for delivery? |
| Cycle time | Work started | Done | How long does the team take once it starts? |
| Time in stage | Entered stage | Left stage | Where does the time go? |
Why it matters
Short, predictable cycle times make sprint commitments reliable: if most items finish within six days, anything started in the second half of a two-week sprint is at risk and everyone can see it. Long or highly variable cycle times explain carryover better than any velocity chart.
How to calculate it
Cycle time = time finished − time development started = 10 days (lead time adds the 6 days waiting in the backlog: 16 days)
Cycle time needs the timestamp when work started. That comes from the status change history (Jira's changelog), not from the issue fields in a CSV export. Jira's optional "Status Category Changed" field records only the latest category change, so for a completed issue it is the done date, not the start date.
Report the distribution, not the average:
- Median (P50) — the typical item.
- P75 / P85 — a planning figure: "most items finish within N days".
- P90 — the long tail that causes carryover.
- Outliers — items beyond Q3 + 1.5×IQR; each deserves a look.
P85 cycle time = the value that 85% of completed items finished withinTime per stage
Summing the time each issue spent in development, review, QA and release shows where the time goes. This also requires status history. If you only have a CSV, do not estimate it — use lead time and state clearly that it includes backlog wait.
How to interpret it
- Not started
- Development
- Code review
- QA / testing
- Done
- Released
- Open
- To Do
- Backlog
- In Development
- In Progress
- PR Review
- Code Review
- Ready for QA
- In Test
- UAT
- Closed
- Resolved
- Production
- Deployed
Jira statuses (top) differ from team to team. Each maps to one delivery stage, so “work waiting for review” means the same thing everywhere.
Every team names its Jira statuses differently; mapping them to one delivery model is what makes stages comparable at all.
- A wide gap between median and P90 means a few items take far longer than the rest — usually large, blocked or unclear items.
- Most of the time in wait stages (review, ready-for-QA, ready-for-release) means process, not engineering effort, dominates.
- Cycle time rising while throughput is flat often means more work is being started at once (see aging WIP).
- Compare the P85 with the sprint length. If P85 is 12 days in a 10-working-day sprint, much of the plan cannot finish unless it starts on day one.
Cycle time, WIP and throughput are linked
Little's Law describes the relationship for a stable system: average cycle time equals average work in progress divided by average throughput. If a team finishes about 15 items per week and has 45 items in progress, items will take about three weeks on average — regardless of how hard anyone works. The practical consequence is that the fastest way to shorten cycle time is usually to start fewer things at once, not to work faster.
Apply this to your team’s delivery
Create a free account, set up your organization and project, then import a Jira CSV. Start with the available evidence; add sprint dates and history for stronger analysis.
Common mistakes
- Using averages. A few very long items drag the mean far from the typical experience.
- Calling lead time "cycle time". Created → resolved includes weeks of backlog waiting.
- Inferring stage times from current status. Impossible without history.
- Excluding the outliers. They are the most informative items.
- Using cycle time to compare individuals. It measures the system.
What engineering managers can do
- Limit work in progress; fewer items at once means each finishes faster.
- Attack the biggest wait stage first — it is usually cheaper than speeding up active work.
- Split items whose expected cycle time exceeds half the sprint.
- Use P85 when answering "when will it be done?" instead of a single-point estimate.
- Export the changelog so you can see stage-level time. Many teams discover most of their cycle time is waiting.
Example
A team's median cycle time is 6 days, P85 is 12 and P90 is 15. Stage medians show development at 3.2 days, review at 1.9, QA at 0.2 and ready-for-release at 4.0. The longest single contributor is waiting for a release — invisible in a CSV export, and fixable without writing more code faster.
The team moves from two scheduled releases a week to releasing whenever QA passes. Two sprints later the release stage median is under a day, overall median cycle time falls to about 3.5 days, and — because more work now finishes inside the sprint — carryover drops too. Nothing about how the team writes code changed.
How this tool helps
See it on your own data in the Cycle time report.
The cycle time view shows median, P75, P90 and outliers, and per-stage timing when you import a change-history file. With a CSV only, it shows lead time and explains exactly what is missing — it never invents stage durations.
Frequently asked questions
- What is the difference between cycle time and lead time?
- Lead time starts when an item is created; cycle time starts when work begins. Lead time includes backlog waiting, so it is always at least as long as cycle time.
- Can I calculate cycle time from a Jira CSV export?
- Not accurately. A standard export has created and resolved dates (lead time) but not when work started. Cycle time and time per stage need the status change history.
- Why use percentiles instead of the average?
- Cycle time distributions have long tails. Percentiles describe what most items experience and how bad the tail is; the average describes neither.
Related guides
Aging WIP
How to measure the age of in-progress work, choose useful age buckets, compare against historical cycle time, and act on old work without turning it into blame.
Engineering bottlenecks
How to find delivery bottlenecks in an engineering workflow using queue size and time-in-stage, why arbitrary red/amber/green thresholds mislead, and what to do once you find the constraint.
Software delivery metrics
A leader's guide to software delivery metrics: flow metrics, sprint predictability and DORA, what each can and cannot tell you, and how to avoid turning metrics into targets.
Capacity planning
Plan sprint commitments against historical throughput ranges instead of optimistic capacity math. Include existing WIP and typical scope growth, and communicate risk honestly.