Through Black Friday, save 80% on my popular video course, Ship Better Code Faster!
Where does technical debt come from?
Broadly speaking, there are three places technical debt comes from.
Intentional vs Accidental Technical Debt
At the highest level, there are two types of technical debt: Intentional and accidental.
Intentional technical debt usually takes the form of “We know how to do this the right way, but we’re going to take a short cut to save time.”
This is often the correct business choice.
Outdated technology vs ignorance
We can then break down “accidental” technical debt into two broad categories as well: Outdated technology and ignorance.
Technical debt arises from ignorance all the time in the form of “I didn’t know any better when I wrote that code.” More experience tends toward less of this form of technical debt, but there’s no way to eliminate this type of technical debt entirely, as we’re always solving new problems, so we’ll always do things in suboptimal ways, at least some of the time.
Outdated technology takes the form of “The decision made sense at the time, but now things have changed, and we need a rewrite.” Maybe you chose to write your code in Perl, or COBOL, or use a database that has been End-of-lifed. Whatever the case, the only “blame” to be placed in this case is in someone’s lack of fortune telling ability.
If you’re interested in this topic, you may enjoy Episode #4 of the Tiny DevOps Podcast, in which Peter Morlion and I discussed the topic in greater detail.