I had a unique pleasure of working together with David Evans on helping a group of testers understand agile software development last week. While talking about the value of quick feedback and short iterations, David used an analogy which I haven’t heard before and I liked it very much, so I decided to share it on this blog. He started the story by going back in history to primitive societies and comparing hunters and gatherers.

Gatherers go around with a basket, looking at what’s available and picking up fruit and veg. When they encounter something new and unknown, they can take a bite and see if it tastes good, then put it in the basked it they like it or throw it away. They pick up small things, one thing at a time, so if something is rotten or not edible, they quickly move on and find something that is fine.

Hunters chase a wild beast. This is a bold and dangerous task so they have to carefully pick a relatively easy target and go after it. Setting up a trap or chasing the animal takes a lot longer than gathering fruit and if the one they targeted gets away they need to do it all over again. If for some reason they can’t eat the animal, the entire effort is wasted.

What’s really important in the story is what happens at the end of the day if things don’t go according to plan:

It’s OK if you don’t quite fill the the basket.

It’s not OK if you don’t quite catch the animal.

Short iterations and quick feedback make it much less risky to run software projects. They allow us to do a piece of functionality at a time and see how we can handle that. At the end of the project phase, if not everything is quite there but we have most of it, especially the high priority stuff, everything is fine. Without quick feedback and short iterations, we’re basically hunting the mammoth. Everything depends on that final hit and there is very little room for mistakes.

I think that there is probably room for one more idea in this metaphor, where having the safety net of a half-full basket allows us to go and hunt a large animal every once in a while and put some meat on the table as well.