Fertile assets
One result of the technical debt workshop was that the attendees are more likely to talk about the code as an asset to preserve, improve, or destroy than as evidence of debt. See Mike Feathers on code as an asset or Chris McMahon on a project as an investment. Here’s my twist:
Consider a vegetable garden or a forest of pulpwood. The immediate value of either is what you get out of them at harvest time. That’s akin to the value a business gets when the deployed product gets used or a delivered product gets bought.
But there’ll be other harvests, and the way you prepare for this harvest affects the ones that follow. Over time, a well-tended garden gets better and better at growing vegetables (because the soil is looser, you’ve dug under organic matter, etc.). If you tend it poorly–just push seeds into the ground–it’ll never yield what it could.
Product code is like such a fertile asset: the programmers can tend it well or poorly as they prepare for release, and the result will only become obvious over time. The big difference is that the fertility of code varies a lot more than the fertility of a backyard garden. No matter how sloppily I treat my garden, I can’t ruin it as completely as sloppy, rushed coding can.
August 19th, 2008 at 2:28 pm
I like the gardening metaphor, as weeds grow, you can’t chop out the weeds without possibly chopping out the good plants, or you won’t be able to tell if you do damage good plants. You might plant the seeds too deep, or fail to stake up the tomatoes. If you add llama poop, you’ll get an amazing harvest. But “fertile assets” make it sound as if nothing bad will happen, only that good things that could happen won’t. The truth is you could kill your garden, by not watering it all, or letting a dust storm smother everything. Is technical debt more like “soil conservation”? They planted millions of trees after the dust bowl, but the farmers just cut them down again.
August 21st, 2008 at 12:04 pm
One addendum: Ward’s original use of the term “technical debt” was that a well-functioning team may voluntarily take on debt, secure in the knowledge that they can pay it back. At the workshop, we focused too much on out-of-control debt.
Note that Ward’s point sort of applies to the gardening analogy. You could alway get a better garden by not harvesting it — after all, harvesting removes valuable organic material that could have gone into the soil. But that would miss the whole point of the garden. You have to accept some harvest-time loss in the garden’s potential and “pay it back” later.
I’m beginning to hate metaphors almost as much as I hate definitions.