Leave your email and be the first to get it.
Is measuring software delivery performance really necessary? Some experts argue that too much focus on metrics can actually hinder productivity and innovation. But others believe that measuring performance is essential for success in today's fast-paced tech environment. In this article, we'll explore both sides of the debate and help you decide which approach is right for your business.
Measuring software delivery performance can be controversial for several reasons:
Some critics argue that measuring software delivery performance with metrics can create a culture where teams focus too much on hitting specific targets, rather than on delivering high-quality products that meet customer needs. This, on the other hand, can lead to a decrease in innovation and creativity, as teams become more focused on meeting metrics than on exploring new ideas.
Identifying the right metrics can be challenging, as different metrics may be more or less relevant depending on the context of the project or organization. Without careful consideration, you may start tracking the wrong ones. This, on the other hand, can create a false sense of progress and lead to ineffective decision-making.
Even when the right metrics are being tracked, it's essential to interpret the data correctly. Misinterpretation of data can lead to inaccurate conclusions and, as a consequence, to ineffective decision-making. When the wrong metrics are being tracked, it becomes especially problematic. Big problem arises also when the metrics are being used to compare teams or individuals against each other.
Measuring software delivery performance also can create pressure on teams. They may strive to meet specific targets at all cost, which often leads to burnout, stress, and turnover. It’s especially problematic when metrics are being used to evaluate individual performance. That can lead to unhealthy competition among team members.
Despite the concerns mentioned above, many experts believe that measuring software delivery performance is critical for improving processes, identifying areas for improvement, and achieving business goals.
Why? Because software delivery is a complex process that involves multiple teams, tools, and technologies. Therefore it is critical to have a set of metrics that can provide visibility into the different stages of the software delivery lifecycle.
Metric help teams to:
The answer is:
To measure software delivery performance in the right way, it is important to use metrics that support the overall goals of the organization. Software delivery needs to be aligned with the business objectives. One way to achieve this is to use metrics that factor in the quality of the software being delivered.
Another way is to look at the speed at which software is being delivered. This could include looking at the average time it takes to complete a software release, as well as the frequency of software releases. By doing so, you can identify areas where the software delivery process could be streamlined, leading to faster, more efficient delivery.
You can also try applying the "Four Key Results Areas" (FKRAs) approach, which was developed by Gene Kim, Jez Humble, and Nicole Forsgren in their book "Accelerate". According to this approach, there are four key areas that organizations should focus on when measuring software delivery performance:
1. Deployment Frequency: how often code changes are deployed to production.
2. Lead Time for Changes: the time it takes to go from code committed to code successfully running in production.
3. Mean Time to Restore (MTTR): the time it takes to restore a service after a failure.
4. Change Failure Rate: the percentage of changes that result in a failure in production.
By focusing on these key areas, you can ensure that you’re measuring the most important aspects of the software delivery process. This approach also aligns with the principles of BizDevOps, as it emphasizes the importance of collaboration between business, development, and operations teams.
Another way to choose the right metrics is to involve stakeholders from different teams in the process. This can include representatives from development, operations, business, and quality assurance teams. By involving different stakeholders, you can ensure that chosen metrics are relevant to all teams and that everyone is aligned on the goals of the software delivery process.
Another important consideration when choosing metrics is to ensure that they are actionable. In other words, the metrics should provide insights that can be used to make improvements to the software delivery process. For example, if the lead time for changes is high, this could indicate a bottleneck in the process that needs to be addressed. By focusing on actionable metrics, you can make data-driven decisions and continuously improve your software delivery process.
It is also important to periodically review and update the chosen metrics to ensure that they are still relevant and effective. As the software delivery process evolves and changes, you may need to add new metrics or revise existing ones.
Measuring software delivery performance allows you to identify bottlenecks and inefficiencies in your software delivery process. By tracking metrics such as lead time for changes and change failure rate, you can identify stages of the software delivery lifecycle that take longer than expected and make changes to streamline the process. This leads to improved efficiency, which in turn increases productivity and effectiveness.
Measuring software delivery performance also helps you to track your team’s progress towards achieving business goals and make data-driven decisions. By monitoring metrics like deployment frequency and mean time to repair (MTTR), you can ensure that the software development process is aligned with the goals of the business. This, on the other hand, allows you to make informed decisions about resource allocation and process improvement.
Measuring software delivery performance ensures that products are delivered on time, within budget, and with high quality. By tracking metrics like lead time for changes and change failure rate, you check if software products are delivered quickly and efficiently, while also being thoroughly tested to minimize the risk of failure.
Since teams gain insights into how well they are delivering software products and can identify areas for further development, measuring software delivery performance also leads to continuous improvement. By tracking metrics over time, teams can see whether their improvement efforts are having a positive impact. This also promotes a commitment to delivering high-quality software products.
Tracking software delivery performance aligns with lean culture in several ways:
Lean culture emphasizes the importance of continuous improvement. By tracking metrics such as lead time for changes, deployment frequency, change failure rate, MTTR, MTTD, and MTBF, teams can identify areas for improvement and track progress towards achieving their business goals.
Lean software development also entails delivering value for the customer. By measuring software delivery performance, your team can make sure that software products are delivered on time, within budget, and with high quality. This leads to higher quality software products that meet the needs of the business and the customer.
Lean culture also emphasizes the importance of teamwork and collaboration. By tracking metrics like lead time for changes and change failure rate, you can identify stages of the software delivery lifecycle that take longer than expected. By working together to improve the process, your team can create a culture of collaboration and continuous improvement that aligns with lean culture principles.
To measure software delivery performance, you need to define specific metrics that align with their business goals and objectives.
Some of the most common metrics used to measure software delivery performance include:
To measure these metrics, you need to collect data from the different stages of the software delivery lifecycle, such as planning, coding, building, testing, and deployment. This data can be collected using various tools and technologies, such as agile project management tools, source code repositories, continuous integration and delivery (CI/CD) pipelines, and monitoring and alerting systems.
Now, let’s take a look at each metric.
MTTR is the average time it takes to repair a system after a failure. This metric is important for measuring the reliability and availability of a system.
For example, let's say your company has a web application that experiences a failure. The MTTR is the time it takes for your team to identify the failure and fix the issue. A low MTTR means your team is able to quickly detect and resolve issues, ensuring that your application is available to users.
Your goal: low MTTR.
A low MTTR indicates a system that is reliable and easy to recover from failures.
MTTD is the average time it takes to detect a failure in a system. This metric is important for measuring the effectiveness of monitoring and alerting systems.
For example, if you have a monitoring system set up to detect issues with your web application, the MTTD is the time it takes for your team to receive an alert after a failure occurs. A low MTTD means your team can quickly identify and address issues, minimizing the impact on users.
Your goal: low MTTD.
A low MTTD indicates that failures are detected quickly, allowing teams to respond and recover more quickly.
MTBF is the average time between failures in a system. This metric is important for measuring the reliability and availability of a system.
For example, if your web application has a high MTBF, it means that your users will experience fewer issues and downtime due to system failures. This can lead to increased user satisfaction and a better overall experience with your product.
Your goal: high MTBF
A high MTBF indicates a system that is reliable and has fewer failures.
Lead time for changes is the time it takes to go from code committed to code successfully running in production. This metric is important for measuring the speed and agility of your software delivery process.
For example, if your team is able to quickly implement new features or fix bugs and get them into production, your organization can respond more quickly to changes in the market or user needs. This can lead to a competitive advantage for your business.
Your goal: low lead time for changes.
A low lead time for changes indicates that teams are able to deliver changes quickly, responding to the needs of the business.
Deployment frequency is the number of times code is deployed to production in a given period of time. This metric is important for measuring the speed and agility of a software delivery process.
For example, if your team is able to deploy code to production frequently, it can lead to a faster feedback loop and quicker response to issues or changes. This can lead to a better product and increased user satisfaction.
Your goal: high deployment frequency.
A high deployment frequency indicates that teams are able to deliver changes quickly, responding to the needs of the business.
Change failure rate is the percentage of changes that result in a failure in production. This metric is important for measuring the quality and reliability of a software delivery process.
For example, if your team is able to deliver changes that have been thoroughly tested and have a low failure rate in production, it can lead to a more reliable and stable product. This can lead to increased user confidence and trust in your product.
Your goal: low change failure rate.
A low change failure rate indicates that teams are delivering changes that are of high quality and have been thoroughly tested.
By defining and measuring specific metrics such as lead time for changes, deployment frequency, change failure rate, MTTR, MTBF, and MTTD, teams can identify areas for improvement and track progress towards achieving their business goals.
However, software delivery needs to be measured in the right way. While choosing your metrics, remember to choose metrics that are linked to business objectives. For starters, you can try the FRKA approach. Don’t forget to review the metrics on a regular basis.
Now, dive into the world of software delivery performance metrics. Explore the further chapters of this handbook to learn more about each metric and make informed decisions about which ones to follow.
List of chapters
Get smarter in engineering and leadership in less than 60 seconds.
Join 300+ founders and engineering leaders, and get a weekly newsletter that takes our CEO 5-6 hours to prepare.