So Agile is dead, so it’s time to eulogize.
I know “Agile is Dead” is not a terribly new idea, I know many others have made this claim including:
But I wanted to give a perspective on it as well as a path forward.
Agile had a long and productive life. Agile had a great run in it’s youth by taking on some obviously bad practices such as “Waterfall” software development. In retrospect, the collection of Agile methods had some very strong tendencies to de-risk software delivery by surfacing shippable software frequently in the form of “Sprints”.
Agile’s death was an untimely one, brought about by years of neglect and abuse. The word Agile has come to be somewhat meaningless, which is why it’s time to move on from it. So many development teams for lack of a better word claim to be “Agile” and in some ways it’s often used as a way to excuse lack of visibility, lack of planning and by individuals who haven’t read the Agile Manifesto or don’t have a particularly deep experience shipping software at scale. So when a word loses all meaning, it’s time to move on.
Dave Thomas was the one who found the body and reported it to the police. One of the horrible things to contemplate when looking at the dead body of Agile was the emergence of the “Grab Bag” approach to take 2-3 principles of Agile and just move ahead with those without actually considering the appropriateness of those principles for the team and for what was being developed.
Now that Agile is Dead, we got to see how many people come to the funereal of Agile, turns out Agile meant so many different things to so many different people. But not to speak ill of the dead, but Agile didn’t have very much sponsorship in the executive suite. Agile was a collection of essentially rebellious methodologies, and what Agile rebelled against was worthy for its time, and Agile did it’s job to topple the tyranny of Waterfall software development. But Waterfall died many years ago, and so the rebellious core of Agile didn’t produce the expected freedom by itself.
One of the tropes that has emerged in the aftermath of Agile has been “Long Live Agility”–that certainly is a valid perspective. Just because the word “Agile” has become meaningless does not mean development teams should stop doing some of the most important things in the Agile manifesto including
- Ship often
- Talk to product / business owners
- Pivot when needed
And of course Agile methods are compatible with modern lean product development methodologies and startup product development systems like MVP (Minimum Viable Product).
So to eulogize Agile absolutely does not mean to go back to Waterfall, by no means.
So how do we move forward as an industry in the aftermath?
The paradigm of “Continuous Delivery (CD)” seems to be the logical successor to Agile. Continuous Delivery provides an umbrella term that does not specify methodology–and doesn’t require much of a manifesto. Everything you need to know is in the title–you just deliver shippable software in as continuous of a way as possible. This allows a team to pull whichever Agile principles and methods needed in order to achieve that goal. This addresses one of the complaints of Agile, which is that it became a religious movement with gurus–and that these highly paid Agile gurus would come with one-size-fits-all solutions for development teams which were hard to realistically fit to real-world development.
So what’s the material difference then between “Agile” and “Continuous Delivery” (other than the fact that they govern overlapping but not identical semantic terrain)? The thing that has shifted most materially to support the need for a new term is the tooling. Agile tooling was mostly focused on human productivity and were based on shuffling Trello cards and the like. The age of Continuous Delivery is now being ushered in with a recognition that we are now squarely in the age of DevOps.
It’s honestly more than DevOps that has changed. We are now more squarely in the age of Microservices, Mobile first, Polyglot, post-Java JVM languages, GitHub, Docker and the emergence of a world being eaten by Software. In this world, Open Source usage dominates, and the speed of change is intense. If you’re unable to keep pace with the rate of change of the open source components you depend on, you will be frozen and stuck and unable to ship software properly, a state we at Gradle call “Build Hell”.
So really the tooling is completely different and places emphasis on automation. So tools like Jenkins, Gradle, Docker, Chef, Puppet and Salt enable significant automation and enable very large teams to scale software development at very high velocity. The era is also dominated by test automation. Is there Agility? Most certainly, but the emphasis has shifted to such a great degree that the folks who call themselves “Agile Gurus” should evolve or make room for experts from this new era of DevOps and Continuous Delivery. Agile is Dead. Time to move forward.
If you’re interested to learn more about Continuous Delivery, the Gradle Summit is coming up in Palo Alto California on June 23-24 and is holding a raffle for free tickets. You can learn Continuous Delivery best practices from some of the most elite software teams on the planet including Linkedin, Netflix, Uber, Ticketmaster and many more.