So what does "Technical Debt" mean? And what do my colleague's typically mean if it is not truly technical debt.
The first is easy; the definition of Technical Debt:
He who coins the term gets to define the term (that's Ward Cunningham).
OK, so to be truly technical debt one must negotiate the debt with the business. The business should achieve some objective sooner and incur an obligation to repay the technical team the time and effort required to put the system back into a proper state of clean well factored code.
But, wait... what could my colleagues mean when they misuse the term technical debt? I think they mean many things, but since there is no good word for what they mean they appropriate the popular term. I've referred to the concept as:
- bugs just waiting to be discovered
- short cuts that will come to haunt us later
- things we will fix one day
- engineering done by the new guy
- design choices that time permitted
There appears to be a problem here; there is no good word or phrase for this concept. So let's create one! How about unclean code. Inverting the concept from Robert Martin's Clean Code: A Handbook of Agile Software Craftsmanship.
Let's define the term 'unclean code'. Software code that might work, has known deficiencies, needs to be thoroughly tested, and probably would make a master craftsman's nose turn up at the smell.
Let's see if the term can replace the misappropriated 'technical debt' in a sentence. "We have some
A Product Manager's Take on Technical Debt by Kevin Binnie
A Technical Debit - Collateralized Debt Obligation you should not invest in - David Koontz
No Test - Inconceivable - Agile Complexification Inverter
Managing Software Debt - book by Chris Sterling
Doc Norton Sez You're Using "Technical Debt" Wrong - Agile Amped at Agile2016
Ward Cunningham's Debt Metaphor Isn't a Metaphor by Rob Myers
WSJ: What Buzzwords Would You Ban in 2014?
Crisp's Blog: The Solution to Technical Debt by H. Kniberg - he calls it "Crappy Code"
Misunderstanding Technical Debt by Niklas Björnerstedt
The SQALE method is particularly devoted to the management of the Technical Debt (or Design Debt) of software developments. It allows:
- To define clearly what creates the technical debt
- To estimate correctly this debt
- To analyse this debt upon technical and business perspective
- To offer different prioritisation strategies allowing establishing optimised payback plan.