Technical debt shares many similar characteristics to financial debt. Financial debt can be responsible; borrowing money responsibily can enable individuals and companies to achieve their goals (e.g. home ownership, transportation mobility, education, mergers, equipment purchase, etc). Typically, financial debt is often slowly paid off, amortized, consolidated, rolled over, or paid down in lump sums. As long as the financial debt can be serviced without undue hardship to cash flow and provides a positive cost-benefit utility, the debt is deemed being used responsibly. Financial debt can be debilitating, unpaid balances with high interest rates can quickly pile on more debt. For many people, financial literacy is low and understanding the nature of debt and managing it effectively is often confounded with emotion and stigma.
Technical debt provides utility. Let’s remember that software is a means to an end to help achieve a business need or accomplish a task at hand. As a technical leader, it is important to frame technical debt and understand how you will service it and how it is serving you. You can pay down the technical debt slowly, each time you’re in that area of code, make it a little better than before. You can choose to consolidate it and pay it off in a lump sum either by writing a new service or bypassing it strategically. No matter what the strategy is, you need to be crisp on the plan and the communication around it.
It’s important to remind ourselves, there’s no perfect piece of software. We’re always making tradeoffs and these tradeoffs are okay. What’s great software today is tomorrow’s legacy software. Learning how to frame, manage and accept technical debt as a means to an end will give you leverage and productivity as you grow.