Fail-fast Agile and well-planned DevOps are the two sides of a single coin, though they are not essentially the same. Merging them is possible through understanding their core values and practices.
Agile has adopted fail-fast approach long ago. This means the developers tend to experiment freely when trying to reach the desired outcomes, but they are also quick to abandon the development lines that do not bring the desired results. Doing so allows minimizing the risks both for the customers and for the software development teams while ensuring more predictable software delivery process. This also raises the chances for the customers to get what they expect, under the estimated budget and within the timeframes.
On the other hand, such experiments in DevOps are not recommended, as the costs of operating the infrastructure can amount to tens of thousands of USD daily, and playing around with the production environment for the sake of experimenting cannot be justified. This is why before provisioning the infrastructure the DevOps team must define the project’s structure, scope, main requirements, possible scalability issues and the ways to ensure resilience and immutability.
All of this will be essential to both deliver the software on time and ensure positive customer experience afterward, as unlike traditional Agile developers, DevOps engineers are responsible for the full software lifecycle, from the design to the maintenance and final decommissioning. Thus said, merging these two methodologies is impossible without answering several painful questions:
There are both short and long answers to these questions. The short one is “shift to the left”. The long one is below.
The main thing to keep in mind is that these two approaches cannot be combined in their pure forms, meaning the Agile practices must be updated.
Agile as a methodology of software delivery has long ago transformed into something that greatly contradicts the core values and principles explained in the Agile manifesto. However, this approach to project management is still much better than Waterfall and other old-school methods. The acceptance of “fail fast, fail often” mindset ensures the iterative approach to software delivery, where rapid customer feedback loops help the developers better direct their efforts and deliver the features the customers really expect.
This same iterative approach is greatly empowered through CI/CD, where the automation of code batch building, testing and pushing to production ensures uninterrupted customer experience, fewer bugs and shorter recovery times, according to the State of DevOps adoption 2017 report.
Merging these two paradigms is no easy deal, yet if applied correctly, your Agile development teams can benefit greatly by becoming much more competent and competitive in the fast-paced business world we live in. We hope this article will be of use to you and in case you want us to explore some other topics — please name them in the comments below, we will cover them in the future articles!
Initially, I’ve posted this story on my company’s blog — https://itsvit.com/blog/agile-vs-devops-merging-fail-fast-agile-with-well-planned-devops/