The Biggest Risk in Software Isn't Technical Debt. It's Knowledge Debt.
The real MVP in every company isn't always the fastest developer or the person writing the most code.
It's usually that one developer who knows why everything was built.
You know exactly who I mean. They're the person everyone messages when:
- ▸"Why does this API work like this?"
- ▸"Can we remove this service?"
- ▸"Why are we storing this field?"
- ▸"What breaks if we change this?"
Notice what those questions have in common. None of them are answerable by reading the code. The code will happily tell you that the API works like this, that the service exists, that the field is stored. What it can't tell you is whether any of that is intentional, load-bearing, or a fossil from a business requirement that died in 2022.
And the scary part? The answer is usually nowhere in the documentation. It's in their head.
Code is becoming easier to read than decisions
Here's the asymmetry that's been bothering me. As systems grow — and especially as AI tools get better at explaining code — what the system does keeps getting easier to discover. Point a model at the repository and it will map the endpoints, trace the data flow, and summarize the modules better than most onboarding docs.
But why it was written that way is getting relatively harder to recover, because the why was never in the repository to begin with. It lived in a meeting, an outage, a customer escalation, a compromise between two teams that no longer exist. The code is the shadow of those events, not the record of them.
You can read what the code does. Understanding why it was written that way is a different kind of knowledge entirely — and it doesn't survive on its own.
Knowledge debt: the debt nobody tracks
We have a rich vocabulary for technical debt. We measure it, we schedule sprints to pay it down, we argue about it in retros. But I've come to believe the bigger risk in most organizations is something we don't even track:
Knowledge debt — the gap between what your systems embody and what your team can explain.
Technical debt slows you down. Knowledge debt does something worse: it makes change dangerous. When nobody knows why the service tolerates duplicate events, you can't safely simplify it. When nobody remembers what breaks if the field is removed, the field becomes immortal. The system calcifies not because it's badly built, but because its reasoning has evaporated — and every undocumented decision is a room nobody dares to renovate.
Technical debt compounds in code. Knowledge debt compounds in fear — and fear, unlike debt, never shows up on a dashboard.
Every resignation becomes a risk assessment
The cruelest part is how this debt comes due. It isn't gradual. It's a two-week notice.
When critical business decisions, architectural trade-offs, and historical context live only with a few people, every departure triggers a quiet panic: what does she know that nobody else does? Which systems just became unmaintainable? The "knowledge transfer document" written during a notice period is where context goes to die — fifteen years of reasoning compressed into bullet points by someone whose mind is already at their next job.
We even have a grim name for it — the bus factor — and most teams' honest answer for their core systems is one.
AI sharpens this risk rather than softening it. When the MVP leaves a modern team, the code itself is less of a problem than ever — AI will explain every function to their successor on demand. What AI cannot do is recover a single "why" that was never written down. The departing engineer's unique value was never their ability to read the system. It was their memory of the hundred meetings, incidents, and trade-offs that shaped it — and that memory walks out the door untranscribed.
Paying it down without a documentation religion
The fix isn't "write more documentation." Documentation efforts fail when they try to capture everything. Knowledge debt is specifically about decisions, and decisions are rare enough to capture cheaply:
- ▸Write ADRs at the moment of decision. Ten sentences: context, choice, alternatives rejected, consequences. Twenty minutes while the reasoning is still warm beats twenty days of archaeology later.
- ▸Answer questions in writing, in public. When someone asks the MVP "why does this work like this?" — the answer goes in a doc or a comment, not just a DM. Every repeated question is the system telling you exactly which knowledge is in demand.
- ▸Rotate ownership deliberately. The second person who learns a system is infinitely more valuable than the first. Not because they're better — because they force the knowledge to become transferable.
- ▸Interview your veterans before they're leaving. The best time to extract context is when there's no deadline attached to it.
Preserving reasoning is the job
I've come to believe the most valuable engineers aren't just building systems. They're preserving the reasoning behind them — turning private context into institutional memory, one boring markdown file at a time.
It's unglamorous work. Nobody demos an ADR, and no sprint review celebrates the outage that didn't happen because the reasoning was written down. But in an era where AI can regenerate implementations on demand, the calculus has quietly flipped:
Code can be regenerated. Context cannot.
Guard it like the asset it is.