Agility is approaching, if not already in buzzword land. A buzzword is a word that is overused or used without regard to its meaning. The result of the abuse of the term is that the word ceases to have meaning.
The value of the term agile is waning, but the ideas behind agility are still relevant. Even if the word agile is losing its meaning, it doesn't hurt to give defining it a shot.
I was challenged to think what it means to be agile this weekend at No Fluff Just Stuff. David Hussman made a statement that agility isn't prescriptive. David said there isn't a simple list of steps that a group can take to transform themselves into an agile group. He even went on to suggest, and I'm paraphrasing here, that if you are an organization that is looking to find a simple list of bullet points that will make you agile, that you probably will be very challenged to be agile.
I agree with Hussman that agility isn't a template that a group can follow to magically become Toyota. A development organization can look at a set of 'agile' practices and be no better off than if one of those practices were to follow a waterfall model. It isn't about what you do or how you do it.
Agility, and this is my definition, is accepting that mistakes will be made. The mistakes are then drivers that present an opportunity to change the way that a team works to accomplish their goals.
To me that's it. Take what you're doing and regularly question and evaluate how it's working and be willing to try alternatives. If something isn't working, make a change and see if it works better.
Iterations are conducive to agility because they embed a mechanism for reevaluation into the process. Having an iteration though doesn't make the process agile if the process isn't adaptable.
The biggest problem I see in the agile space is there are many organizations out there that are clearly not agile, but they want to be. They want to be agile and they look at organizations that they see as agile. They look at the delta between their practices and the agile company's practices and create a roadmap to get to the agility. It's a plan for failure--and that could be a good thing, but it probably won't.
The process of roadmapping agility into a set of static actions is ironically the opposite of being agile. Agility is adaptability, it's recognizing change and it's also recognizing necessary change. A big driver of change is failure, but failure is an element of agility that people shy away from.
As humans, I think we shun failure. We hate it. We hate to lose and we hate to fail. Fear of failure drives many of us to go through extraordinary efforts to perceive ourselves and to be perceived as successful.
Instead of fearing failure I believe that we should embrace it. Failure can be a wonderful learning experience. The key to embracing failure is to make the failures uncostly and educational. Small failures can drive changes that add big value.
Being agile is recognizing, embracing, and accepting small failures and using them as a waypoint for improvement. Celebrate your failures and use them to your advantage and you will be agile.