My garden is choked with weeds. But you can learn from it and avoid choking your code with bugs.
All it took was a season of neglect: “It’s raining too much.” “It’s too hot out.” “I’ll take care of it when the weather is nicer.”
It’s like bugs and issues in software. Unlike gardens, bugs don’t grow in code, but the world around the code changes. A popular Photoshop plugin whose group was under me eventually died a sad death because upper management didn’t want to fund the required maintenance to keep up with regular Photoshop changes. Previous upper management agreed with a target range of 10–30% technical debt spend per annum, but when push came to shove, all the tech debt items got pushed off the table. A later round of management even made the call to defund Mac support for a popular platform even though a majority of the customers at the time were on Mac.
By the time it’s a crisis, it’s too late and it’s difficult to argue against not doing the debt resolution because so much debt has built up it’s overwhelming vs. the ROI.
Like the garden, you can start out with all the best practices. In my garden, I laid out landscape fabric, edging, and yet, neglect eventually broke it all down and let the weeds in. It doesn’t take so long if you keep up with it, and if ongoing work to support compatibility is part of the overall corporate strategy.
If it’s not part of the strategy, or you don’t have a corporate strategy, inevitably your garden gets choked out.