What is Agile? I’ve seen a lot of discussions where people have attempted to answer the question of “What is Agile?”. I’m sure that you could find at least 100 definitions of what “Agile” is on the Internet.
Feeling the Elephant
It’s like the old fable of “The Blind Men Feeling the Elephant”:
“It was six men of Indostan
To learning much inclined,
Who went to see the Elephant
(Though all of them were blind),
That each by observation
Might satisfy his mind”
Each man came away with a different opinion depending on which part of the elephant he touched:
“Each in his own opinion concludes that the elephant is like a wall, snake, spear, tree, fan or rope, depending upon where they had touched”
The way people define Agile is somewhat similar, Depending on which part you touch, you may come away with a different impression of what Agile is:
- Many people will define Agile in terms of how it is done – for example, many people will say that it is defined by the Agile Manifesto. Here are a couple of examples of that:
“Agile is a set of methods and frameworks that embody the principles and values of the
“Agile is a term used to describe approaches to software development emphasizing incremental delivery, team collaboration, continual planning, and continual learning. The term “Agile” was coined in 2001 in the Agile Manifesto.”
- Some people will say that it is just a mindset or way of thinking. Here’s an example of that.
“Being ‘Agile Is a mindset. It’s about finding the right thing to build, faster (and not just building things faster)”
- Some people will define it by comparing it to “Waterfall” to tell you what it is not. Here’s an example of that:
“Agile is a time boxed, iterative approach to software delivery that builds software incrementally from the start of the project, instead of trying to deliver it all at once near the end.”
None of those definitions are incorrect, but it’s like “feeling the elephant” – they don’t really get to the real essence of what the “elephant” is, in my opinion.
What Is Agile?
Personally, I like the definition that is published by the Agile Alliance:
The ability to create and respond to change in order to succeed in an uncertain and turbulent environment.
I think that is a better definition because it gets to what I consider the real essence of what Agile is.
“Agile is best suited for situations that have some level of uncertainty where creativity and innovation are important to maximize the business value of the solution as opposed to other situations with lower levels of uncertainty where planning and control to achieve predictability are more important.” (My own definition)
We should acknowledge that Agile is not a solution to every problem you might have and one way to define it is in terms of what problems it is useful for. When you step back and consider that Agile is not a solution to every problem you might have, I think the first thing you would want to know is “what problems is it useful for?” You don’t need to get too far into the mechanics of how to do it until you’ve determined that it is a useful solution to the problem you’re trying to solve.
There is an interesting observation you might draw from this – people get very immersed in the mechanics of how to do Agile and that’s how they define it. Isn’t it more important to know what problems it’s useful for solving before you get into the details of how to use it?