Lately in the software industry, everywhere you turn you hear about "Agile". Its in the conferences, in the literature. You have Agile Modeling, Agile Software, Agile Requirements, Agile Architecture, and a whole host of acronyms that make your head spin. And then people start combining them (XP and CMMI! Scrum and XP! Scrum and CMMI!).
That’s why I had originally started Agile FAQ. It’s a place to try to pull together all of the information that is out there. Alas, my changing of jobs disrupted the flow, but now that things are settling back, I have a renewed goal to get the site going again. One way to do that is my taking the questions from the site and putting them in the form of blog posts here.
The very first question we kicked the site off with was "What is Agile?" I got the opportunity to have great support from many leaders in the agile community, which has led to some great responses on the site from people like Andy Hunt, Jim Shore, Alistair Cockburn and Ron Jeffries.
If we look at a dictionary response to the word "Agile", we’ll see it isn’t a proper noun. The form "agile" from Encarta says:
- nimble: able to move quickly and with suppleness, skill, and control
- mentally quick: able to think quickly and intelligently
The problem is that this term gets applied to a wide variety of domains, which try to piggy-back off of the agile software movement. Andy Hunt, in his reply, was very clear that the agile manifesto was coined for software development, and other uses would be considered children of that original definition.
Alistair Cockburn had a stronger definition:
There is only one definition for agile software development, which is of course the manifesto itself. That has to remain the touchstone for all other attempted definitions, because it is the one that identified the term as applied to software development and also described what it means. Any other definition is just a personal statement reframing the manifesto into some individual’s worldview.
Jim Shore and Ron Jeffries both took a slightly different path. Jim said:
Agile is defined by the people who use it. There’s no hard and fast definition. Sometimes this is good, because it allows the practice of Agile to continue to evolve and grow. Sometimes it’s bad, because people hijack the term to mean lazy or sloppy software development, or use the Agile brand to sell some less-than-agile approach.
While Ron continued:
I agree with the sentiment of Alistair’s view that "Agile" ought to be defined in terms of the Manifesto. But the definition of a word is in its usage, not in some dry dictionary or manifesto. The word "awesome", for example, used to mean the feeling one would have in the presence of God. Today, as Chet just pointed out to me, "awesome" refers to a bagel that doesn’t suck.
Folks, you just can’t get any clearer than that. Which seems to beg the question – when you want your team to be "agile", are you shooting to be adaptive and people-oriented – things that are hard? Or are you shooting to be the team that doesn’t suck.
As much as I like bagels, I know which I’d choose.