Since I’ll be talking about Agile a lot on this blog, a good place to start would be to define exactly what Agile is, and what it isn’t.
I won’t go into too much detail on Agile’s roots, there are many other fine places you can get that level of detail. The basics are that the software boom in the mid ’90s resulted in a reevaluation of typical development practices in favor of more lightweight methods, culminating in a meeting in February 2001 and the publishing of the Manifesto for Agile Software Development (also known as The Agile Manifesto), widely considered to be the foundation of modern Agile philosophy.
What’s important to know about this is that Agile itself isn’t a methodology or process, it’s a set of principles that describe recommended behaviors and values. You can’t “do” Agile, you can only “be” Agile. There are several development methodologies that fall under the Agile umbrella, such as Scrum, Kanban, XP, Lean, etc, and those are what you “do”.
Again, you “be” Agile, you “do” Scrum (or XP, Kanban, etc).
Of those principles and values, the value of flexibility is probably associated the strongest. Being adaptive and open to rapid and flexible response to change is a critical and core component of being Agile. However, this has resulted in a curious development regarding the definition of Agile with some, who consider flexibility to be THE paramount value of being Agile.
In a discussion someone presented this thought to me in allusion to the value of flexibility in Agile, which made me pause and consider its implication:
I find the continual reference to the Agile Manifesto as the true definition of Agile to be incredibly non-Agile.
The implication there is that the concept of one actual, standard definition of Agile itself is inherently non-flexible and thus violates one of the core principles of “being” Agile.
While interesting to consider and evaluate, this line of thinking is ultimately catastrophic to the goals of the Agile movement. A philosophy is only mature when it has a standard, agreed upon definition that can be pointed to to prevent co-option by people with their own agendas that aren’t for the betterment of the community. Someone’s definition of what Agile is to them may be fine and useful to them, but it means that they’re giving themselves leave to ignore anything that doesn’t fit it and still call it “Agile”.
If anyone can claim what they’re doing is “Agile” by their own definition, the term loses all meaning. There has to be something at the core that’s accepted and undisputed or the door opens to distortions that corrupt the term and violate even the most widely accepted principles of “being” Agile, under the banner of just being “flexible”.
This doesn’t mean that Agile itself shouldn’t change or evolve, of course. It has been argued that the original concept of Agile is outdated and needs to be updated to adapt to a rapidly changing environment, and many have endeavored to develop that next phase. But for Agile to be considered a mature development philosophy, changes must be done in a structured, authoritative way so as to protect the concept of “being” Agile from the myriad of misconceptions and distortions that already surround the term.
In short, flexibility is an important and critical aspect of being Agile, perhaps even the most important aspect. However, what we can’t be flexible with is our definition of Agile itself. We must insist on a standard definition of what it means to “be” Agile if we want the term to carry any weight or meaning.
Share your thoughts on flexibility and the definition of Agile in the comments below.