In Part 1 of the “Delivery as a Product” post, I described how important it is to capture and analyze metrics about your delivery pipeline. This is critical because one of the main goals of this productization of delivery is to relentlessly look for improvements. And you know how the old adage goes – “you can’t improve what you can’t measure”.

In Part 2 I go deeper into those critical metrics and KPIs I often set as core principles and pillars for my software and product teams. A few weeks ago I was listening to The State of DevOps podcast and I was pleasantly surprised that the way they had categorized their industry findings and key metrics closely resembled what our teams were already doing, or at least focusing on. Talk about confirmation bias.

Throughput

In general, it can be visualized as how quickly you can develop and deploy features to Production, focusing on bringing value to the user as quickly as possible. In reality, throughput is an umbrella KPI that consists of several other metrics:

Lead time

Lead time is the measurement of how much time passes between task creation and when the work is completed. A common mistake is to think about it as just a development metric, but you should consider it from the user’s point of view. How long it takes, from the perspective of the user, for a feature to go from “requested” to “complete.”

Deployment frequency

The cadence at which you deploy and deliver value to the user. This could be daily, weekly, bi-weekly, monthly, etc.

Deployment Speed

During deployment, there are several steps that need to happen, and typically there are several environments involved as well. Deployment speed is the metric that captures the time it takes to perform a deployment process from start to finish, going over all the necessary steps (e.g., moving code and content between environments, system integration testing, UAT, production cleanup, database backups, etc.).

Release automation

A quantitative and qualitative assessment of your release management practices. Ideally, you would like to automate everything in the process that is repeatable. The benefits of an automated release management practice include higher release velocity, reduction of errors, consistent releases, a better experience for team members, predictability, etc.

Quality: Testing, Stability, and Reliability

Quality is key in assessing your delivery practices. You can argue that it’s easy to improve and have a great throughput if you are ignoring the testing and validation requirements. Automated testing for functionality, content, and compliance is usually harder to nail down to the point you can sleep at night when unsupervised deployments are happening on a nightly basis.

A couple of considerations related to testing:

  • The closer to Production you find an issue/bug, the costlier it is. Therefore, make all the necessary adjustments and efforts to try to find issues as early as possible.
  • This might mean updating your team’s definition of done (DoD) – including unit testing, acceptance criteria, peer reviews, etc., to your development process. It’s a developer’s responsibility to make sure the work completed conforms to the definition of done. It’s not QA’s responsibility to find issues related to incomplete work, misunderstood scope, etc.

Key quality-related KPIs

Test speed

How much it takes to complete each phase of testing? (e.g., smoke testing by environment, staging validation, system integrating testing, production validation, etc.)

Test coverage

How much of the entire application, product, or website is covered by your test plan, test cases, unit testing, etc?

Test automation

How much of your application is covered by automated testing? How far are you from true unsupervised automated deployments?

Incidents caused by a release

Releases cause changes to a system, inevitably some changes will have an impact on the production environment.

Number of needed rollbacks

Sometimes you can repair any production issues without the need to roll back to a previous stable version, unfortunately, there are other cases this is not possible without an extended downtime period.

Release downtime & mean-time-to-repair

Plan for unexpected downtime and add mitigations to your process.

Operational Excellence

Operational excellence is a mindset that embraces certain principles and tools to create a culture of excellence within an organization. Operational excellence means every team member can see, deliver, and improve the flow of value to a customer. In the world of product and software development, principles to achieve operational excellence can be divided into 3 components: people, processes, and technology/tools.

Fig.1 – Operational Excellence in Software Development

This is a very broad topic. Books have been written about this and the areas to focus on are very unique to your own organization and teams. My suggestion is to do an honest and quick assessment of your general delivery practice and try to identify what areas are the ones causing most of the headaches. You can use the following list of common reasons why projects fail and try to apply it to your own situation and environment.

#Reason Why Projects Fail
1Unclear business requirements
2The solution design and the final application did not match the business requirements
3Substandard planning and execution
4Lack of standardized production processes
5Working in silos
6Lack of agile practices
7Friction caused by undefined roles
8Lack of discipline
9Inadequate testing and quality assurance
10Focusing on technical detail instead of business value
Table 1 – Why Projects Fail

Key operational excellence-related KPIs

For operational excellence, it’s harder to get to a set of quantitative metrics, but a qualitative assessment of the maturity of your practice can take you a long way.

RepeatableRequirements management
Software Project Planning
Software Project Tracking and Oversight
Software Quality Assurance
Software Configuration Management
DefinedOrganization Process Focus
Organization Process Definition
Training Program
Integrated Software Management
Software Product Engineering
Intergroup Coordination
Peer Reviews
ManagedQuantitative Process Management
Software Quality Management
OptimizingDefect Prevention
Technology Change Management
Process Change Management
Table 2 – Key Operational Excellence KPIs and Metrics

Conclusion

It’s important to find a way to capture metrics and data about your delivery practice. Remember, you can’t improve what you can’t measure. Capture, analyze and compare throughout the lifespan of your product/project, and do it frequently and with a sensible cadence.

Resources


Francisco Martinez, MSc.

Los Angeles, CA - VP of Technology with over 18 years of experience in software development, enterprise architecture, product & delivery, and leadership & management. Major in Computer Science & Master of Science in Telecommunications/Electronics.