In the past handful of years, DevOps tools have secured a foothold in the technology industry as a sure-fire method to continuously improve software development for better digital outcomes. Throughout history, we have seen many approaches to developing and delivering software systems. Various methodologies have had their time in the limelight, with proponents advocating their unique strengths and making claims for a new way forward, which don’t usually deliver on their promise. Now, we’re coming to the same head with DevOps.
A new wave of companies defined by their innovative use of software to develop new products and services has emerged, and their ability rapidly to develop and deploy quality software with DevOps is a critical factor in their success. Companies such as Spotify, Netflix, Google, Amazon and Facebook in the US, and Alibaba and Tencent in China have figured out how to develop software quickly, at scale and deploy systems rapidly to hundreds of millions of users – and are disrupting whole industries in the process. It’s a huge competitive advantage for them.
So what lessons can we learn from them, and can they be applied to any organisation?
There have been many articles, books and YouTube videos produced about the Agile and DevOps approaches used by these successful companies, but there has so far been a lack of a data-driven, scientific approach to analysing how these development and deployment practices contribute to business success.
A recently published book – Accelerate: The Science of Lean Software and DevOps by Forsgren, Humble and Kim – aims to bring a more rigorous analysis to the specific practices which benefit organisations that implement them, and to provide actionable insights into how to improve software delivery by any organisation, whatever their starting point.
The research behind this book is based on the work by DORA sponsored by Puppet (recently replaced by Google) over the last six years in their large annual review of DevOps, and comes to some interesting and potentially surprising conclusions, such as:
- There is no apparent trade-off between frequency of deployment and quality, in fact they are positively correlated (debunking the Bi-Modal model)
- The best practices identified in the research apply across a wide range of organisations and generate benefits whatever the starting point
- The analysis provides a linkage between the best practices and tangible business benefits such as profitability, productivity and market share
In truth, the book focuses primarily on the DevOps part of the delivery lifecycle and not on the Agile part of software development, but that doesn’t diminish the significance of the results.
The book is not just based on the authors’ opinions, but on a large scale scientific data analysis across thousands of companies. And this is perhaps the most valuable point for practitioners. All too often we make conclusions based on opinions and don’t have the right software intelligence at our disposal to make informed judgements. Good data is hard to come by, sometimes even resisted by members of the organization. But, as we get more reliant on digital capabilities, it’s increasingly hard to live without.
There are some minor points on which I would take issue with the authors of Accelerate – for example the data used is based on self-reported surveys of companies where some subjectivity is inevitable, and although the survey data comes from a large sample, it’s not a wholly unbiased and representative sample of organisations. Also, the authors didn’t mention the Function Point as a performance/throughput metric. One might feel Function Points are not relevant in Agile, but that’s arguable, and they at least deserve a mention.
But despite these points, this book provides good inspiration to both technical and non-technical leaders who want to learn how to drive their software organisations to be successful. Choosing a good, simple set of performance metrics is a key step – whether it’s measuring cycle time, as in Accelerate, or throughput or productivity. The authors also advocate continuously trying to improve, rather than being satisfied to reach a particular level of maturity. Once these relevant performance metrics are established, then testing the impact of new processes, tools, and ways of working becomes much more meaningful.
Overall then, I strongly recommend this book to both technical and non-technical readers who are interested to learn best practices from leading software driven businesses and how to implement them successfully.