Gardening your code

I was reading through The Pragmatic Programmer when I found a passage that reminded me how my former colleague and mentor, Carl Johan Crafoord, used to say that "software development is like gardening" and "code should be tended to like plants".

It is an approach to software development that I really took to heart, because it makes a lot of sense. This metaphor manages to walk the thin line between doing things perfectly (academia) and actually getting things done (pragmatism).

[…] software is more like gardening — it is more organic than concrete. You plant many things in a garden according to an initial plan and conditions. Some thrive, others are destined to end up as compost. You may move plantings relative to each other to take advantage of the interplay of light and shadow, wind and rain. Overgrown plants get split or pruned, and colors that clash may get moved to more aesthetically pleasing locations. You pull weeds, and you fertilize plantings that are in need of some extra help. You constantly monitor the health of the garden, and make adjustments (to the soil, the plants, the layout) as needed.
- Andrew Hunt and David Thomas

The book The Pragmatic Programmer is from -99 and the metaphor could be from before that, so it is not new by any means. Yet it keeps ringing true to me and so I felt I had to share it.