philosophical question, who do you pay back technical debt to? I think this is where the analogy breaks down. Ward Cunningham invented the term to explain what his engineering team was doing to a bunch of finance people. While the analogy may have made sense to said finance people, it makes less sense to me.
I prefer the idea of entropy instead of technical debt.
Your (future) self. We often speak of living on borrowed time, even though there’s no time bank from which to borrow time. Possibly alternately phrased as the devil always gets his due.
The financial metaphor is very accurate. It’s all about time value. Having a feature today can be worth much more than the cost of building it twice over the long term.
I don’t think it is that simple. What about when you leave the org? Maybe the org owns the debt? Who does it get the debt from? Itself? What about when the org fails, does the debt disappear? Maybe they open source it and the greater society takes on the debt? Does the debt have an interest? Usually you have to conciously acknowledge taking debt. How often do you find engineers decide consciously they are taking on “technical” debt? Debt typically has a schedule for payback, does technical debt have a schedule?
It’s not that simple.
The debt is like a lien against the code. As the owner of the code today, you get to make the decision to incur debt. When you leave and give the code to somebody else, they get the debt too.
No, technical debt doesn’t require sitting down with a loan officer and filling out forms in triplicate and waiting for approval.
BRAINWAVE: securitizing technical debt. GET ME A16Z, this bad boy isn’t going to last!
Now you are getting into some classic religious territory about debt to the universe type stuff. We have a lien against the code which we borrowed from the gods.
My favourite metaphor is a comparison to either a legal system or a tax code.
As a society evolves, laws are re-written and supersede (parts of) previous laws, but the old laws aren’t usually retracted explicitly. The legal system becomes more complicated to interpret and reason about in general over time. Each legal document or law often references other clauses elsewhere as exclusions or edge-cases, requiring you to read or be familiar with those other parts in order to make sense of the document you’re interpreting. Anyone who has done taxes in the US knows how difficult it can be to work within complex tax codes.
It is possible to aggregate and “compress” the effective laws or tax code into a simplified and revised set of documents that would bee less ambiguous, easier to interpret/change, and which read mostly linearly. Refactor it, if you will.
Does it really break the analogy? How much does the other party matter? I suppose in theory it’s possible to renegotiate the terms of your real-world debt, but how often is that an actual concern for the business?
I think entropy is a worse analogy in many respects. It suggests an inevitable law of nature rather than a choice, and that’s to the people to whom it suggests anything at all.
I think it is more accurate because typically you have to consciously take on more debt. While most developers don’t even acknowledge they are taking any “debt”. Often many decisions are not conscious. It’s more like an inevitable law of nature you are fighting. And if you don’t fight it you die.
To me, entropy carries the sense of inevitability and so removes the sense of it being worthwhile to oppose it.
I prefer the debt metaphor since you are borrowing some effort from the future to have something today. If you are lucky you can write it off and have nothing to pay back.
You are fighting entropy just by being alive. Life IS about fighting entropy. And yes death is inevitable.