TL;DR Agile is a way of operating wherein the decisions we make are guided primarily by 4 trade-off statements expressed as value statements in the Agile Manifesto. Following this guidance is believed to lead to improved ways of developing software.
Recently I have again started to question what is meant by ‘Agile’ (I make no distinction between ‘Agile’ and ‘agile’). I have asked this question at a few conferences, Lean Coffees etc. This is my current interpretation of ‘Agile’, as informed by the Manifesto for Agile Software Development, specifically the first statement and the four value statements:
We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on
the right, we value the items on the left more.
These statements provide guidelines for trade-off decisions we should be making. If you’re in a situation where you can choose between working on either
working software or
comprehensive documentation, rather choose
working software, especially if you don’t yet have
If you’re in a situation where you have a plan but have discovered that the plan no longer makes sense, you can choose between either
following the plan (even though you now know it no longer makes sense to do so), or
responding to the change, the guidance from the Manifesto is to rather
respond to the change. (I personally prefer
adapt to learning over
responding to change but that’s another story.)
The same thinking applies to the other two value statements: should you have to choose either
contract negotiation or
customer collaboration, rather choose the latter. If you need to choose between
processes and tools and
individuals and interactions, again rather choose the latter.
The original authors and signatories of the Manifesto believed, based on their collective experience, that if you follow these decision making guidelines, you will become
better at developing software. I certainly don’t disagree with them.