I've been writing loads lately about the difference between inventing a recipe and cooking a recipe. I've been doing that while rewriting the 50 page "light bulb moment" in RollingRocksDownhill. I won't go into the details here but the recipe analogy is very useful when thinking about software development.
Just today, I've realised that the recipe analogy also explains why many agile implementations fail.
I restarted using our Bread Machine a month or so ago and it's been fantastic. My children think I make the best bread in the world, but they don't realise that I follow a very simple recipe and the machine does all the hard work.
One thing I've noticed is that I must always "babysit" the bread machine through its first few cycles - the one's where it mixes the flour, water, yeast etc into a dough. It doesn't seem to matter how careful I measure the ingredients when I load them into the machine, the dough is always either a little too wet or little too dry and I have to fix it by adding a little more flour or a little more water. I'm no baker, but it's always obvious - if you've cooked bread you'll know what I mean - when I should stop tweaking, step away and let the machine follow it's course. The dough either looks right or it looks wrong, simple as that.
A friend of mine, Brian Swan, just wrote to me, saying:
"More and more I'm seeing "Agile" being implemented as the Scrum ceremonies (planning meeting, standups, sprint demo and retro), missing both the business focus on releasing something early and the technical focus on quality. In some cases this form of "Agile" is actually worse than what was there before."
Brian is, in my words, saying that they following the recipe, but they don't know how to tell if the dough looks right or wrong. If you don’t know what it’s supposed to look like then oftentimes you’re gonna cook shitty bread.
That’s blindingly obvious isn’t it?
There's a lot of the bitching and moaning within the Agile community these days about Scrum (mostly from very clever XP folk who don’t see the irony in thinking everyone should be extreme).
But, the problem is not with Scrum itself, the problem is that Scrum looks easy (take some flour, some water, some yeast) and it looks like it should be easy to do-it-yourself. But it's not. Scrum is really hard work. It might look easy, but it's also easy to screw up if you don’t know what ScumDough is supposed to look like.
That, I’ve realised, is what people like Brian and I do for a living.