Coding as Gardening

First Planted: 2 August 2024 Last Tended: 3 August 2024
There is a persistent notion in a lot of literature that software development should be like engineering. First, an architect draws up some great plans. Then you get a flood of warm bodies to come in and fill the chairs, bang out all the code, and you're done. [2]
[...] software is much more like gardening. You do plan. You plan you're going to make a plot this big. You're going to prepare the soil. You bring in a landscape person who says to put the big plants in the back and short ones in the front. [1]
But when you plant the bulbs and the seeds, what happens? The garden doesn't quite come up the way you drew the picture. This plant gets a lot bigger than you thought it would. You've got to prune it. You've got to split it. You've got to move it around the garden. This big plant in the back died. You've got to dig it up and throw it into the compost pile. [1]
[...] the reality is a garden is something that you're always interacting with to improve or even just keep the same. [1]

References:

[1] Programming is Gardening, not Engineering. A conversation with the authors of "The Pragmatic Programmer" - Bill Venners