Sep 09 2009
Software development with hunters and gatherers
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.
![]() |
![]() |



I want to stretch the metaphor to contain another idea as well: a culture that is steeped in hunting will find it distasteful to switch to gathering. Gathering might be easier and less stressful and more certain, but it lacks the bravado of taking down big game.
Hmm. The distinction between hunting and gathering is an important one, and there are some other aspects to the analogy which I think also bear scrutiny.
Gathering is like the stereotypical way that women shop: browse for hours looking and trying stuff until exhausted, selecting based on the product rather than a need, and maybe never coming back with anything at all. If you have a particular goal in mind (as it seems is often the case with software), then “gathering” may turn out just to be a slow way to get what everyone else has.
Hunting, on the other hand is more like the stereotypical way that men shop: Spend valuable shopping time making a list in advance, then rush round buying only and exactly what is on the list, even if it takes a long time or many visits. If your environment or customer expectations are ever likely to change, then “hunting” may turn out just to be a an expensive way to get what you no longer need.
Perhaps an intermediate analogy might be that of fishing. Just enough planning to get some equipment and bait; just enough guessing to choose an initial spot, and a willingness to move if there are not enough fish.
Does any of that make sense?