imGurpreetSK


On software being like gardening

Link to Product leader John Cutler’s published article about software maintenance suggesting that software is more like gardening than car maintenance, quoted from Pragmatic Engineer’s paid article Bug management that works, Pt 1:

I’ve always been bothered by how teams use words and phrases like maintenance, keeping the lights on (KTLO), and business as usual. I get what they mean, but there always seems to be a stigma around this work.

When we maintain a car—oil changes, tire rotations, etc.—we aim to keep the car running smoothly and safely. When we maintain a car, we don’t normally fix bugs, apply patches, optimize performance, check for compatibility, remove features, refactor, and incorporate user feedback. Why? Car maintenance revolves around physical wear and tear, degradation of materials over time, and the occasional replacement of parts with a limited lifespan. These actions don’t “fix” or “improve” the car but rather preserve its current state and prolong its effective lifespan.

In a sense, software is much more like a garden than a mechanical entity like a car. We plant the initial seeds (start designing and building), water and nurture it (make updates and enhance features), and periodically have to prune (refactor) and weed (remove bugs and vulnerabilities). A product requires constant attention to grow and adapt to its environment (user needs, technological changes, and market trends). It’s an ongoing process of growth, adaptation, and care.

Applicable concepts: seeding, sowing, weeding, watering, pruning, cultivation, composting, harvesting, hardening off, propagating, rotating, aeration, grafting, trellising, thinning, etc.

Having working in software with teams of different sizes, this comparison makes a lot of sense to me not only for maintenance but also how good software is written.