Unfortunately, I’ve never been into gardening. I imagine, though, that unless you owned a home, it would be very hard to cultivate this hobby. Maybe having a mini indoor garden or a wall of houseplants would be how you could go about it in the city.
I feel the act of gardening can teach us a lot— one lesson is the importance of pruning. Pruning is defined as “trimming (a tree, shrub, or bush) by cutting away dead or overgrown branches or stems, especially to increase fruitfulness and growth.”1
The idea of removing something in order to make room for growth is quite common. The Bible touches on this in John 15:1-2: “I am the true vine, and my Father is the gardener. He cuts off every branch in me that bears no fruit, while every branch that does bear fruit he prunes so that it will be even more fruitful.”
And your brain does it too, in a process known as “synaptic pruning” whereby it eliminates extra synapses during childhood development. This process is thought to free up energy and nutrients needed for maturity and growth of the body.
And software, too, needs to be periodically pruned. I find though that pruning software is nowhere near as easy as snipping off a couple of dead leaves with a pair of shears, which is the image I have in my head of how gardeners work. Nor can it be solved by metaphorically taking out an electric saw and hacking off the decaying branches of a woody tree.
It is instead an incredibly delicate task, almost surgical in nature, especially if the software was developed organically in a bottom-up manner. One needs both a magnifying glass and an encyclopedia, sight and insight, to parse and piece out a complex codebase. And then I realized why we need software tools and maps— they are extraordinarily useful and even necessary for dealing with a wild overgrown codebase, especially the parts that no one wants to touch!
https://stumpplants.com/journal/pruning-guide