In the first part of our series on Accelerate, we described how the top performers in software development perform orders of magnitude better in the 4 key metrics.
The question remains - how do they get it right? Software development is a complex business, so conclusions of “the team is successful because they did X and Y” are problematic. However, as part of the Accelerate research, the authors identified 24 characteristics and capabilities that contribute significantly to improvements in software development velocity 1.
24 Capabilities
These capabilities can be divided into 5 categories (Continuous Delivery, Architecture, Product & Process, Lean Management & Monitoring and Cultural). And while some terms, such as Continuous Delivery, have been on everyone’s lips for years, the majority of the capabilities are still relevant for many companies today.
Some capabilities are often not enforced as best as possible. Top performers do much better here. For example, when talking about continuous integration, many developers only think of a CI pipeline. However, it is much more important that continuous integration happens as often as possible (continuous is in the name, after all!) - preferably several times a day! Only then changes can be made in small steps, and only then seamless automated quality assurance is not just lip service, but absolutely necessary to avoid regressions.
The situation is similar with trunk-based development and continuous delivery, which, among other things, aim at taking features live as soon as possible and thus reducing lead times.
Capabilities in the area of architecture focus on achieving a loosely coupled architecture and autonomous teams. In everyday life, this is often easier said than done. While technical solutions are often approached quickly, a good separation of concerns is just as important for teams as for code. Approaches such as Team Topologies help here.
The area of Product & Process Capabilities covers topics that also have a strong influence on product management: here the focus lies on working in small steps, actively and regularly obtaining customer feedback, and thinking in terms of experiments. Additionally, low performers often neglect to consistently make all work visible that is currently taking place in the teams. As a result, teams fail to address their issues effectively and efficiently. Instead, teams struggle with many lengthy meetings and recurring discussions.
Lean Management & Monitoring practices, on the other hand, have come a long way in recent years: Continuous monitoring of all systems is now no longer an issue for many teams. However, setting a stronger focus on a Work-in-progress limit often has a strong effect on the performance of teams. This capability is also mentioned in Accelerate as an important improvement opportunity.
Last but not least, the cultural aspects in the teams are an important lever for improving software development. However, these only work if they are actually lived at all levels. Can teams collaborate easily? Does a culture of learning exist? In the Accelerate studies, deficiencies in culture were also found to correlate significantly with higher pain in code deployments.
To facilitate improvements in this area, one can turn to the case study presented in the final section of the book, which discusses the measures implemented by ING Bank.