Technical debt - what it is and how to deal with it

Recently, I was interviewed for the podcast "Beyond The Code", hosted by Kovid Batra (thanks for having me!). The main subject we covered was technical debt.

We could easily write the entire book about tech debt, but for the sake of the interview, I tried to come up with the shortest and the fullest definition based on my professional experience.

Here's the essence I wanted to share with you.

What is the tech debt?

Technical debt is a pain point in your tech stack, which holds you from reaching product or business goals.

Code quality, testing, automations, coupling, architecture, performance, and security can all be valid types of tech debt. But they don't have to unless we know possible business outcomes they block.

Is a monolithic system a tech debt? Yes and no. Yes, if it stops multiple teams from delivering effectively (because of strong coupling, single repository with fixed release cycle, etc.). And no, if there is a single, small team working on it (because of simplified infrastructure, one project to monitor and maintain).

How to tackle the tech debt?

There are two general ways for dealing with the tech debt: