There's a common misconception among software engineers that technical debt is always bad, and that deciding to take on technical debt is always a poor decision.
But just as with financial debt, taking on a manageable amount of technical debt for strategic reasons can be a sound decision.
Here's how "good debt" works in the financial world: Suppose you have enough money saved up to place a sizable down payment on a house. But with mortgage rates at historic lows, you might decide that you would rather put that money toward investments that are likely to yield higher returns. Or you may simply value having a large emergency fund, and you're willing to pay a low interest rate on a loan so you can preserve your cash on hand.
Similarly, here's how "good debt" works in tech: When there are immediate, high-yield opportunities, you might decide to take on technical debt, knowing that by seizing the opportunity, you'll be able to pay off that debt later and still be in a better position than if you'd let the opportunity pass you by.
But make no mistake: There is an interest rate associated with all technical debt, just as there is on all financial loans. And failing to fully appreciate the properties of that interest rate can be disastrous.
In the world of money lending, loans come in many forms.
There are fixed-rate loans, where you know you'll pay a consistent rate throughout the length of the loan.
There are also variable-rate loans, where the interest rate changes with market conditions.
And then there are balloon loans and interest-only loans, which lure you in with the promise of lower payments than a traditional loan -- but because only a small portion (if any) of the principal is paid during the life of the loan, you end up with a balloon payment at the end that can be absolutely crushing if you're not prepared for it.
For technical debt, the interest you pay is in the form of time.
If it would take you a month to do something the right way, and a week to cobble it together in a way that meets your immediate needs but won't scale, the "interest" you pay is the difference between the time it would have taken you to do it the right way now (three weeks) and the time it will take you to do it the right way later -- which is likely more than three weeks because you've presumably built other services on top of the original solution.
But here's the scary part.
Unless you have reason to believe otherwise, you should assume that any technical debt you take on is of the "balloon loan" type.
Rarely do organizations take on technical debt with an amortization schedule already planned, whereby they chip away at the debt on a regular basis starting from day 1.
Instead, it's much more common for an organization to not have a plan or a timeline for when it will pay off the debt. They acknowledge that the debt will have to be paid at some point, but often the extent of that acknowledgment is an item on their backlog that doesn't get prioritized until the debt has grown considerably through inaction.
And when the debt comes due -- for instance, they find themselves unable to scale until the debt is addressed -- they end up in far worse shape than if they'd spent the time to build the thing correctly in the first place.
So how do you make sure this doesn't happen to you or your organization?
How do you avoid the "balloon loan" trap and lower the interest rate on the technical debt you have already accumulated?
Just as in the financial world, you get the best rates if you have the highest credit score, and you get the highest credit score by paying off your existing debt on schedule.
Your organization needs to manage the technical debts it takes on with the same rigor that it manages the financial debts it takes on.
Before signing off on a plan to take on technical debt to achieve a short-term, high-yield opportunity, your business stakeholders need to be willing to agree to the interest rate, which they pay by allotting time for your team to regularly reduce the principal on that debt.
For executives and product owners who would prefer to always be shipping new features, this can be a painful discipline to adopt.
But the more you make this a standard practice within your organization, the more your technical debt becomes analogous to a fixed-rate loan, rather than a balloon loan.
And when the executives and product owners see that being disciplined about paying down technical debt unlocks long-term opportunities, they will be more willing to commit to the practice in the future.
This, in effect, gives you lower interest rates, because you aren't constantly building on top of work that is itself laden with technical debt.
Shaun Gallagher is the author of three popular science books and one silly statistics book:
He's also a software engineer and lives in northern Delaware with his wife and children.
Visit his portfolio site for more about his books and his programming projects.
The views expressed on this blog are his own and do not necessarily represent the views of his publishers or employer.
This student guide explores three economic systems (capitalism, socialism, and distributism) and explains how distributism is different from the other two.
Offering your child an incentive for good behavior isn't a bribe. Here's why.
What if making money is not one of your top goals? And what if you happen to stumble into a high-paying career nonetheless?
I created a website of tutorials that are adapted from exercises I’ve done with my own children. You can listen to audio samples of all the tutorials and teach your own kids how to lay down some sick beats.
Simple actions can lead to a more vibrant political ecosystem and viable candidates in future elections.