Got into a discussion about the meaning of Technical Debt. It was in reaction to this recent article which I assert mischaracterizes what Ward Cunningham meant by the term.
Rob Myers seems to imply that Ward Cunningham defined Technical Debt as "the deferment of good software design for the sake of expediency. Put simply, we’ve chosen to make some questionable design choices in order to get product delivered. This may be a conscious choice, but—more often than not—it’s unconscious, and the result of a time-crunch."
This is false. My assertion is that Ward had an entirely different idea in mind. In fact, he calls out the above sort of definition in a 2009 YouTube video saying this:
A lot of bloggers at least have explained the debt metaphor and confused it, I think, with the idea that you could write code poorly with the intention of doing a good job later and thinking that that was the primary source of debt.
I'm never in favor of writing code poorly, but I am in favor of writing code to reflect your current understanding of a problem even if that understanding is partial.
I've always had a different take on technical debt, although in part it's because I don't believe in doing a half-baked job to begin with (much to the discgust of some I've worked for!).
I started my view based on the fact that users and managers think that "software doesn't wear out". Once you've written the application, it's forever. Amusingly, I once met one of the founders of a medium-large company I worked for who said that when they first started out they worried about what to do with the 6 programmers they'd hired "once all the software had been written". Which dates it, because post-1980 the answer would be to kick them all out on the street with 2 weeks severance, but ironically by that time they probably had 50 full-time application programmers.
Technically, software doesn't "wear out", but it rots from the outside in. Hardware changes, the OS changes, the environmental needs change, and that's before you get into more general stuff like legal requirements. And the longer you put off bringing things up to date, the more it's going to cost you. It's not merely "debt", it's practically loanshark interest rates.
And yet still people continue to believe that "software doesn't wear out" and All You Have To Do Is...
Sources may include data from the Fakebook Research Foundation with support from Gargle University
Tim Holloway wrote:Technically, software doesn't "wear out", but it rots from the outside in.
... and from the inside out, and every which way you can think of. These are all metaphorical though, "rot", "wear out", "entropy" all pertain to the misalignment of understanding Ward Cunningham speaks of with respect to technical debt.
the longer you put off bringing things up to date, the more it's going to cost you. It's not merely "debt", it's practically loanshark interest rates.
Yup. That's one of the points I made and in an earlier version of the article, I used exactly that metaphor, of loanshark interest rates. I was going to slide "the vig" in there somewhere but ultimately decided not to.
Just let me do the talking. Ahem ... so ... you see ... we have this tiny ad...