On good tech debt
Buying a home — AKA creating a massive list of homes you're interested in, going to open houses, clicking through virtual Zillow tours, narrowing it down to two homes, and then losing to all-cash offers that were over asking price.
That's the process my wife and I went through last year. We're all fighting over these homes for the right to pay a bank 3%+ interest on massive debt. Why? For starters, everyone needs a place to live. Home demand soared during the pandemic as we quarantined in our apartment while cheap interest rates fueled the increase.
We're not going to talk about homes in this post, but rather debt. Specifically, we'll look at tech debt and compare it to other types of more familiar debt.
We decided to build after getting outbid so many times.
Going against my instincts
Debt generally feels bad. When we signed our names on the dotted line agreeing to pay back a massive amount of money over the next 30 years, I cringed.
My instincts are to avoid debt at all costs. But our instincts aren't always right.
I'm realizing the same thing while transitioning my side projects to be more business, less project. This means getting out of my developer mindset and into my entrepreneur mindset, which can be really tough.
I tweeted a list of things that were hardest for me, and a software engineer replied to my first bullet, "tech debt is good."
I think this point is worth expanding on, as my instinct is to side with Rodrigo here.
Just like regular debt, tech debt feels bad. But as I mentioned earlier, not all debt is created equal.
There are two categories of debt:
- Good debt
- Bad debt
Good debt can help you, bad debt generally hurts you. This article from Investopedia titled Good Debt vs. Bad Debt talks about some of the nuances, but their summary is perfect for this discussion:
Good debt has the potential to increase your net worth or improve your quality of life. Bad debt involves borrowing money to purchase rapidly depreciating assets or only for consumption. Determining whether a debt is good or bad sometimes depends on an individual's financial situation, including how much they can afford to lose. — Good Debt vs. Bad Debt
So how do we decide if something is "good debt"? Well it's a little tricky. Let's look into a mortgage as an example.
Is a mortgage good debt?
The general answer is yes, but there are lots of qualifying factors to that yes.
And if debt is scary, why use a mortgage at all?
To start, it would take a very long time to save enough cash to buy a home. According to Zillow, the typical home in Travis County (Austin, TX) goes for $506,074. I'd have to skip out on quite a few lattes to save that much money.
Debt is simply a financial tool to move up your future earnings to the present moment with a slight fee. If you can afford the fees and you're using the debt to pay for an asset, it's likely considered good debt.
Questions to figure out if a loan is good debt:
- Am I going to be able to repay this loan?
- Will this strain my finances?
- Do I already have lots of other debt?
- Am I going to stay in this house for 3-5 years or more?
- What's my credit score?
- Is this a depreciating asset (car, clothing, computer)?
Many financial advisers will tell you that the amount you can spend on a house should be guided by your debt-to-income ratio (DTI).
Use this calculator from NerdWallet as a good starting point:
If you're within your budget, have a good credit score, and plan not to move for a while, there's a chance buying a home is a great investment for you. This would be considered good debt.
What would be considered bad debt? "Buying more house than you can afford" speaks to exactly that. If you're stretching your debt-to-income ratio, creating monthly payments that are too high, or paying insane interest rates, buying a home can be considered bad debt.
So what about tech debt?
Tech debt is simply a subset of regular debt, but instead of borrowing from our future earnings, we're borrowing from our future dev time.
Good tech debt can be a tool to save money, time, and effort. I've previously written about how only 30% of incorporated businesses make it to the 10-year mark and barely over half make it to five years.
If businesses are only making it this far, how long do you think the feature you're about to code will last? If it's a greenfield project, what are the odds the project finds product-market fit?
We're talking about the decisions that live in quadrant one of Martin Fowler's Technical Debt Quadrant — deliberate and prudent debt. Because we need feedback from the market, we need to ship. Like I said earlier, you are likely not your target customer. De-risking your project as quickly as possible. Don't worry about having the cleanest code. Why? You might throw it all away.
Deliberate and prudent technical debt is most likely "good tech debt". Deliberate and reckless technical debt can end up being good, but is more of a gamble.
Throwing away code
I've worked at several companies where entire codebases have been thrown away, complete projects killed, and entire departments laid off. This is the reality for most projects. Very few businesses make it to the default alive state.
Business is a lot like batting in baseball, winning one out of three times is considered phenomenal.
Assume one in three features/projects sticks around. Does that change how you think about tech debt?
Instead of being scared of tech debt, think of it as a tool to borrow from your future dev time. If your business or project succeeds, great. You should be able to pay down the loan. If it fails? Throw away the code and know you saved yourself time and frustration.
If you do succeed and your project lives, you will have more experience, there will be fewer unknown variables, and you'll be better equipped to solve the technical challenges ahead of you.
If you take a shortcut, and the project fails due to non-technical reasons, was it a shortcut?
So what's the takeaway?
So go forth and write scrappy code in your new projects (you'll be able to get rid of it later if your project is still around).
This is not permission to add tech debt in proven business units. There is bad tech debt, and it largely looks like bad financial debt. It will slow you down, stop you from hitting your goals, and weigh on your motivation. Pay down this debt aggressively, the same way you'd aggressively pay down credit card debt.
- U.S. Bureau of Labor Statistics data
- I previously wrote How I Pick My Tech Stack for Side Projects
- House calculator from NerdWallet
- Good Debt vs. Bad Debt
- Martin Fowler's Technical Debt Quadrant