Chris Aitchison, a Melbourne software developer and occasional blogger, posted his thoughts on estimating a couple of years ago. In You are NOT a Software Engineer, Chris argues that engineers who design and build bridges are held to a higher standard for providing estimates and hitting them than software developers should be. “In most countries, Engineers need a license to build a bridge.” Chris makes the argument that the engineering metaphor for software development is outdated, and refers to himself as a software gardener.
Do you try to plan your gardens in such detail that you know where each leaf will be positioned before you plant a single seed? Do people expect estimates (or are they promises in your organisation?) on exactly how many flowers will have bloomed in one years time? Do you have a bonus tied to that? Things that would be perfectly reasonable to plan for a skyscraper seem a little ridiculous when you are talking about a garden.
Farming is a business, in that there are stakeholders other than the farmer. Gardening, not so much. Farmers have to present a business plan to the bank in order to get the financing for a crop. That means that they need to estimate their yield, based on the yields in prior years for the same fields, adjusting for new fertilizers, improved seed varieties, pest management technology, climate change, and other variables both under and out of their control. Most farmers contract most of their expected harvest to some large company, who will sell futures contracts to supermarkets, restaurant chains, and so on. Gardeners, not so much.
Farmers go to school, including graduate school, to learn how to maximize their yield and quality, and sustain the value of their fields over their lifetimes and the lifetimes of their descendents. There are farms that have been in production for centuries. Gardeners go to the garden center and show pictures of their wilted leaves to the professionals, who sell them soil amendments or pest treatments in an attempt to recover what they can. When gardeners get frustrated, they give up and let the weeds take over. My wife and I are avid gardeners, which means we aren’t farmers and we know it.
If you’re creating an iPad app in your spare time, the gardener metaphor is fine. If you’re creating an enterprise application, we expect you to work like a farmer.