Building delightful software is more akin to growing a garden than building a bridge. Are you a software engineer or a software gardener?
Would you try to plan a garden in such detail that you would know where each leaf will be positioned before you plant a single seed? Would people expect estimates (or are they promises in your organisation?) on exactly how many flowers will have bloomed in one year? Would you have an incentive tied to that? Things that would be perfectly reasonable to plan for a bridge seem a little ridiculous when you are talking about a garden.
You probably have a good idea of what your garden should look like a week into the future. You might even have a rough idea of the shape you expect it to be in a year from now, but you have no idea where each branch, leaf, stem, and flower will be. If you say you do, you’re really only guessing.
If you were building a bridge and you told me, before you began, that you knew exactly how it would look when it was finished — I would believe you. Tell me the same thing about your garden and I’m gonna call bullshit. Tell me you are going to make it grow faster by hiring more gardeners and I’m gonna laugh at you.
Remember that time when someone in your company unsuccessfully used an Agile gardening methodology, and then went around saying that it was horse shit that doesn’t work? Well, horse shit does grow gardens, but it also needs a few other things in place to work. It is more likely that the garden you attempted didn’t suit the climate of your organisation. Were you trying to grow a rainforest in the desert? You can’t just plant the same plants as Facebook, Google, or Spotify and expect them to take root regardless of the quality of your gardeners or the climate of your organisation.
Unlike a bridge, your garden will grow weeds. It will never be “finished”. Just because you stop spending money on it doesn’t mean it is finished. If you stop weeding your garden, the weeds will eventually smother it, and soon a re-plant will look easier than a pruning. The environment around your garden will also always be changing, and a neglected garden will become harder and harder to keep alive.
In most countries, engineers need a license to build a bridge. Gardeners have no such government-mandated quality control. Unfortunately, the quality of your gardeners is going to have a more significant influence on the success of your garden than any other factor — so you’d better be good at picking the wheat from the chaff. Only an experienced gardener really knows another good gardener when they see them. Someone who has merely managed gardening projects will have no idea what they should be looking for (though they won’t know this). So if you are not a gardener, but need to recruit good gardeners, then quickly find an experienced gardener you trust to vet your candidates. You can’t learn gardening in a classroom, so remember to focus on gardens your candidates have grown before, rather than how much gardening theory they learned at school (which nearly always won’t apply to the climate you are growing in anyway).
The engineering metaphor often serves to encourage non-technical people to have unrealistic expectations about how delightful software gets built.
I am a Software Gardener.
https://flickr.com/photos/ukgardenphotos/5417028892 shared under a Creative Commons (BY-NC-ND) license
https://flickr.com/photos/randysonofrobert/450125683 shared under a Creative Commons (BY) license
https://flickr.com/photos/29638108@N06/4163921896 shared under a Creative Commons (BY) license
Originally published as You are NOT a Software Engineer!