Why do we use Agile?

The question in the title of this post is an interesting one. Many people use Agile for the right reasons (because they think that it can help them with their work in many ways), but there are some people that do it for the wrong reasons:

  1. Because they like some part of one Agile methodology;
  2. Because they read somewhere that it would improve productivity;
  3. Because they like the word “flexible”, as in “flexible releases”;

Agile (the movement) is often confused with agile methodologies. They are not the same.

Agile, as defined by the Agile Manifesto is a set of values and principles. These values can be followed in any methodology, even waterfall. Yes!, waterfall is not the antonym of Agile. Waterfall is just one of many methodologies used in software development (normally by non-agile organizations/teams).

Discipline is also not an antonym of Agile like Barry Boehm and Richard Turner proposed in their inaptly titled book “Balancing Agility with Discipline” (read a review by Ron Jeffries here).

Agile requires many of the same ingredients that made many non-agile projects successful (the 16.2% the Standish group refers to in this (PDF) instance of their famous Chaos report).

So what’s the difference? You may ask. The difference is that Agile also proclaims a set of values that are not part of any methodology, rather they are values that should be applied independently of the methodology used in any software project.

What I’m trying to establish is that, although agilists tend to scorn at the waterfall methodology they – in my opinion – do so not because of the methodology itself, but because of a larger reason. The Waterfall methodology has been used by organizations that espouse the true antonym of Agile (as described by the Values and Practices in the Agile Manifesto): Command-and-Control.

Now would be time for another definition: “The Command-and-Control Movement”, but I’ll leave that for another post.