Friday, August 22, 2014

Just Stop It! (A Note on Wrapping Waterfall Plans in Iterations)

CDC turnip
A wise man once said,
"I've got a plan so cunning, you could put a tail on it and call it a weasel!
Unfortunately in software it isn’t quite so easy. Simply renaming a broken process doesn’t really change the way a project is set up. Unfortunately a growing number of managers seem to believe they can turn their projects into lithe, agile weasels simply by wrapping pre-planned waterfall projects into iterations and calling it “agile".

Projects like these tend to ring several alarm bells, such as:
  • The entire project is estimated up front (usually taking up a huge amount of development team time)
  • Stories are split by service, and not by end-to-end functionality (usually a sign that key design decisions have already been made without being validated by working code). Ie the now discredited smokestack development approach. So a team (or even separate teams!) might be developing the front end first. Then later develop one of the services the front end uses later. Then another even later. Then expect everything to work together!
  • The software can not be deployed to a live system until the end when everything is complete. A direct side effect of developing smokestacks
  • Iteration demonstrations rely heavily on smoke and mirrors to work. The software is not "potentially deployable" at all. Again, those stacks are a-smokin'!
  • There are huge swathes of time at the end entirely focussed on integration and end to end testing. Smokin'!

Finally, at the worst excesses of this madness, remember I said that the project is estimated upfront? Now allocate those stories to specific iterations, right to the end of the project. And woe betide any team that doesn't meet the commitments that have been preplanned elsewhere for them - they must complete the next iteration's plan and whatever they failed to deliver previously!

I am sure there are more warning signs. Feel free to add any you have come across in the comments.

When I see people do this, I really don’t know what amazes me more. The fact that there are still people trying to disguise waterfall inside iterations and calling it “agile”, or the fact that they still expect people to be fooled by it.

So here is the message I would like to give to all those disguised waterfall projects. JUST STOP IT! OK? Enough already! All you are doing is adding all of the pain of visibility but getting none of the gain of project agility. You are making yourself look foolish, and insulting the intelligence of those with firsthand experience of genuinely agile projects to boot. As another wise man once said "There is no point putting lipstick on a pig".