Guide
The Practical Guide to DORA Metrics for Engineering Teams
Learn what the four DORA metrics are, how to measure them, and how to actually improve them. A no-nonsense guide for engineering leaders and developers.
15 April 2026Every engineering team has heard of DORA metrics by now. Most are measuring at least one of them. But surprisingly few are using them effectively. Here's why, and how to do it properly.
What are the four DORA metrics?
DORA (DevOps Research and Assessment) identified four key metrics that predict software delivery performance. They emerged from years of research into what separates high-performing engineering teams from the rest.
1. Deployment frequency
How often your team deploys code to production. This measures your ability to ship small, incremental changes rather than batching work into large, risky releases.
2. Lead time for changes
The time from first commit to production deployment. This captures the full pipeline: coding, review, CI, and deployment. It's closely related to PR cycle time, but extends all the way to production.
3. Change failure rate
The percentage of deployments that cause a failure in production (an incident, rollback, or hotfix). This measures the quality and safety of your delivery process.
4. Mean time to recovery (MTTR)
How quickly your team recovers when something breaks in production. This measures your ability to detect, diagnose, and fix failures.
Why these four metrics matter together
The power of DORA metrics is that they balance speed and stability. You can't game them by optimising one at the expense of others:
- Shipping faster without quality means your change failure rate spikes
- Reducing failures by deploying less often means your deployment frequency drops
- Long lead times suggest bottlenecks in review, CI, or deployment processes
- Slow recovery times suggest gaps in monitoring, alerting, or incident response
Teams that score well on all four are genuinely high-performing, not just optimising one dimension while ignoring the others.
DORA benchmarks
The annual State of DevOps report classifies teams into four performance tiers:
| Metric | Elite | High | Medium | Low |
|---|---|---|---|---|
| Deployment frequency | On-demand (multiple per day) | Weekly to monthly | Monthly to bimonthly | Fewer than once per 6 months |
| Lead time for changes | Less than one day | One day to one week | One to six months | More than six months |
| Change failure rate | 0 to 15% | 16 to 30% | 16 to 30% | 16 to 30% |
| MTTR | Less than one hour | Less than one day | One day to one week | More than six months |
Most teams reading this fall somewhere between Medium and High. That's fine. The point isn't to be Elite overnight. It's to understand where you are and move deliberately in the right direction.
How to measure each metric
Deployment frequency
The easiest to measure. Count the number of production deployments per week (or per day). If you use CI/CD, this data is already in your pipeline logs.
Common pitfalls:
- Don't count failed deployments that were rolled back
- Don't count deployments to staging or preview environments
- Do count deployments from all teams and services, not just the "main" product
Lead time for changes
Measure the time from first commit on a branch to when that code reaches production. This requires connecting your Git data with your deployment pipeline.
Common pitfalls:
- Don't measure from issue creation (that captures planning time, not engineering time)
- Do include time waiting for review, which is often the biggest component
- Watch out for long-lived branches that skew the median
Change failure rate
Track the percentage of deployments that result in an incident, rollback, or hotfix within a defined window (typically 24 to 72 hours).
Common pitfalls:
- Define "failure" consistently. Is a minor UI bug a failure? Probably not. Is a P1 incident? Definitely
- Don't rely on self-reporting. Link your incident tracker to your deployment log
- Track this as a rolling percentage, not per-incident
Mean time to recovery
Measure the elapsed time from when an incident is detected to when service is fully restored.
Common pitfalls:
- Start the clock at detection, not at cause. If your monitoring took 2 hours to alert, that's part of your MTTR
- "Fully restored" means customers are no longer impacted, not when the fix PR is merged
- Track this per-incident and report the median, not the mean (outliers will skew the mean)
Common mistakes teams make with DORA
Treating metrics as targets
DORA metrics are diagnostic tools, not OKRs. "Achieve Elite deployment frequency" is a bad goal. "Deploy every merged PR to production automatically" is a good process improvement that results in higher deployment frequency.
Measuring without acting
Dashboards full of DORA charts look impressive, but they're worthless if nobody changes their behaviour as a result. The gap between measurement and action is where most teams stall.
This is exactly the problem Poggle solves. Instead of leaving engineers to interpret dashboard charts, Poggle translates engineering signals into personal goals and uses gamification to reinforce the behaviours that improve DORA metrics naturally.
Comparing teams unfairly
A platform infrastructure team has fundamentally different deployment patterns than a product feature team. Comparing their DORA metrics head-to-head is misleading. Compare teams against their own historical trends, not against each other.
Ignoring context
A low deployment frequency might mean your team is shipping large, risky batches. Or it might mean your team owns a stable infrastructure component that changes infrequently. Context matters.
A practical improvement roadmap
If you're just starting with DORA metrics, here's the order of operations:
-
Start with deployment frequency and lead time. These are the easiest to measure and the most actionable. If your lead time is over a week, the fix is almost always smaller PRs and faster reviews.
-
Fix the bottleneck in lead time. For most teams, it's time waiting for code review. Enforce daily review windows. Set a team norm for review turnaround time. Track it weekly.
-
Add change failure rate once you're deploying frequently. More deployments means more data points. Track which changes cause failures and look for patterns (large PRs, specific services, missing tests).
-
Measure MTTR when you have an incident process. You need defined incident detection, response, and resolution workflows before MTTR is meaningful.
-
Set goals around behaviours. "Review every PR within 4 hours" will improve lead time. "Keep PRs under 400 lines" will improve change failure rate. Behaviour goals are more actionable than metric targets.
Start measuring today
You don't need an expensive tool to start tracking DORA metrics. Your CI/CD pipeline logs, Git history, and incident tracker already contain the data. The hard part isn't measurement. It's turning measurements into behaviour change.
Want to skip the dashboard-building and go straight to improvement? Try Poggle free for 30 days and get automatic DORA tracking, personalised engineer goals, and AI coaching that drives real results.
Related reading
Comparison
Poggle vs Swarmia: A Better Alternative for Developer-Led Teams
Compare Poggle and Swarmia side by side. Discover why teams that want engineers to own their productivity choose Poggle over Swarmia's manager-first dashboards.
Read more →Guide
How to Reduce PR Cycle Time Without Sacrificing Code Quality
Practical strategies for cutting pull request cycle time. Learn what high-performing teams do differently to ship faster without cutting corners.
Read more →