One of the most common complaints from development teams is that they’re never given time to address technical debt. Every ticket is a feature change or bug fix, and never a clean up exercise.

Well, I’ve got news for those teams. That’s never going to change, and it doesn’t need to. No stakeholder is going to pay to fix things that, in their opinion, should never have been wrong in the first place. When you ask for time to fix tech debt, all they hear is “we’d like to spend even more money putting right the things we said we’d already done”.

No point trying to explain. They’re not developers and it’s unlikely they’ll understand. Even if they did, there’s someone above them who won’t.

So how do you fix tech debt if you never get to raise a ticket for it? Easy. You do it as part of every ticket you work on.

A good developer never makes any change without leaving the code in better shape than they found it. The more changes there are, the cleaner the code gets. They do this because they care about the next person. They don’t leave “TODO” comments that say things like “Works for now – needs a better solution” or “would be better if this duplicate was extracted into a common reusable method”. They do it themselves.

If only one person on a team does this, things stay manageable. If everyone does it, change gets faster not slower.

It’s a rare thing to find in software development, but it should be the norm. That’s why so many teams grind to a halt as the codebase grows. That’s the brick wall many AI enabled developers are galloping towards, ten times faster than before.

Code should be treated like a bonsai tree, not a creeping vine. It should be pruned and shaped at every opportunity, never growing out of control until it needs major reshaping.

That’s how your code gets clean and lean.

Continuous improvement rather than gradual decline.