The reality of owning a small business means having to prioritize where your time, money, and manpower are spent on a day-to-day basis. From a stakeholder perspective, the focus tends to be on new features and products that you can offer to clients. But, while stakeholders may be pushing for new developments, there could be a bigger, underlying problem that is creating significant headwinds on your company’s ability to grow: technical debt.
Technical debt — also known as tech debt or code debt — is what happens when software developers prioritize speed and new builds over perfect code. With that definition alone, it may sound like something you’d want to avoid at all costs, but the reality is that tech debt is often an unavoidable part of software development. Especially with client-facing small businesses, technical debt is inevitable when new features need to be rolled out to clients as efficiently as possible.
The problem with tech debt is that it can easily transition from a small but manageable annoyance to an exponentially increasing money pit. Much like fixing the foundation in your home, tackling technical debt is not the most exciting or glamorous job, but it is undoubtedly necessary. Without that stronger foundation, everything above it will be weaker and will cause your business to suffer financially.
In a study of 200+ engineers, 60% reported that tech debt causes bugs, outages, and an overall slowdown in the product development process. Additionally, 66% said that they believe the velocity of development could increase by 100% with tech debt being properly managed with another 15% believing they could be 200% more productive. These numbers are just the tip of the iceberg when it comes to the effect technical debt could be having on your business.
When it comes to deciding where dev resources are devoted, oftentimes stakeholders want the shiny new features because they think it's going to help the business. However, this is without realizing just how much technical debt is hurting the existing product. In order to communicate the importance of eliminating tech debt to stakeholders, developers can express how much time is being wasted and the amount of money the company is losing as long as technical debt remains un-handled. Once stakeholders have eyes on those numbers they’ll want to prioritize reducing tech debt just as much as the software engineers — ours did, after all.
To get a full picture of how much money your company is losing to tech debt, you will need to consider the amount of time that is being lost to slow internal systems across the company as well as engineering hours spent fixing bugs and other bad code. At Service Direct, we spent the last 16 months tackling the mountain of tech debt that we accrued over the last 16 years. Prior to that, engineers at our company would have to stop in the middle of a project a minimum of 5 times per week to manage server load. This is only one of many ways that tech debt was costing our company time, and subsequently money.
Of course, it stands to be mentioned that technical debt could be costing you a lot more time than is even quantifiable. When a developer has to stop what they are doing to fix an issue or wait for a build to kick off, or when an employee has to wait 10+ minutes for an overloaded process to run, it can take over 23 minutes for that person to get back on track. However much time lost you are able to calculate due to tech debt, chances are that number is even higher than you think.
A 2018 study estimated that technical debt from bad code is costing companies $85 billion worldwide. Take a minute to let that sink in. Then take another minute to think about how much bigger that number has gotten in the 4 years since the study was conducted. It’s safe to say that if you run a small business with any sort of digital interface you are looking at a knee-shakingly high opportunity cost lost.
When your dev team is ready to begin tackling technical debt on a company-wide scale, the first thing you need to do is identify where the majority of the tech debt is located and how much of it there is. There are a number of metrics that can be used to quantify your company’s technical debt. It’s recommended that you use multiple data points to get the best picture of prioritization and plan of attack.
Code quality is exactly what it sounds like: the measure of how “good” or “bad” your code is. Code quality changes depending on your industry and what your code is trying to do, but no matter what industry you are in, code quality is a powerful indicator of how much technical debt you have accrued.
While there are many ways to manually measure your code quality, we think that there are better ways to use your internal resources (*cough* actively reducing tech debt *cough*). Fortunately, there are many tools that you can run your code through to determine code quality and decide what direction you want to move in regarding improving it.
The number of bugs in your code is most likely related to code quality, which in turn can be an identifier of technical debt. If your ratio of new bugs to closed bugs is high, that is an indicator that your company may have accrued a high level of tech debt. Consistent monitoring of the number of bugs that crop up is a simple and effective way to keep an eye on your tech debt and make sure that it is not getting out of hand. It also takes dev-hours to fix those bugs, which further increases the lost opportunity cost due to tech debt for your company.
When you begin to tackle technical debt, it can be easy to try to attack many problems at once, especially for efficiency’s sake. We made this mistake ourselves — we tried to push too much into one project, which meant that when issues inevitably surfaced, it was grueling to figure out how to fix them. Ultimately, the fewer fires you start, the easier it is to control the damage without it spreading into an uncontrollable wildfire. In other words, you become exponentially less confident in the code the more changes you make, so keep them small and contained to avoid having to undo a ton of work and waste even more time. Keeping things small also allows you to put better QA practices around the software development process by ensuring you have bite-sized pieces to build, test and deploy.
52% of engineers feel that technical debt negatively impacts their team morale. In any team, it’s important to keep morale up, but especially in software development when long days can be followed by long nights with no end in sight. Our team found that in ongoing, long-term projects, morale can be boosted by celebrating milestones regardless of how much farther there is to go. Over the year and a half that we spent reducing our technical debt, our dev team reflected on and celebrated their progress with the rest of the company at weekly meetings designed to acknowledge little wins and successes.
Despite the fact that we have been able to reduce our technical debt, it will inevitably build up again. As a business, you can’t stop innovation for the sake of writing perfect code or ensuring that there is no technical debt. Whether you have hired an offshore development team or your entire engineering team is in-house, tech debt is simply part of the cost of building code. However, you can mitigate the tech debt by putting processes in place to keep track and manage it little by little.
16 years ago when we began developing the Service Direct product, we had 2 engineers whose main focus was quickly building a system to serve our customers. Needless to say, documentation and streamlining weren’t priorities back then. But what happens when 1 or both engineers move on and take their knowledge of the code they wrote with them? Think about it as if your home’s pipes could go through wormholes — you have to search around your whole house to figure out where everything is to make the necessary repairs. That’s what it’s like working in an internal system without documentation or efficient code.
This time around, we’re avoiding this process with quality documentation and external code libraries. The idea is that any new engineer could come in and figure out exactly where every major piece of code is and what changes have been made in order to tackle problems and make easy upgrades.
No matter what industry you are in, successful internal communication is one of the biggest keys to success in the business world. So many small businesses are swimming in technical debt due to a lack of communication between the engineering team and the stakeholders. It’s difficult to communicate exactly why engineers should be putting significant man-hours into fixing what already exists—and is seemingly working just fine—when what stakeholders really want are new features and visible upgrades. But, if there’s one thing we all know to be true about business, it’s that money talks.
Quantifying your tech debt is a surefire way to make your stakeholders do a double-take and quickly agree that reducing tech debt is a priority and a necessity. Additionally, it’s important that engineers are communicating with employees to see if there are any processes that are being limited by the internal system. In short, communication is king and, with the right tools, incentives, and numbers, it’s what will get everyone on the same page.