In February 2001 seventeen people met to talk and try to find common ground. Representatives from Extreme Programming, SCRUM, DSDM, Adaptive Software Development, Crystal, Feature-Driven Development, Pragmatic Programming, and others sympathetic to the need for an alternative to documentation driven, heavyweight software development processes convened. What emerged was the Agile Manifesto.
So, Agile is what the Agile Manifesto values. It is also the twelve principles behind the manifesto. Nothing more.
Mistaken for being AgileThere are a lot of practices that Agile practitioners use, which are really good practices indeed, but doing a few of them does not make you Agile.
- Daily stand up/Daily scrum is not Agile, it's a meeting to coordinate todays work.
- Scrum board/Kanban board is not Agile, it's a board to track what's being done.
- Continuous integration is not Agile, it is a server that builds your project.
- Pair programming is not Agile, it is two people working closely.
- Automated tests are not Agile, but they are really helpful!
- TDD is not Agile, it is a practice for good design.
Requirements for being AgileWhile the practices above are good, and should be used in many cases, they don't make you Agile. Being Agile is following the manifesto values and the principles behind it. If you don't, here's some news: You're not Agile!
Here's a little list of interpretations I did from the manifesto and the principles.
You're not agile if...
- Delivery of working software isn't done on at least a monthly basis
- The progress isn't shown to the stakeholders on at least a weekly basis
- You're not willing to change the requirements along the way
- Business people and Developers don't talk to each other
- Face-to-face conversations among team members are rare
- The team or the stakeholders work a lot of overtime
- You don't start simple, doing only the most important things first
- Reflection on how you work, and adjustments accordingly, don't happen regularly
ConclusionPlease stop saying you do Agile Development based on having a daily standup meeting and a board with your stories divided into tasks. That is not what being Agile is. It would fit well in a Waterfall project too. Adding sprints and retrospectives takes you a little closer, but you're still not there. To be Agile you need to be able to check the list above on how you're not Agile... and if you're on the list, you're not Agile.
That being said, I don't want you to stop doing the practices you're doing. They are good practices, which will help you deliver better software. Just stop saying you're doing Agile unless you really do.