Tech Debt Is Not Your Enemy — It's Your Shadow
Yacine Ouardi

Let’s get this out of the way: tech debt isn’t the result of being a bad developer. It’s the result of being a realistic one.
Every time you’re shipping fast, trying to prove a concept, or hitting a tight deadline — you’re probably making trade-offs. And that’s okay. Tech debt isn’t a sign of failure. It’s the shadow that follows forward momentum. The real danger is not having tech debt. It’s pretending it’s not there.
What Even Is Tech Debt?
Think of it like this: you’re in a rush to get somewhere, so you take a shortcut. You save time today, but that road might be bumpier the next time you drive it.
In code, that shortcut might be a duplicated function, a magic number, a hardcoded string, or a component that works… but only under very specific conditions you didn’t document.
In my work on Lexonate — a CMS I built to manage internalization in web apps — I had to move fast. I made choices that got me to a functional product, but I knew I’d eventually have to revisit parts of the codebase that were fragile or too tightly coupled.
And that’s the key: knowing where the cracks are and being intentional about them.
Not All Tech Debt Is the Same
There’s a huge difference between strategic debt and careless debt:
- Strategic debt: “We’re doing this quick and dirty on purpose. We’ll revisit when we validate the need.”
- Careless debt: “We’re not thinking about maintainability at all. Future us will figure it out… somehow.”
One helps you move forward. The other just traps you.
You Can’t Eliminate It — And That’s Fine
You’ll never have zero tech debt. Trying to remove it all is like trying to eliminate friction from walking. It’s not possible — or even desirable. Some amount of debt is part of every living project.
The goal is not perfection. It’s control.
In a real-world project (like at Legal Doctrine, where I helped develop the platform’s frontend and internal dashboards), I saw firsthand how small, unmanaged debt grew into real blockers. Features took longer to build. Bugs popped up in unrelated areas. The fear of touching old code became a real thing.
Signs You’ve Got Debt (And It’s Hurting You)
- New features take longer than they should.
- No one wants to touch certain files.
- Onboarding a new dev is a nightmare.
- Bugs keep resurfacing in the same place.
Sound familiar? You don’t need to panic. You need a plan.
Managing Tech Debt Like a Grown-Up
Here’s what worked for me (as a solo dev and on teams):
1. Track It
Don’t trust your memory. Use TODOs in code, GitHub issues, Notion — whatever. Just write it down when you know you’re cutting a corner.
2. Prioritize It
Not all debt is equal. Fix what slows you down the most. Some messes can wait. Others are killing your velocity right now.
3. Bundle It
When you're building a new feature, clean up nearby debt while you’re in the neighborhood. Think: "I’m already here, might as well sweep up a bit."
4. Refactor with Restraint
Don’t fall into the trap of endless cleanup. You’re not writing code to be pretty — you’re writing it to be useful. Work in cycles: ship, learn, improve.
A Quick Story from Lexonate
When I first built Lexonate’s translation editor, I rushed the backend logic to support dynamic keys and multi-language nesting. It worked — kind of. But as the app grew, the logic got messy and untestable.
Rather than rewrite it all at once, I documented where the pain was, and every time I added a new feature to that area, I improved the structure a bit.
Six weeks later, the whole thing was cleaner — and I never had to pause feature work to do a massive refactor. That was a big lesson: debt can be paid in installments.
Final Thoughts
Tech debt is part of the job. Pretending it’s not there doesn’t make you smart — it makes you blind.
If you’re intentional, honest, and strategic, tech debt becomes a manageable trade-off instead of a looming disaster. Whether you’re working solo or in a team, you don’t need perfect code — you need sustainable code.
The real question isn’t “do you have tech debt?”
It’s: “who’s in control — you, or the debt?”