Credit cards vs mortgages

Credit card debt and mortgages are two very different types of debt. What makes credit card debt so insidious is that it is often accrued accidentally and grows incredibly quickly. Mortgages, however, are carefully planned, relatively cheap, and allow one to build equity sooner rather than later. A mortgage lets you live in a house today that might take 30 years to afford, if ever, while also benefiting from the asset’s gains. Good debt pulls forward value today that would otherwise take time to acquire.

Some tech debt is like credit card debt. These are systems so brittle and severe that they begin to degrade the quality and availability of the user experience. Code that makes it impossible for organizations to move quickly. We’ve all seen this kind of debt: it slows down every project and creates endless hours of work just to keep things stable. This type of tech debt is extremely expensive, both in terms of financial cost and human capital.

But other tech debt should be thought of as mortgages. This is code that hasn’t been touched in ages but still hums along reliably. A feature written five years ago that still does exactly what it’s supposed to do, even if it doesn’t follow the company’s latest design and engineering paradigms. The final modules needed to complete a migration. The last few bad dependencies. I believe this code should be left alone for as long as possible.

Choosing to leave this kind of code untouched does increase tech debt, but you are incurring it in a controlled and rational manner. Doing so allows your organization to focus on more important things. In this way, you are using tech debt to pull forward value today, like a mortgage. Good engineers can see through the noise and distinguish between the two.

Next
Next

On bad code…