In the world of web and coding, you will hear the term technical debt banded around a lot. It’s one of those terms that you’d be forgiven for thinking is just something web developers use to sound knowledgeable. What does it actually mean? What is technical debt?
In this article we explore exactly that and hope to answer some frequently asked question surrounding the term technical debt.
A quick Google search for “What Is Technical Debt?” returns a bazillion results. Alright, maybe not that many – but it’s a lot. Let’s break it down.
Wikipedia has a very nice definition.
Technical debt (also known as design debt or code debt) is a concept in software development that reflects the implied cost of additional rework caused by choosing an easy (limited) solution now instead of using a better approach that would take longer.Wikipedia
So, let’s apply that to building a website and in particular – building a WordPress website.
In short, technical debt is when a decision today, leads to additional work in the future. It is when work is required to undo or correct previous development. Development that was done in a manner without thought or consideration for future growth.
Basically, it’s taking the quick and easy option. Often, cheaper priced but more costly in the long run.
As with any kind of debt, the only way to get rid of it is with time and money. And yes, there are interest payments to make.
Let’s run this scenario. You’ve got a site and you wanted to add a blog. It’s built quickly and cheaply, incurring technical debt as a result. An example might be a feature to allow users to favourite articles or add them to a reading list.
The feature is built but the way the saved posts are stored doesn’t scale due to every post in the database being checked against the saved posts list. It works if the site has a few hundred posts but as the blog grows, the check becomes slower and slower.
Now, you’d like to add some new features to the blog. For argument’s sake, we’ll say it’s $1,000 of work. But, upon investigation the developers discover the poorly conceived saved posts feature.
The developers report back that there are two options available:
Adding to the system is a terrible idea. While it’s the quicker and cheaper option, it still has a higher price and all it does is get you further into debt. On this occasion, it might cost $1,200. That $200 is the interest you’re paying on your technical debt. The issue here is, next time you want to $1,000 of work on the blog, the price might be $1,800. You never actually pay off the capital of the debt. Furthermore, the whole system becomes more unreliable with each development round.
You might think, why would anyone ever consider the first option? Well, money. Can you afford to clear the technical debt because that’s what option 2 is all about. To pay off the debt, you must first rebuild the blog from the ground up and then pay for the new features. As you can see, the cost of the blog has ballooned. You end up paying for the same thing twice. However, you are then clear of any technical debt.
It’s actually very easy to avoid ever going into technical debt. All it requires is a little foresight and planning. The bulk of the responsibility for this falls to the developers. They should be asking questions about future plans and the site’s growth. More importantly, they should be building sites in a manner where they are easily maintained and extended.
Sadly, many times a site is built with this sort of technical debt at its core. The developers can lack the expertise to build an extendable site that scales or are simply more interested in getting paid as quickly as possible. As such, they just see the job in front of them and build for that and that alone. They don’t think about or care about future development and how today’s work, might impact tomorrow’s.
Such an attitude results in massive technical debt. We’ve seen it before when a developer ignores the rest of the code base and adds unnecessary code because it’s quicker and easier than understanding the existing architecture.
Good project management and developers with business sense are critical to avoiding technical debt. As such, it is important to pick a development team that takes an interest in your success beyond the job they’re being hired to complete.