Back to the Journal

The quiet cost of technical debt

Nobody decides to build a slow website. It happens one reasonable shortcut at a time, and the bill arrives later with interest.

Nobody washes the pan.

It’s late, dinner ran long, and the pan needs to soak anyway. All true. The problem isn’t tonight’s pan. The problem is that tomorrow there’s a pan and a cutting board, and by Friday you’re eating cereal standing up because cooking anything real means dealing with the sink first.

That’s technical debt. It’s the most useful metaphor in software, and you don’t need to write code to understand it. You need a kitchen.

How the debt gets borrowed

Technical debt is what accumulates when a team takes shortcuts to ship faster. Hardcode the value instead of building the setting. Copy the code instead of restructuring it. Skip the documentation because everyone currently on the project already knows how it works.

Here’s the part that surprises people: almost every one of those decisions is reasonable at the moment it’s made. The deadline is real. The budget is real. Shipping the imperfect thing this quarter is often genuinely better than shipping the elegant thing next year. Debt, in the financial sense, is a tool. You borrow against the future to get something valuable now.

The trouble is the interest.

What the interest looks like

Interest on technical debt doesn’t arrive as a bill. It arrives as friction, and it compounds quietly.

The change that should take an hour takes a day, because the value somebody hardcoded in 2022 now lives in eleven places. The estimate for a simple feature comes back strangely high, and nobody can quite explain why. Your developers start prefacing everything with “well, it depends.” Small bugs appear in parts of the site nobody touched, which feels like a haunting but is actually coupling: things got wired together in a hurry, and now pulling one thread moves the whole sweater.

Eventually you reach the stage every neglected codebase reaches, which is fear. There’s a file nobody wants to open. A plugin nobody dares update. The one person who understood the checkout flow left in the spring. At that point you’re not paying interest anymore. You’re paying protection money.

What makes this cost so easy to miss is that none of it shows up in a demo. The site looks fine. Visitors see pages loading and forms submitting, and a stakeholder clicking around on a Thursday sees nothing wrong at all. Technical debt lives entirely behind the walls, like old wiring: invisible right up until you try to renovate, at which point every estimate comes back with a long pause in front of it.

And here’s the quiet cost in business terms: the debt doesn’t slow your website down first. It slows your ideas down. Every “could we just add…” gets a little more expensive, so gradually people stop asking. Companies carrying heavy technical debt don’t feel broken. They feel stuck, and they rarely know why.

The debt you booked and the debt you didn’t

We’d never tell a client to avoid technical debt entirely. That’s like telling a business to avoid loans. Taken deliberately, debt is how you hit a launch date, test an idea cheaply, or survive a rough season.

The distinction that matters is whether the debt was booked. Deliberate debt sounds like this: “We’re shortcutting search to make the launch, and we’re scheduling three weeks in the spring to rebuild it properly.” Everyone knows the loan exists, and there’s a repayment plan attached to it.

Unbooked debt sounds like silence.

Shortcuts taken under pressure, never written down, never revisited, discovered years later by a developer doing archaeology. Nobody chose it. It accreted, the way a junk drawer accretes. No single object in that drawer was a bad decision. The drawer is still a disaster.

What to do if you don’t write code

You can’t refactor anything yourself, but you control the two things that matter most: money and permission.

Budget for maintenance like it’s rent, not a treat. A healthy team spends a meaningful slice of its time paying down debt, and that time looks like nothing from the outside. No new features. No visible change. That’s the point; it’s the work that keeps next year’s features affordable.

Then ask your team one question: what are you afraid to touch? Every developer has an answer, and most have never been asked. The answer is a map of your debt, drawn by the people who pay the interest daily.

And when someone proposes a shortcut, don’t just say yes or no. Ask when it gets repaid. A shortcut with a repayment date is strategy. A shortcut without one is a pan in the sink.

You can live a long time with a full sink. People do. But you’ll cook less, and order out more, and slowly forget you ever liked cooking. The sad part of a kitchen like that isn’t the mess.

It’s the meals that never got made.