Let me answer that question with another question: Is financial debt a bad thing?
Not necessarily. People take on debt to get things they otherwise wouldn’t be able to get. Without debt, it’d be difficult for most people to buy a house, pay for an education, or start a business. Hence, it’s sometimes necessary to take on debt.
Tech debt is no different.
As much as I’d love to live in a world with perfectly modular, normalized, and extensible software, I’ve realized it’s sometimes necessary to make compromises to get the job done, whether that’s to unblock stakeholders, meet a deadline, or fix a bug in production.
However, like financial debt, tech debt should not be taken lightly. Whenever we make a decision that incurs tech debt, we should think critically about its implications.
If you default on financial debt, you risk losing assets. If you never handle tech debt, you end up with an unmaintainable system, making it harder to add new features and easier for new changes to cause incidents.
While the “quick-and-dirty” solution speeds you up in the short-term, compounding tech debt slows you down in the long-term. In the software world, we call these systems “spaghetti.”
All of this is to say: Sometimes tech debt can be a good thing, even necessary. But you should be mindful and cautious when you take on tech debt. And assuming you’re supporting a system long-term, you should have a plan for paying it down.