We all must have came across the statement that "Agile is a software development methodology." or "Agile Methodology" but it is Not. I am not kidding follow along and possibly by the end of this article you may also get your ahha moment.
Everyone’s golden period in life is their Schooling. Specifically, the 11th and 12th grade and I am no exception to that. So I am going to use a the “basis” of Mathematical Induction to proof the definition of “Agile”. Don’t worry, I won’t go into full blown mathematical induction proof and bore everyone around here. But for people who are not familiar with what Mathematical Induction is then here is a very layman definition for it:
It is a mathematical proof technique and is used to mathematically prove a statement. Long story short, Mathematical induction proves that we can climb as high as we like on a ladder, by proving that we can climb onto the bottom rung (the basis) and that from each rung we can climb onto the next one (the step).
Considering our “climbing the ladder” analogy, we should be able to first climb the bottom rung only then we will be able to climb higher. We can say that we must first establish that the base case holds true only then anything else will be possible.
Let’s assume that the definition of “Agile” is a software development methodology.
What is the actual dictionary meaning of “Agile”? (I usually tell my younger brother and sister that whenever you hear Buzz word in Computer Science, the first thing you should do is lookup the dictionary for its meaning)
- Marked by ready ability to move with quick easy grace or able to move quickly and easily. Ex: an agile dancer
- Having a quick resourceful and adaptable character. Ex: an agile mind
The key words here are move quickly and easily and adaptable or flexible so to speak. Now we can derive our own meaning of “Agile” ability to move quickly and easily and also being adaptable or flexible at the same time.
Let’s focus on what do we mean by methodology:
A methodology is a body of methods, procedures and rules for a particular discipline. Set of steps are defined or dictated to be adhered to. – Not so flexible, true?
If we look “Agility” with our Software Development Hat on, we will realize that “Agility” is the ability to continuously adapt and make improvements to the way we work.
Therefore, if “Agile” specified any methodology then, well it will be “Less Agile”.
We can clearly see our initial assumption falling apart. If our initial assumption turns out to be false then it means we can’t mathematically prove any statement. If you can not climb on the first rung then you cannot climb the ladder.
Coming back to our starting question What is “Agile”? (if it is not a software development methodology).
The actual definition of “Agile” is found in the “Agile Manifesto”. The manifesto makes it clear that “Agile” is not
- Methodology
- Specific way of developing software
- Framework or Process
Agile is a set of Values and Principles.
Agile is really a collection of beliefs that teams can use in making decisions about how to do the work of developing the software.
If we truly understand what “Agile” is, then we will learn that it is truly flexible. “Agile” does not make decisions of us but it gives us a foundation that teams can use to make decision that result in better software development.
I urge you to quickly skim through the Agile Manifesto and learn what values does it promise.
There are 12 principles behind the Agile Manifesto and they are also a good reading material. Trust me it will hardly take more than 5 mins.
Both the values and principles of manifesto are very general and are less about telling us what to do, than they are about giving us the ability to make good decision in a particular situation. Agile values and principles explicitly avoid prescribing any methods and procedures.
Therefore, Agile is not a methodology but guidance on how to choose to methods and procedures that will work best for one’s team. Now if we consider the fact that if “Agile” specified methodology then it would have resulted in less agility. Less able to adapt to the specific circumstances of one’s team. So instead of giving us what should be done, “Agile” gave us “Values & Principles” which our teams can use to decide what we should do.
Then next obvious question which comes to our mind is that if “Agile” is not a methodology then what are daily stand-ups, product demo, retrospective etc?
While “Agile” is not a methodology, there are a number of methodologies which teams can use to follow agile principles and values.
SCRUM: specifies a number of specific ways for teams to work. This includes having daily stand-ups, fixed length sprints, product demos, retrospectives etc.
Many teams find SCRUM as a very good way to follow “Agile” values and principles. It provides powerful methodology which assists in following “Agile”. But it is also important to know that just following these methodologies doesn’t makes a team “Agile”. They have to know that they are following these principles because it helps them align with the “Agile” values and principles. On the contrary lot of people that dismiss Scrum Methodology because it did not work for their team and thus don't like Agile are missing the core values of Agile. Instead they should adjust their process to what works for them. No body stops to discover new process which are aligned with Agile Values and Principles.
Extreme Programming (XP): is another methodology which includes number of practices like Test Driven Development, Pair Programming etc. The extreme programming methodology gives teams methods and processes that can be used to follow “Agile” values and principles. For example, Agile principle says that team should leverage change as a competitive advantage. XP practices give methods for writing software that enables it.
If your team is truly trying to follow “Agile” principles and values, your methodology will evolve over time as your team grows and adapts. After all, that is what it means to be “Agile”.
Top comments (0)