What is the Definition of “Agile Methodology”?
I am in a state of shock. [Update: Latest Wikipedia definition looks reasonable - also have a look at Agile Maturity Model - 3 Different Approaches]
I was looking for a nice definition of Agile Methodology and I was very confident that it would be easy to find. To my utter surprise, I could not locate any statement which even remotely looks like a definition. Here are some examples:
Wikipedia – “Agile software development is a group of software development methodologies that are based on similar principles.”
[Update: (11May10): I have changed the definition in Wikipedia to - "Agile software development refers a group of software development methodologies that are based on principles of iterative development where requirement evolves through collaboration between self-organizing cross-functional team."]
[Update (1Dec11): Latest Wikipedia definition is "Agile software development is a group of software development methodologies based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams." Google best guess shows this answer directly!]
SearchSoftwareQuality.com – “In software application development, agile software development (ASD) is a methodology for the creative process that anticipates the need for flexibility and applies a level of pragmatism into the delivery of the finished product.”
TheFreeDictionary – “(They are) Methodologies for designing software that have proven to be more effective in dealing with business realities such as changing requirements during development. It promotes industry best practices that emphasize teamwork, customer involvement and the frequent creation of small, working pieces of the total system.”
AgileMethodology.org – “Agile methodology is an approach to project management, typically used in software development.”
KnowledgeRush.com – “In software engineering, agile processes are low-overhead processes that accept that software is difficult to control. They minimize risk by ensuring that software engineers focus on smaller units of work.”
Only one which made some sense is by Scott Ambler:
Disciplined Agile Software Development: Definition – “(It is) an iterative and incremental (evolutionary) approach to software development which is performed in a highly collaborative manner by self-organizing teams within an effective governance framework with “just enough” ceremony that produces high quality software in a cost effective and timely manner which meets the changing needs of its stakeholders.”
I still do not like it.
- Is iterative, incremental & evolutionary the same? Or, has these three words been put together to be on the safe side? [Update: Here is a nice post by Alistair Cockburn explaining the difference between iterative and incremental]
- Why highly collaborative manner?
- Is self-organizing teams a must?
- Any methodology requires an effective governance framework.
- What does “just enough” ceremony convey?
- Which software development methodology does not claim that it produces high quality software in a cost effective and timely manner which meets the changing needs of its stakeholders?
Have you found anything better?
Comments
11 Responses to “What is the Definition of “Agile Methodology”?”Trackbacks
Check out what others are saying...-
[...] is no clear definition of what Agile Methodology means. So you need to thrash out any difference in understanding between you and the vendor. You may find [...]
-
[...] I started working on this post, I was desperately looking for a decent definition of agile but could not find one. So, I modified the definition in Wikipedia to something [...]
-
[...] Is there any accepted definition for agile methodology which can help us determine if specific methodology can be classified as agile? I have looked and have not found any. [...]
-
[...] taken many forms and beyond the Agile Manifesto there is no commonly accepted definition of agile (What is the Definition of “Agile Methodology”?). There are so many different methodologies which are classified under agile – these [...]
For defining Agile we should focus on the goal of Agile rather than on the misleading, far too specific way suggested by the Agile Manifesto: Please read
The New (2011) Definitions of Agile and
Be agile – forget the Manifesto.
Amblers definition full of marketing jargon… I would posit that there’s not one word that isn’t weighed carefully there, definitely not marketing jargon.
Any definition of agile, should emphasis more on the individuals,team interactions and collobaration.
(taking the cue from the Manifesto, out of 12 principles – 8 of them are about individuals,team and collobaration.)
Even in the definition of “Scott Ambler” by saying that “iterative and incremental by ..” looks like the process takes precedence over the team of individuals, the team may choose not to be iterative.
The Definition of agile itself shoule be adaptive and agile, so that the process can be changed by the individuals in the team – in that sense we should not be able to define it.
We should only have a guide line.
Kaushal:
I think you have missed the point I was trying to make. What I was trying to point out was that though we are talking and using Agile approach to software development, we have not figured out a concise way of defining what agile is. The best definition seems to be “Methodologies that adhere to the spirit of Agile Manifesto”
What I did not like about Scott Ambler’s definition is that it is full of marketing jargon.
If you need to know more, understand or practise just the definition won’t help.
I don’t understand, what do you mean “I don’t like it”. You can’t write a 1-2 line statement to describe & encompass the entire agile gamut. Its a methodology, a paradigm shift based on similiar prinicples, not a IEEE standard. So definitely everyone won’t give you the same textual description.
You must distinguish between definition & description. The definition by AgileMethodology.org is a perfect 1 line definition, of course not detailed for anyone to know and/or understand agile.
As a person whose seen agile work for over 5 years, I wanted to help answer some of these from my point of view:
Iterative and incremental are not the same. That was clearly explained in my agile training and by several agile coaches since then. Evolutionary might be the same as incremental.
Why the word highly? Because many argue their teams collaborate (and they are wrong). We use the term highly to allow them to think this is true, but their current team’s state of “collaboration” is not good enough.
Self-organizing is a big part of the Toyota concept. Put the big red button to stop the assembly line next to the worker who will see the problem first. Don’t make him go through a manager first, delay the button push, and therefore put people at risk.
I agree that any methodology prescribes a governance framework, but the key word here is effective. I think this is a jab at waterfall’s failure in the software industry, but I see it as a divider and would not include it in my definition.
“just enough”… Alistair Cockburn is very good at talking about just enough process and no more. I’m not a fan of the word ceremony since it implies doing something for the sake of doing it.
On the last bullet- very few methodologies desire a support for the “changing” needs of their stakeholders. Also, there is the proven side of this. I do agree with you that this statement is here as a common sense statement and not a differentiator.