Pages

Wednesday, December 19, 2012

What is Agile?

So most companies now say they "use Agile". It's the new black! Every one does it. Or at least says they do... So, what is Agile?

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.

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.

The list goes on and on. None of these are mentioned in the manifesto or the principles, but they all fit well while doing Agile.

Requirements for being Agile

While 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

Conclusion

Please 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.

About Me

I've worked with software development since 1994. Desktop applications, web applications and real time embedded software have all been part of my profession through the years. Since 2007 I've had an enormous interest in methodology, trying out plenty of agile practices and read tons of books and blogs on the subject.