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.

So, Agile is what the Agile Manifesto values. It is also the twelve principles behind the manifesto. Nothing more.

Mistaken for being Agile

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

6 comments:

Troy the EV Owner said...

I like your general thrust, but some of your not agile rules are a bit arbitrary. Releasing monthly or demos every week are great. But if a team is outside that norm, they could still be improving.

Also, I would challenge the idea of being "Agile" as a destination. Is that really our goal?

Tommy said...

Hi Troy,

On the contrary, I would like to encourage people to being fine with saying that they are using all these great practices without saying they are Agile. And, I would like Agile to mean something again! Agile isn't for everybody, as Johanna Rothman wrote in a recent post on her blog - and that's fine! You don't have to be, you can do great without. But now when everyone claims to do Agile as soon as they adopt a couple of practices the word has lost its meaning.

Tommy said...

Troy,

I failed to adress your first statement in my first reply, so let me do that now.

It seems to me that I wasn't precise enough about those "rules". To clearify:
Delivery of working software doesn't necessarily mean release - just something that could be released.
Progress shown to stakeholders isn't necessarily a demo, it may just be that the business side drops by your computer to see what's new.

Oscar Cosmo said...

Good point Tommy.
I especially agree on the point that it's hard to act agile if face-to-face conversations among team members are rare.

Practices like the daily standup should spur discussion, not conform progress reporting.

Ted M. Young said...

To follow up on Troy's question, I believe that "Agile" as a goal is wrong-headed. Being Agile is a good thing, but it's just a way of getting somewhere, e.g., making the business sustainable, providing solutions to those who need them, and basically providing value. I think being Agile is a great way to do those things, but it's not an end in and of itself.

Unknown said...

Best post Ive seen in a long long time.