Debts, Tech and Otherwise
18 comments
·March 31, 2025hnthrow90348765
dijksterhuis
> Debt is an obligation that requires one party, the debtor, to pay money borrowed or otherwise withheld from another party, the creditor.
> The term can also be used metaphorically to cover moral obligations and other interactions not based on a monetary value. For example, in Western cultures, a person who has been helped by a second person is sometimes said to owe a "debt of gratitude" to the second person.
https://en.wikipedia.org/wiki/Debt
"debt" means owing something to someone. non-compounding debt is still debt. i don't pay back a "debt of gratitude" with compound interest. i also don't pay back friends I owe money to for a restaurant bill with compound interest, even though i was in debt with them when they covered my part of the bill.
compounding/non-compounding is fine. don't over-complicate it.
burakemir
In an attempt to get a more general version of a debt metaphor, let's look at ingredients: - there is a time interval - we have a utility function, or at least desire one or want to pretend we have one - there is a decision - there is uncertainty
From here there are many paths...
"Deliberate vs inadvertent" describes whether we know about the effect the decision has on the utility function.
"Reckless vs prudent" describes whether we are rational and realize that decisions have consequences.
It is also possible that we don't actually have a utility function. Or different people involved in the decision have different utility functions or don't feel the same responsibility towards the outcome (not unheard of when it comes to maintenance/design/architecture vs feature).
What makes the debt metaphor very attractive is that it evokes an image of being in control. We may not have spelled out the utility function but everyone agrees it is bad now so we can pretend it was a rational choice we had. The alternative that we did not take any decision when we could have or were too distracted to see the consequences is much harder to accept. So now that we have debt, let's talk about whether we choose to pay it back or now.
Rather than working hard to create this faux image of control, I wonder how often teams may be better off having an honest discussion about what the utility function is or should be, which decisions will make the group move in the right direction and how the team can keep oneself accountable that the effects that one had in mind actually took place.
wrs
The survivor bias section at the end is summed up by a favorite response to premature scaling work at a startup: “We would be very fortunate to have that problem.”
potatohead00
I really liked Yvonne's reframing of tech debt as house work: https://mastodon.social/@yvonnezlam/112474946704366947
no metaphor is perfect, but I think figuring out who is impacted and how by decisions to rush or skip things is important.
strken
I really hate that framing. "Tech is made up of people who don't do housework" is an insulting and largely incorrect framing, and my vast experience of cleaning my shower has taught me that it's almost completely unlike tech debt. The cost of not doing it is...it looks bad and it's harder to clean next time. And maybe I need to get out the real bleach and the safety gear. This cost is not at all like tech debt, which has downsides that multiply together in unforseen ways and fuse together into critical outages.
Deferred maintenance of other engineered systems is a better metaphor because it includes severe consequences. If you ignore problems in an aircraft, the aircraft doesn't just look slightly gross: it has to crash land in a river, severely injuring 8 people and killing 2. Similarly, the long-running transactions in that batch job you didn't fix + the fact you delete info from other systems within the batch job before the transaction commits + the job retries on an aggressive backoff + you only have a single database with a limited number of available ports, can all multiply together into a significant outage and data loss.
rkaregaran
reforge has a great post where they classify the various types of debt in digital product development: maintenance debt, developer efficiency debt, stability debt, security debt, technical product debt, decision debt. https://www.reforge.com/blog/managing-tech-debt
heavymetalpoizn
[dead]
0xbadcafebee
I can call an ink pen "a sword". I can even justify this by saying some nonsense like "pens are used to wage war". But if I rush headlong at a Samurai with nothing but a Bic Rollerball, I should not expect to come out of the encounter with all my limbs, much less the expectation of injuring the Samurai. Just calling it "a sword" doesn't mean it has anything to do with an actual sword.
"Tech debt" isn't debt. It has nothing to do whatsoever with the concept of debt. What people mean when they say "Tech debt" is really "I'm putting off work I know I should be doing now, until later, and I'm doing something else instead that I know I'lll need to undo" That's not debt. That's procrastination. That's delaying the inevitable. It ain't debt.
You don't pay off a car loan with procrastination. You don't decide to put off painting your house and then call that a loan.
"Tech debt" has nothing to do with interest, with a lienholder, a creditor, a payment plan, etc. There is nobody to call in the loan. There is no incremental payment. There is no credit. There is nothing whatsoever to do with the entire concept of debt, much less any of the actual practical real-world implications, actions, or actors, behind debt.
Please let's stop perpetuating this cargo cult myth. There is no such thing as "tech debt". There is only compromises and procrastination, and justifying regrettable decisions by pretending there's a good rationale for them. There isn't.
rileymat2
Having worked at jobs for an extended time, you see how it is not just redoing for the same price. It compounds, for example a DB schema, over time people build more and more on top of it with leaky abstractions.
You end up rewriting many things.
fluoridation
Are you aware of this thing called a "metaphor"? Do you also find it aggravating when someone tells you about a program that is "running" because it's not using its legs to move along the ground? Or when someone says that they're going to "take a rain check" on an activity that doesn't have an entry fee?
>You don't pay off a car loan with procrastination.
Following the metaphor, the car loan itself would be the result of procrastination (i.e. you procrastinated when you decided to put off paying for the car by taking on debt).
>You don't decide to put off painting your house and then call that a loan.
I mean, I don't see what would prevent you from doing that, as long as everyone understands what you mean.
0xbadcafebee
Nobody acts like a server has legs when they say it's running. They do act like there is actual debt, or something that functions just like debt, when they say it's "tech debt".
If I said to you, "I know I should be on a diet right now, but I'm going to eat these donuts for a few months anyway." - is that diet debt? You might say yes, you might say no. Either way, I'm an idiot if I think I can eat those donuts now and just "pay them back" in a few months. That's not how food works. That's not how health works. It's not "good" that I'm packing on the pounds now. It's going to be harder to work them off later.
There's so many different decisions I could have taken to lessen the impact of this, like limiting my donut intake, or exercising after eating the donut, only eating half a donut, only eating a donut after I've reached a milestone, etc. But none of that goes into my diet debt idea. Because in my head, I can justify any shit decision I take now, with the idea of magically paying it off later with magic diet money. This was not a good decision, and calling them debt didn't make it a good or justifiable decision. I was just being fat and lazy.
People are literally considering the putting-off-of-necessary-work as equivalent to the functioning and value of a financial instrument (wherein debt is an actually constructive thing). They say, "tech debt is good, because <insert justifications>, and we can just pay it off later!".
Which is of course total nonsense, verging on insanity. You don't "pay off" generic bad decisions now with generic good decisions later. How about we nuke Russia tomorrow, and just "pay it back" by giving aid to Africa in 100 years? Hmmmmm. Nuclear debt? Sounds good to me!
There are bad metaphors, and then there's group psychosis covered by a metaphor. So much shit is constantly excused with this trite nonsense. It's a universal "do whatever the fuck you want" excuse. Do anything you know is wrong, and say "well, you know, it's just tech debt!", and all is forgiven and allowed. Like doing ten Hail Mary's after fondling the alter boy. Intone the magic words and you're free to sin again.
fluoridation
>Either way, I'm an idiot if I think I can eat those donuts now and just "pay them back" in a few months. That's not how food works. That's not how health works. It's not "good" that I'm packing on the pounds now.
In fact, that's exactly how food works. If you don't weight thousands of kilos right now it's because how much you've eaten and how much you've burned are more or less balanced, even if you're not at your ideal weight.
>It's going to be harder to work them off later.
Why? Literally, why? A Joule is a Joule whether it's now or later. It will literally cost you the same effort to burn a Joule's worth of fat now as it will ten years from now, because that's what effort is.
The way technical debt and "dieting debt" are different from financial debt is not in how (or whether) they're accrued and paid off, but in that financial debt has a time component, because the debt is with a second party. You can't hold a significant debt indefinitely, someone eventually comes to find you. Technical debt and dieting debt are debts you have with yourself -- or rather with your future self. There's no one to come looking for you, and you're only screwing yourself if you let the debt sit there unpaid and causing problems for yourself. That's why it's stupid to accrue it, not because of some effort calculus about how much more effort it's going to take to repay later.
normie3000
> Or when someone says that they're going to "take a rain check" on an activity that doesn't have an entry fee?
Wait, what is a rain check?! Does it involve money?
CodeMage
I always thought it meant "I'll go check if it's raining (and never come back)", but it turns out that a rain check is an IOU given out when an outdoor activity is disrupted by weather, so you can use it for a later event.
uuddlrlrbaba
Tech debt is such a flawed concept. There is no world where requirements 10 years later are the same as the MVP, or even foreseeable. You can never pay it off. Software is always changing.
Even if it were debt, debt is a tool to get you what you need today. And then you likely roll it into something down the line. Maybe you pay it off (and even then the asset still requires maintenance) Like a starter home, then upgrading to a larger home to start a family, etc, etc. Requirements and resources are in constant flux.
andrekandre
tech debt is rarely "payed off" all at once, its more like paying it off over time so your "monthly bill" (productivity loss/slowdown) doesn't bankrupt your project
> Requirements and resources are in constant flux.
this is precisely why over time you pay off that debt - that keeps your project rolling at a good pace - is the point8note
i take out debt to build a thing that satifies today's requirements. its irrelevant whether the requirements change. the debt is still taken out in the code or whatever other solution
debt for requirements that arent there anymore should be forgiven, and the system deleted. thats different than paying off the debt
Feels like we're stretching the metaphor when we apply it to things that won't necessarily compound in complexity or time required to fix it. This is often the case with technical stuff because things can depend on one another, but if you drop a bad process step, the time saved is probably linear since rarely do other teams need to change their process because you changed yours.
Debt is scary as a metaphor because the interest compounds and the bank can repo things, but if you just owe a guy $10, he's not gonna come after you years later with a $300,000 bill. Non-compounding bad decisions are "you owe a guy $X" while the compounding ones are "debt".
Maybe we should use "fees" and "debts" to differentiate these.