Longing for improvement
Are you familiar with the gut feeling that the software development practices around you could be better? Sometimes the desired improvements are small and obvious. They are not very hard to implement and have a quick return of investment.
For example, adding a vulnerability scanner to a CI pipeline prevents using dependencies with known CVEs. A code formatter which applies the rules for every source file save operation - brings determinism and keeps team members from nagging about style. Even a low disk space alarm configured long time ago could save you from major embarrassment and business losses.
Other improvements are not that easy. Core dependencies being dramatically outdated since new versions break compatibility? Painful deployment with downtime lasting for days? Features being developed by single developers for months and living in a branch for all the that time? Backlog growing indefinitely. Bugs, bugs and even more bugs pouring in every day? I'd be glad to tell that the above is a horror story, and it never happens in reality. But you and I both know the sad truth. Worse - when everyone in the development department agrees that something should be done, but the time is never right. Thousands of software businesses have to deal with stories like this every day.
There is no silver bullet to fix all the issues in your organization. But we are not armless in the matter. What if you don't need to guess what should or could be improved? What if there is a solid scientific study on practices of high performing technology organizations?
Accelerate by Nicole Forsgren, Jez Humble and Gene Kim is a book concluding a four-year research into capabilities and practices of software development practices. There were over 23000 survey responses from over 2000 unique and diverse organizations from around the world collected during the research. It uncovered 24 key capabilities that drive improvement in software delivery performance. Some of these capabilities are: continuous delivery and trunk-based development, loosely coupled architecture and customer feedback, work-in-progress limits and transformational leadership.
"Accelerate" doesn't have all the answers and is not a guidebook. But it clearly describes the differences between low and high -performing organizations and teams. It explains in detail how capabilities are related and how each capability affects performance and how leadership is essential for transformation. Being said, not every capability is easy to measure. You can quickly estimate how long it takes to deliver a committed piece of code to the customer. But how do you measure culture?
The second part of the book may help you find the answer. While the first part is about the study results, it's the second part which explains the methods used in the research and dives deep into the science behind conducted surveys.
The third part is a life example story of ING Netherlands. It tells how leadership, management, and team practices work together bringing a traditional banking business into the digital age.
There is no verdict. This book is truth based on facts. Although not a long one, my career has been among low, average and great performing teams. I mentally applied everything said in the book to my experience, and boy it is accurate! There is really no excuse for an organization to ignore this study or delay applying the practices ASAP. If you want to stay in the game, you have to Accelerate.