// ← back to blog
 
/**
* Perfection yesterday Is the tech debt of tomorrow
* @date April 1, 2026
* @tags techdebt, refactoring, aitools, softwarearchitecture
*/
 
I've been wanting to write this one for a while.
At some point in your career, you'll open a codebase (maybe even your own) and wonder what the person who wrote this was thinking. Then you'll check the git blame. You already know how this ends.
image
Here's the thing people tell us not nearly enough: tech debt isn't a symptom of bad engineering. It's a symptom of a product people actually use. The more your product grows, the more customers demand from it, the more that elegant solution from two years ago becomes today's architectural burden. That's not failure. That's evolution.
I've had my share of decisions that made complete sense at the time, scoped correctly, built to spec, solved the actual problem, that later needed to be undone or redone entirely. Not because they were wrong then. Because the world around them changed.
The thing that genuinely annoys me is when teams respond to this by going the other direction: overengineering upfront, optimizing for problems they don't have yet, building abstraction layers on top of abstraction layers in the name of "futureproofing".
That's not avoiding tech debt. That's pre-ordering it.
image
All code is bad code to some degree
The moment requirements shift, and they will, your code is already getting old. So I'd rather focus on patterns that make things extensible and manageable once the core NFRs are covered, than chase some ideal of clean code that exists only until the next sprint.
As for rewrites, sometimes they're the right call. If a part of your system costs more in dev time and operational overhead than the value it enables, the conversation is worth having. But that's a business decision as much as a technical one.
image
And with AI tools now accelerating how fast we write code, I'd argue we're not solving the tech debt, we're both mitigating it and generating it faster. More code, more surface area, more entropy. The tools change. The nature of the challenge doesn't.
So next time someone treats tech debt like a moral failing, it usually means you built something worth using. And if we're being really honest --- we are the tech debt.
~/blog$
// © 2026 srdjan debić · built with astro + go