Agile is dead. That, at least, is the refrain that DevOps teams have been hearing for several years now. Yet, if you like the agile development model--and you actually have a specific idea of what agile means--fear not: Reports of the death of agile software development are quite premature.
Here's why the agile development model still matters--as long as you take the time to appreciate what agile really means and put it into practice.
Threats to Agile Software Development
Claims that agile software development is dead have proliferated for at least the past five years or so, predicated on two main arguments:
1. Agile is a meaningless buzzword.
The first argument centers on the idea that agile has lost its meaning because it has been used by many different people to refer to many different things. By extension, some would argue, agile has evolved into a basically meaningless buzz word that is more valuable to marketers than to people who actually create and deploy software.
As one of the developers behind the seminal "Agile Manifesto" puts it, "The word 'agile' has been subverted to the point where it is effectively meaningless, and what passes for an agile community seems to be largely an arena for consultants and vendors to hawk services and products."
To a point, this is a valid criticism. On the other hand, however, you could say the same thing about plenty of other important IT concepts. For example, cloud is a buzz word that can mean lots of different things in different contexts. So can "software-defined." This doesn't mean that these concepts are not useful, however. It just means that there is no universal definition of what they mean.
Moreover, no matter how other people define agile, organizations that actually want to use the concept can go back to the early-2000s roots of the agile movement and find a specific, useful definition for it. It's not as if agile never meant anything specific. Originally, it had a clear and useful meaning. And that initial meaning, I'd argue, is still very powerful today.
2. DevOps has killed agile.
Another school of thought argues that the agile development model is dead because it has been superseded by the DevOps movement.
The main idea behind this line of thinking is that agile refers to a set of ideas, like flexibility and scalability, whereas DevOps provides the tools and processes that actually enable those ideas to be put into practice.
Folks who subscribe to this argument don't necessarily think of agile as a failed concept. They view agile more as a precursor to DevOps, and something that helped DevOps into being. But they also think that the arrival of DevOps has transformed agile into an old-school idea.
The problem with this argument is that the reasoning is a bit flawed. If agile helped define the ideas that laid the foundation for DevOps (a term that, by the way, is also subject to a somewhat nebulous set of definitions), then agile is an important part of DevOps.
Why Agile Still Matters
Despite the tendency to write off agile as dead, agile software development remains a vibrant concept that continues to drive innovation in the world of DevOps and beyond.
If you read through the 12 key principles that the "Agile Manifesto" elaborates, you'll notice that they continue to sound very modern, even though they were written well over a decade ago. They mention continuous delivery. They emphasize customer satisfaction. They prioritize "the art of maximizing the amount of work not done," which is long-winded way of saying that efficiency is good. They promote retrospective analysis to achieve continuous improvement.
Agile Is Not Perfect
To be sure, these principles ignore or gloss over some ideas that are central to effective software delivery today. They say nothing about automation, for example.
You might also argue that prioritizing "working software" above all else is not always a good idea. Sometimes it's worth taking a little longer to release software to make sure that it will work over the long term, rather than getting something working and into the hands of users as quickly as possible.
And the agile principles defined in the early 2000s arguably focused on software development and testing more than deployment and maintenance. That makes them somewhat short-sighted.
Yet none of these criticisms of agile development methodologies aligns with the two overarching schools of anti-agile thought described above. I mention them because they are reminders that agile is not perfect, but they certainly don't mean it's dead.
The bottom line: When done properly, agile remains very relevant today.
If you fail to understand the specific meaning of the agile development model, or you write it off as something that no longer matters for organizations doing DevOps, then you're not doing agile properly. The problem in that case lies with the way agile is put into practice, not with agile itself.
But if you take agile in its original meaning as a guide for defining an approach to software development and deployment, it can still benefit your organization. It's far from dead.
How is agile being used in your organization? Does it stick to the letter, or at least the spirit, of the "Agile Manifesto?" Let us know in the comments section below.