DORA metrics are a set of key performance indicators used by software teams to measure how effectively they deliver and maintain software. The five core metrics include Deployment Frequency, Lead Time for Changes, Change Failure Rate, Failed Deployment Recovery Time, and Deployment Rework Rate. These metrics help teams balance speed and reliability, with a focus on improving delivery processes and reducing risks.
Key Takeaways:
- Lead Time measures the time from code commit to production deployment, highlighting process efficiency.
- Deployment Frequency tracks how often updates are released, reflecting team rhythm and delivery speed.
- High-performing teams deploy frequently (daily or weekly) with shorter lead times, while less efficient teams face delays and bottlenecks.
Challenges:
- Bottlenecks like slow code reviews and fragmented tools can distort metrics.
- Inconsistent definitions of deployments or incomplete data from tools like Azure DevOps can lead to unreliable insights.
Solutions:
- Automate CI/CD pipelines to eliminate delays.
- Use trunk-based development for smaller, incremental updates.
- Implement feature flags for controlled and frequent deployments.
Tracking and improving these metrics can help teams deliver software faster, reduce risks, and respond to customer needs more effectively.
::: @figure
{DORA Metrics Performance Tiers: Elite vs High vs Low Performing Teams}
:::
Measuring Software Delivery With DORA Metrics
Need help optimizing your cloud costs?
Get expert advice on how to reduce your cloud expenses without sacrificing performance.
Common Problems When Tracking Lead Time and Deployment Frequency
Even with clear definitions in place, accurately measuring lead time and deployment frequency can be tricky. The challenges typically fall into two groups: process bottlenecks that skew the data and technical barriers that make data collection unreliable.
Bottlenecks in Development Processes
Bottlenecks in the delivery pipeline can seriously affect the accuracy of these metrics. For instance, lengthy code reviews - particularly for pull requests exceeding 200–400 lines - can drag on for days or even weeks, adding unnecessary delays [6]. Similarly, manual quality assurance gates can hold up progress as code waits for human intervention.
Another issue is fragmented CI/CD pipelines. When data is spread across tools like Jira, GitHub, Jenkins, and PagerDuty, it becomes difficult to match up timestamps and maintain a clear picture of the workflow [2][6]. To make matters worse, many engineering teams have a flow efficiency of less than 15%. This means that 85% of the time between starting work and deploying it is spent waiting rather than actively developing [6].
The disparity between teams is striking. High-performing teams can achieve lead times of under an hour, while less efficient teams may take over six months [3][4]. These delays not only slow down delivery but also make tracking less reliable.
Incomplete or Inconsistent Data
Ambiguities in definitions can further muddy the waters. As the Coderbuds team puts it:
The biggest challenge in DORA implementation isn't technical - it's definitional. Teams waste months arguing about what counts as a deployment or when lead time starts[7].
Disagreements over whether hotfixes or configuration changes qualify as deployments can render the data inconsistent. Moreover, platform-specific limitations add to the complexity. For example, Azure DevOps Analytics Views can report on work items but lack native support for pipeline runs or automated tests. This forces teams to rely on complicated, error-prone OData queries [5].
For organisations dealing with mergers or outsourcing, the problem becomes even more pronounced. Different teams might use entirely separate tools - like GitLab versus Jenkins - creating silos that make unified tracking nearly impossible [5].
Srikanth Annavarapu, DGM at Freyr Digital, captures the issue well:
DevSecOps pipelines pull data from disparate tools (CI/CD systems, Scanners, incident trackers), leading to mismatched timelines and gaps[8].
These challenges underline the importance of accurate measurement before embarking on any improvement strategies. Without reliable data, efforts to optimise processes can quickly go off track.
How to Measure Lead Time for Changes and Deployment Frequency
To get accurate and actionable insights, you need a reliable way to measure these metrics. Automating data collection through APIs and instrumentation ensures precise timestamps and reduces manual errors.
Calculating Lead Time for Changes
Lead time for changes tracks the time from a code commit to its successful deployment in production [12, 19]. To calculate it, subtract the commit timestamp from the deployment timestamp. The accuracy of this metric hinges on capturing the right starting point. For example, you can use the Git command git show -s --format=%cI to retrieve the ISO 8601 timestamp of a commit [4], which ensures consistency and clarity.
Several tools can simplify this process. GitLab Ultimate, for instance, calculates lead time from when a merge request is merged to when it runs in production. It uses the formula GREATEST(0, deployment_finished_at - merge_request_merged_at) to avoid negative values [11]. If you're using GitHub Actions, you can automate data collection by triggering workflows on deployment_status events and logging timestamps to CSV files or external databases [10]. Alternatively, the GitHub and GitLab REST APIs can fetch commit timestamps (via the author and committer fields) and workflow run timestamps, allowing automatic calculation of the time difference [21, 22].
For a more detailed view, break lead time into smaller segments, such as the time to open a pull request, time to merge, and time to deploy. This breakdown can help identify bottlenecks like delays in code reviews, which might otherwise go unnoticed [17, 22].
Counting Deployment Frequency
Deployment frequency is easier to measure. It’s simply the count of successful production deployments within a set time frame [12, 20]. To ensure accuracy, only include deployments with a success
status (e.g., Deployment.statuses = success) when querying your CI/CD system [20, 23]. Including failed or rolled-back deployments could distort the metric and misrepresent your team's performance.
Using OpenTelemetry, you can instrument deployment pipelines to emit telemetry aligned with DORA metrics. For example, track deployment frequency with a dora.deployments.total counter and lead time durations with a dora.lead_time.duration histogram [4]. This setup integrates DORA metrics with application traces in a single observability stack, providing a unified view of your team's performance.
Elite teams typically deploy multiple times per day, while high-performing teams deploy between once per day and once per week [13]. Data shows that about 19% of teams achieve Elite
status for deployment frequency, and 18% for lead time for changes [22, 23].
In many cases, it's better to measure nothing than to base decisions on numbers that each team interprets differently[9].
To make these metrics meaningful, standardise your measurement approach across teams. This consistency is crucial for fair comparisons and driving continuous improvement. With these practices, you'll lay the groundwork for refining and optimising your deployment pipelines.
How to Improve Lead Time and Deployment Frequency
Once you’ve got reliable measurement practices in place, the next step is refining your workflows to achieve top-tier performance. By focusing on automating your CI/CD pipelines, adopting trunk-based development, and using feature flags, you can significantly speed up delivery. Each of these strategies targets specific bottlenecks in the development process, directly improving metrics like lead time and deployment frequency. These methods not only address common challenges but also boost your DORA metrics, reflecting improved performance.
Automating CI/CD Pipelines
Automation removes manual steps from the deployment process, ensuring consistency and speed. For low-risk, routine changes, automated test results can act as approval gates, leaving manual reviews for high-risk updates only [14]. Temporary environments, or ephemeral environments, can be created for each pull request. These allow stakeholders to review features and run end-to-end tests in production-like settings, cutting down on delays caused by shared staging environments [15][12]. This immediate validation reduces queuing and environment conflicts, paving the way for smoother workflows and supporting advanced strategies like trunk-based development.
Using Trunk-Based Development
Trunk-based development simplifies integration by encouraging small, incremental updates directly into the main branch - ideally at least once a day. This approach keeps the codebase up to date, reduces the complexity of merges, and enables faster builds and tests, avoiding lengthy integration delays. It also limits the number of active branches to three or fewer, further preventing bottlenecks. Quick, synchronous code reviews ensure that merge requests don’t pile up. Since this method often requires a shift in mindset, it’s helpful to start with a small group of advocates who can guide others through the transition [16].
Deploying with Feature Flags
Feature flags separate the process of deploying code from releasing new functionality, allowing for frequent yet controlled updates. Through techniques like ‘dark launching,’ code can be deployed in an inactive state, enabling live testing without affecting end users. New features can then be gradually rolled out to a small portion of users - say, 5% - to monitor for any issues before a full release [7][19]. High-performing teams using feature flags often deploy updates on demand or multiple times daily, while lower-performing teams might deploy only once every six months [17][18][19]. To get the most out of this approach, consider using tools like LaunchDarkly or Split, which integrate with platforms like Jira and Bitbucket to track the impact of changes [17].
Connecting DORA Metrics to DevOps Transformation
Business Benefits of Better DORA Metrics
Accurate measurement of DORA metrics can lead to tangible business improvements. By reducing lead times and increasing deployment frequency, organisations can speed up the release of new features and bug fixes. This agility allows businesses to respond quickly to customer feedback while minimising the impact of bugs. For example, if the goal is to enhance customer satisfaction or improve product quality, focusing on metrics like Mean Time to Restore (MTTR) and Change Failure Rate (CFR) can help minimise downtime and maintain service reliability [20].
Shorter deployment cycles also reduce release costs and limit errors caused by manual processes. Elite teams that deploy multiple times per day gain the ability to test ideas in production, adapt swiftly to changes, and continuously refine their approach. This approach not only supports operational improvements but also turns software delivery into a key business advantage, enabling organisations to stay ahead of their competitors.
How Hokstad Consulting Helps with Improvement

