What is technical debt?

📍 Technical Debt (or “tech debt”) TLDR: The more code you write, the more code you have to maintain.

What is tech debt?

What is technical debt?

Technical debt (tech debt) is a concept in software development that refers to the cost of maintaining and updating code.

Tech debt is inspired by financial debt. When you’re in financial debt, and you pay it back quickly, you pay mostly principal with a little bit of interest - the rest of your money is free to spend how you like. However, if you do not pay off your debt early and often, you accrue interest, making your debt more expensive to pay off over time. Once you eventually start paying off long-avoided debt, you have less to spend freely, as all your cash goes toward paying off interest.

The same is true with technical debt.

If you were to ask the internet (read: ChaptGPT) you will get an answer that looks like this:

Tech debt refers to the accumulated cost of shortcuts, trade-offs, and compromises made in the development of software systems. It arises when development teams prioritize short-term benefits over long-term goals, leading to the accumulation of technical deficiencies that need to be fixed in the future. Tech debt can slow down development, increase maintenance costs, and reduce the reliability, scalability, and security of software systems.

While we don’t disagree that taking shortcuts will quickly deliver tech debt on a silver platter, we don’t agree that’s the whole story. There are sometimes inescapable reasons you’ll accrue debt that have nothing to do with cutting corners.

Consider this: A mom paints her kid’s room their favorite color when they get to middle school. The paint job is spotless. She could go pro. She even splurged for the premium paint brand. Within one year, her kid accidentally knocked a hole in the wall, a water leak ruined one of the corners, and, to no one’s surprise, her kid decided they hate the color now (sigh). She didn’t cut corners - she just has to pay the cost of upkeep and change.

Similarly, there are three main ways your code can accrue debt that have nothing to do with cutting corners, but that you’ll still need to address.

3 ways your tech accrues debt that has nothing to do with cutting corners

(1) Your business changes

As your business grows, the problem you’re solving will change or your approach to the solution will change. Code is business logic, so when your business logic changes you’ll want to update your code logic to reflect the logic of the business. For example, you may have called your customers “teachers” in the first year of your business, but now your company calls them “coaches.” While this is a minor example, add a few more deviations, and your code logic can become unrecognizable from the business logic your company touts - and difficult if not impossible for engineers to understand without lots of additional explanation (and someone who still holds that explanation in their head).

(2) Your code has dependencies

I know what you're thinking… my code is custom. It doesn't depend on anybody! Well, you're wrong. Modern software is built on top of decades of code libraries, frameworks, and components; and software is often enhanced through external APIs that sync with other programs. These are what we call dependencies. When those dependencies get updated by third parties, your code is at risk of having security bugs and not being compatible with newer tools and features. In the worst-case scenarios, your software could flat-out stop working.

Technology advancement has come through developers building upon foundations built by previous developers. This affords both great progress and introduces risk when not maintained (as illustrated by xkcd)

(3) Bug Fixes

Whenever you build new features, you introduce new bugs that require more focus on bug fixes.

For anyone who thinks their app needs to be perfect and chides their developers for bugs - Pull out your phone, go to the app store, and see how many times your favorite app has released updates to fix bugs. This is simply how it goes.

Bugs are a promise of software development and time to fix them should be factored into your process. Powering ahead constantly with new features and not allowing for time to fix bugs is not a sustainable rhythm that will ultimately leave you paying a high-interest rate.

A final word of advice on tech debt

No one likes paying interest. Don’t let your tech get out of date and pay off your debt quickly.

But don’t take our word for it

💡 If you want to learn from the man who invented the concept of tech debt (and part of the internet), check out this video.

💡 And if you’d like to spend some time floating in the sea of maintenance, check out this Freakonomics episode on the subject.

Have some tech debt you need to pay down but not sure how?

Book a call with our team by emailing hello@thinknimble.com and learn more about the risks of your particular technical debt and how you can begin paying it down.


Enjoy this article? Sign up for more CTO Insights delivered right to your inbox.

Previous
Previous

An Introduction to Software Quality Attributes for Non-Technical Founders

Next
Next

Is your tech moving your business forward?