The State of DevOps report 2021 has just been released and it shows the important link between modern software engineering practices and business agility. People who have read the report before or are familiar with the book ‘Accelerate’ by Nicole Forsgren and Jez Humble, will know that research shows that the Elite performing teams in technical transformation share some common characteristics:
- High deployment frequency
- Low lead time for changes
- Short time to restore services
- Low change failure rate
A lot of the discussion on how to achieve these goals within teams focused on the technical practices that are required to deliver working code into production environments quickly and safely. Practices such as Test Driven Development (TDD), monitoring and measurement of code and loosely coupled architectures allow us to isolate problems or areas that need work, and to design, code and release without impact on other parts of the system.
Why does this matter?
People in non-technical roles may wonder why this matters. Why should they care how often developers are deploying code?
The answer lies in the fundamental benefit of agile ways of working: the feedback loop.
Agile approaches allow us to set up experiments and learn from them quickly so we can adapt to the needs of our customers in a rapidly changing landscape. This is where business agility and modern software engineering overlap.
Every element of agile is there to enable a feedback loop. Short, iterative cycles of work that allow us to deliver incremental value. Ceremonies such as stand-ups and retrospectives are essential methods for getting feedback on work and the value that is being delivered. The shortest feedback loop possible is a conversation. This is why developer pairing or discussions around stories are so valuable and powerful.
Technical agility drives business agility
To test a new feature with users it has to have certain characteristics before it can be put live: By defining a small, end-to-end slice of value, we can then build this using TDD to ensure it works as expected. As a developer I want to know as soon as possible whether the code I have written works, I don’t want to have to wait hours or sometimes days to get the results of a test. We can then deploy it through a set of environments where tests are run to ensure no impact on the wider system.
At the end of this process, we have a working feature that customers can use and we can measure and observe how they use it. Gathering feedback that should then go back into the product definition process. To enable software engineering teams to work this way we need to be better at how we define the work.
Technical agility drives agile ways of working
A focus on delivering small, testable features into the hands of customers requires changes in technical practices as mentioned above, but for those practices to be successful, we have to change how we build the right thing. We need to identify high-value work that can be delivered in small batches and focus our time on getting that working in the hands of customers.
After a long time of working with teams building digital products, it seems to me that implementing agile ways of working or methodologies like Scrum without putting in place modern software engineering practices like XP, Devops etc. can result in “agile theatre”. Agile theatre is where companies put in place frameworks, run quarterly planning, daily stand-ups and chart velocity but still see no improvement in their ability to deliver quality software. At the end of this process, the problem is seen to be the brand of agile they have implemented so they go through the same process again but with a different methodology.
It seems to me that you can have agile ways of working without modern software engineering but this will not be effective. However, you can’t have modern software engineering without the necessary agile ways of working as the two are reliant on each other.
The State of DevOps report 2021 shows the value of pushing for improvements in deployment frequency and other metrics. To achieve that we need to introduce modern software engineering practices which drive the adoption of agile ways of working.
Part of the Monstarlab Explains Series
- Dustin Smith and DORA Research, State of DevOps Report, 2021. View here.
- Nicole Forsgren and Jez Humble, Accelerate, 2018. View here.
- Dave Farley, This Agile Method Guarantees Results, 2022. View here.
- Gary Gruver, Engineering The Digital Transformation, 2019. View here.
- Dave Farley, Modern Software Engineering, 2022. View here.
Other related content by Paul Edwards:
Monstarlab is a digital experience partner focused on accelerating growth for ambitious clients. We achieve this through our human-centred design and engineering expertise, our open partnership approach and our extensive network of global talent.