Achieving these benefits requires more than just tracking metrics - it demands effective implementation. Hokstad Consulting specialises in driving DevOps transformation by setting up automated CI/CD pipelines, advanced monitoring systems, and tailored solutions that can reduce cloud costs by 30–50%. They also offer real-time dashboards to pinpoint bottlenecks and speed up deployment cycles.
Their services go beyond automation. Hokstad Consulting conducts ongoing security audits, performance tuning, and provides on-demand DevOps support to sustain high performance. They also manage seamless cloud migrations with zero downtime, ensuring that infrastructure updates don’t interrupt deployment schedules. For businesses focused on cost reduction, their innovative No Savings, No Fee
model ties their fees to the savings they deliver, creating a win-win scenario that aligns their success with their clients'.
Conclusion
Key Takeaways
Keeping an eye on Lead Time for Changes and Deployment Frequency provides a clear picture of how efficiently your team delivers software. These metrics often highlight delays caused by issues like slow code reviews or manual testing. By automating CI/CD pipelines, adopting trunk-based development, and leveraging feature flags, teams can release updates more frequently and with reduced risk.
Top-performing teams manage rapid deployments, while others fall significantly behind. This disparity highlights the importance of standardised definitions, automated data tracking, and regular reviews - ideally every two weeks - to monitor trends rather than isolated occurrences [1][21]. Shorter lead times also mean quicker feedback loops, enabling teams to adapt swiftly to market needs and user feedback.
Improving these metrics can shift software delivery from being a cost-heavy process to a real business asset. Faster deployment cycles lower release costs, reduce errors from manual tasks, and create opportunities to test and refine ideas in production. This flexibility not only improves customer satisfaction and product quality but also strengthens your competitive edge. These insights offer a clear direction for refining processes.
Next Steps
Start by evaluating your current deployment frequency and lead times to pinpoint bottlenecks. Focus on automating repetitive tasks, adopting shared definitions, and setting up a regular review schedule to ensure continuous improvement.
Hokstad Consulting can help accelerate your DevOps transformation with automated CI/CD pipelines, real-time dashboards, and customised solutions that can cut cloud costs by 30–50%. Their No Savings, No Fee
model ties their success directly to the results they deliver, making it a practical choice for businesses aiming for tangible improvements. By taking these steps, you can turn software delivery into a strategic advantage.
FAQs
Where should lead time start and end?
Lead time is the period between the creation or commitment of a work item to a branch and its deployment to production. It serves as a key metric for evaluating how efficiently your development process operates, helping to ensure delivery cycles run smoothly.
What counts as a production deployment?
A production deployment is the process of releasing code into the live environment where it becomes available for end-users. It's often tracked by measuring the time between deployments, which serves as a critical metric for assessing how often and efficiently deployments are carried out.
How can we track DORA metrics across multiple tools?
To monitor DORA metrics across various tools, you’ll need to bring data together from multiple sources. One way to do this is by using APIs from platforms like GitLab or GitHub. These APIs can pull data such as commits and deployments, which you can then display on custom dashboards. Automating the data collection process and using analytics tools to centralise this information makes it easier to track metrics like deployment frequency and lead time. This approach helps teams stay on top of their software delivery performance and identify areas for improvement.