No, technical debt does not only come from taking shortcuts. I would even go as far as saying that most of the time it does not come from taking shortcuts.
- You wrote a perfectly engineered system in Cobold 30 years ago that was state of the art then? Well, now all your Cobold developers have retired and you need to add new features to that tool. It's tech debt.
- Your tool was built to support 100 users but now it needs to support 100M? It's tech debt.
- You were getting some data from the Google Stadia API? Tech debt.
- You're using a library that just got an important security update? Tech debt.
As another commenter pointed out, the term "debt" was wrongly chosen. It's not debt. It's stuff that used to be perfectly fine and due to no fault of yours is not anymore.
So, within your framing, the point is just that when things change (due to no fault of your own) the whole organization has to adjust expectations or you have an organizational issue.
The risk of this happening is more or less measurable and is the debt. Denying responsibility doesn’t make the debt not exist. It might mean you’re so far removed from understanding how your (sub)systems function that you’re unable to assess it. It may be so complex that no one is able to quantify it, in which case I suppose “it doesn’t exist” might be accurate enough — either your business fails or it doesn’t based on the success of your subsystems, and your business outcome is the measurement. I’d rather have someone else be the measurement.
It's not a failure of anyone or anything, it's just a change in requirements.
Entropy is unavoidable is the outcome of any work occurring.
A new feature isn't tech debt... it's a new feature. I don't know for other people but at my workplace they're two very different types of TFS items.
I could not agree more.
If you take on debt the bank is going to question if you can pay it. You're going to have to go through a formal process and bring in expensive experts such as accountants to justify that taking on debt is worthwhile.
Most "technical debt" is blundered into out of ignorance. Nobody sits down and thinks "we can save two hours now at the cost of three hours later" because it would probably take four hours to do the calculation. Sometimes it really is like that but frequently it is like "we can save two hours now at the cost of of two months later", such as when people make an incorrect database design that involves cleaning up corrupt data later on. Cases like that dominate the cost of "technical debt" to the point where the 2 hours now, 3 hours later cases just don't matter.
Perhaps not, but there're plenty of times you realise the "proper" solution that's going to leave you with well-structured code that's easy to maintain and easy to extend to likely future functionality is going to take weeks, whereas a quick'n'dirty solution that will get a bug fixed or an MVP-version of a feature implemented could be done in a few hours, and the latter option makes sense even from a technical POV because there's little certainty that the extra effort will pay off (esp. if it involves higher risk of breaking existing functionality, which is often the case). Unfortunately it's the accumulation of such decisions and lack of time to go back and revise decisions/rewrite code that lead to unwieldy and bug-ridden codebases.
This is a strawman.
It renames Tech Debt as an "organisational mortgage—a loan the business takes out against future capabilities to deliver, which has to be paid back with interest. In this way, it’s no different than any other loan, or any other debt the organisation incurs."
The difference of course is that this debt has a technical solution, as opposed to a financial one.
Some technical debt is from poor planning and design. Some is from a choice to get things done now that are quicker and cheaper but will cause some pain in the future. In that way technical debt is different, but it still has a cost to solve.
"should be a deliberate choices. It has costs, interest, pros, and cons."
Any "Technical debt" that is not a deliberate choice fails to fit the analogy. Often it's just crappy design or implementation. There are times that you need to take on some debt to move forward because you don't have the resources to do it otherwise. That to me is where the analogy works well and the important part is to make sure management is making that call not some overworked developer.