Technical Debt Isn’t All Bad
Nobody wants technical debt. Technical debt conjures images of messy code, cumbersome workarounds, and a ticking time bomb of maintenance woes—especially when it comes to cloud-native applications. In a previous article, I discussed how cloud-native application development processes tend to encourage technical debt accumulation. DevOps and Agile programming practices favor short-term changes rather than long-term improvements. Fast-moving business strategies, enabled by cloud-native application strategies, push development teams to do more in less time. All of these tend to increase technical debt.
More often than not, unless a specific process is initiated intended to remove it, development processes almost always increase technical debt. And technical debt is bad, right?
Well … maybe. Saying technical debt is bad is actually an overly simplistic view of the subject. Technical debt isn’t bad, per se. It depends on how you use it; that defines whether it is bad or not.
Much the same is true with financial debt.
Technical Debt is Similar to Financial Debt
Imagine you are looking for your dream home. The price tag is daunting, and the idea of waiting years to save enough is impractical. Enter the consumer mortgage. The consumer mortgage is a financial tool that enables you to acquire your home now as long as you promise to make payments over time. Rather than paying rent to a landlord, you make payments to pay off your mortgage.
The consumer mortgage mirrors the concept of ‘good’ technical debt. Just as a mortgage allows you to enjoy the benefits of home ownership now while making incremental payments over time, good technical debt lets developers release a product sooner, collect user feedback and iterate for improvements.
So, what, then, is bad technical debt? Bad technical debt is similar to consumer credit card debt. With consumer debt, you’re accumulating liabilities without acquiring any appreciating assets or other long-term benefits. You buy items you consume with your credit card, and then you are left to repay the credit card later without a solid plan for how to accomplish that.
Similarly, bad technical debt accrues when you compromise on essential development practices, such as skipping writing tests or ignoring critical product needs, in order to meet arbitrary deadlines.
In both the bad technical debt and the consumer credit card debt cases, the value derived from acquiring the debt is questionable, and the cost may far outweigh the benefits.
Leveraging Good Technical Debt
Good technical debt, like a home mortgage, involves a strategic decision. Imagine launching a software product that’s not entirely polished but has core functionality intact. Doing so allows you to engage your potential users early before you’ve invested in a final course of action. By gathering insights, you can easily adjust your offering or pivot in another direction to meet unexpected customer needs.
Just as a mortgage enables you to enjoy your home while you pay it off, good technical debt lets you provide value to users and the market while iteratively enhancing your application.
Good technical debt is an investment in your business, like a home mortgage. Bad technical debt is a shortsighted splurge ignoring important long-term costs, just like consumer credit card debt.
Identifying Good Vs. Bad Technical Debt
Distinguishing between good and bad technical debt hinges on one crucial aspect: The overall value proposition. Just like the evaluation you go through to determine whether a home mortgage is a worthy investment, you must weigh the benefits against the costs.
Releasing a partially complete product to obtain user feedback gives you valuable user feedback in return for the increased debt. This insight can easily outweigh the technical debt incurred to release early. On the other hand, artificially rushing a release to meet a self-imposed deadline—without a clear value proposition—gives you the cost of the technical debt with no foreseeable value—it’s debt without benefit.
Planning for Repayment
Just as important as understanding the value you are receiving for the increased debt, it’s critical to ensure that you have a plan to repay the debt.
With the home mortgage, you have a payment schedule, and you make sure you have a plan for making the regular, necessary payments.
For technical debt, you must have a plan for how you will address the increased debt moving forward. If you don’t have a plan, technical debt can fester and grow and become a big problem later, just like the foreclosure process if you fail to make your home mortgage payments.
Is Your Technical Debt Good or Bad?
Technical debt isn’t a binary good/bad concept. Rather there is a continuum of potential outcomes, good and bad, that have to be considered. Just as a consumer mortgage empowers home ownership by balancing present needs with future financial commitments, well-managed technical debt can empower developers to release products faster, gather user insights, and iteratively improve applications.
So, next time you encounter a question about taking on technical debt, remember that whether it is good or bad requires thoughtful consideration of both the value returned and your ability to repay. By balancing these considerations, you’ll enter the technical debt discussion with your eyes open rather than mindlessly moving forward uninformed.