Tech Debt

Introduction

As typical consumers, we became very familiar with the concept of financial debt. This type of debt gets incurred when money is borrowed to make a purchase, as seen in the usage of credit cards. Debt, when utilized responsibly, allows spenders to make large purchases and pay them off over time. But when it is accumulated irresponsibly, it leads to disastrous long-term financial effects. Similarly, tech debt can be constructive when utilized responsibly, but hammers home significant consequences for a business when it is unmonitored and unchecked. So what exactly is tech debt, and how can a business better monitor and reduce it?

What is Tech Debt?

Tech debt can be described as the tradeoff between completing a project quickly and the long-term benefits of taking the time to develop a more sustainable process. Essentially, tech debt accumulates when shortcuts are taken to complete a task. Pressure to rely on shortcuts can have many sources. Tight deadlines, lack of knowledge, and lack of support are just a few of the reasons businesses may resort to these short-term solutions that turn out to be unsustainable. 

 

The concept of tech debt is typically applied in tech development environments, but it is also relevant to business management. Instead of measuring flow velocity and time-to-market as in a development setting, business leaders can examine their business’ day-to-day operations. Shortcuts or “time-saving methods” frequently become fully integrated into the operations of a business. Consequently, they become increasingly difficult to identify and address.  Fortunately, as we will discuss later, there are key indicators to look out for when attempting to spot tech debt. 

 

Properly utilizing a controlled amount of tech debt can be beneficial to a service or product by speeding up process times, but it is important to recognize how this may affect customer experience. Furthermore, promptly paying off the debt is crucial to ensuring long-term success. 

Categories of Tech Debt 

The different types of tech debt can effectively be organized into four categories. To determine which category an instance of tech debt fits into, you can ask two questions. Is this case deliberate or inadvertent? And is it prudent or reckless? 

 

Deliberate vs. Inadvertent – This dichotomy dictates whether or not the team making the decision knows that tech debt is being taken on. 

Prudent vs. Reckless – Taking on tech debt can be considered as prudent when decision-makers take the time to fully understand the cost of the debt (e.g., expected time of resolution, financial cost). 

 

Now that these terms have been properly defined, it is much easier to categorize examples of tech debt into quadrants

 

Deliberate and Reckless – In this case, developers or business owners know they are creating tech debt, but are not fully aware of the extent of the debt. Pressure to meet deadlines often leads decision-makers to release products or services with just enough functionality to appease their target audience without considering the long-term consequences of the underdeveloped product. 

 

Inadvertent and Reckless – This category of tech debt is the most easily attributed to negligence. Businesses incur this type of debt by not properly preparing for the task at hand. Ignorance should not be an acceptable excuse for poor maintainability or deficient functionality. 

 

Deliberate and Prudent – Using this approach to incurring tech debt requires careful planning for the future and weighing risks against rewards. This means quickly completing a minimally-viable project and then continually working to streamline processes, add features, and fix defects. The deliberate and prudent approach is predicated on most of this future work being laid out in preparation for the initial completion. 

 

Inadvertent and Prudent – Unfortunately, even the best-laid plans still go awry when making decisions to release a product or service.  This category of tech debt arises when you learn a better approach to a process during its lifetime. It is practically impossible to predict what you will learn during the lifetime of a product or process. But it is important to make room in advance for these unexpected discoveries so that you are prepared to implement improvements in the future. 

 

Common Examples of Unhealthy Tech Debt

Quick Solutions – One of the most common ways to incur tech debt is by utilizing processes that are quick and easy to implement but without any regard for future considerations. For example, neglecting organization can lead to future confusion. It is easy to put off proper organization to expedite a process, but this will inevitably result in a lengthy clean-up process. Unorganized projects are prone to mistakes and are difficult to decipher. 

 

Poor Scalability – Creating a process or product with no room to rectify issues or expand can create serious problems when attempting to improve a project in the future. For example, running only one or two network cables to a room during a building’s initial construction is much less scalable than running four or five, especially since it requires the same amount of work. If a business plans to support multiple medium-sized teams, then starting in a one-room office would certainly be poorly scalable. 

 

No Backup Plan – Failing to devise a backup plan is a particularly dangerous form of tech debt. For each day that a crucial server is run without a backup server in place, tech debt accumulates, as the data to be backed up in the server increases. Eventually, the debt must be paid off, either by finally setting up a backup server or through the downtime created by a crashed server. Furthermore, it is likely that data lost to the server malfunction will not be able to be restored. Overdependence on any one device or person is harmful to the long-term future of any business. 

 

Outdated Systems and Tools –  Over the course of the lifetime of software, developers release improvements that can significantly enhance the functionality of a product. Failing to keep software updated can prevent users from getting the most out of their systems. Furthermore, failing to update software can leave systems vulnerable to exploits and bugs, additionally compounding accumulated tech debt.  In a more general sense, businesses should strive to keep their tools up-to-date to maximize production and efficiency. 

 

Lack of Documentation – Without proper supporting documentation, products and processes can become difficult to improve or work with at all. This is especially relevant in coding, where the functions of a specific portion of code may not be readily apparent. Ambiguous documentation can prevent future teams from fixing issues and making necessary adjustments. Maintaining detailed documentation for phone calls, completed work, inventory, and customer interactions ensures that your team stays on the same page and that no productivity is lost to confusion.        

 

How Does Tech Debt Affect Businesses?

Tech debt can be expected to take shape in the form of lost productivity. Strictly in terms of numbers, the tech debt ratio for a system can be calculated as the ratio of the cost of fixing a system now to the cost of developing it initially.  Development teams typically aim for a tech debt ratio of less than 5%, which generally signifies that a system is in a healthy state. This ratio also illustrates how the accumulation of tech debt along with ill-timed crashes can quickly deteriorate system health. 

 

The two most easily recognizable symptoms of excess tech debt are slower process completion times and a decrease in product quality

 

Inefficient processes caused by insufficient documentation and outdated tools can result in the increase of turnaround times. A very simple example of this effect can be seen in the results of different tools being used by a field technician. Installation completion times would vary wildly based on whether the technician used a regular screwdriver, an old/faulty screw-gun, or a brand new screw-gun. Furthermore, a technician equipped with the proper knowledge to complete a task will certainly complete a job faster than one without. 

 

Obviously, a decrease in product quality should never be ignored. But many business leaders neglect the fact that this may be due to an accumulation of tech debt. Quality decreases may manifest themselves as product defects or negative customer experiences. Failing to maintain a backup server may result in customers losing significant data or being knocked offline for extended periods of time. 

 

How to Manage and Resolve Tech Debt

So how exactly should you manage and resolve tech debt that has accumulated in your business? 

 

Find the Debt

Before you develop a strategy to reduce your tech debt, you have to find the debt first. Pay attention to your team and how they describe their work processes. The expression “for now” is an immediate giveaway that they have set a task aside to complete later. Unfortunately, that shelved task continuously builds up tech debt! 

For example:

  • “It is running okay for now, but we will revisit it later.”
  • “Don’t worry about documentation for now.”

 

Another substantial indicator of tech debt is a critical dependence on any one person or system. If there is only one person on your team who knows how to complete a specific (not security-sensitive) task, chances are that tech debt has accumulated in at least one stage of the process. This concentration of knowledge in one person often points to a lack of documentation in a process. Overdependence on a system or an inflexible process is often just as harmful as reliance on one person. If making a harmless change to a system or daily process completely breaks how you do business, it would be a good idea to start working to fix that program’s shortcomings.

 

Categorize and Appraise the Debt

Listing and analyzing the sources of tech debt in your business is crucial in resolving these issues. Being able to categorize each instance of debt makes it considerably easier to manage the process of “repaying”. For example, in the case of having outdated software, an effective approach could be taking full inventory of all outdated systems and then scheduling updates to each system to minimize downtime. The same approach can be used for backing up data or taking care of inadequate documentation. 

 

Once your tech debt has been inventoried and organized into categories, you can then decide which items require immediate attention. Configuring an automatic backup schedule is a good example of a high-priority task to tackle since the consequences of data loss or downtime can be so dire. On the other hand, updating the documentation for a process that is rarely used would likely be categorized as low-priority. In short, determine the consequences of leaving a debt unpaid to properly assign priority to each task. 

 

Make the Debt Visible

Raising awareness within your organization for the tech debt that needs to be tackled can help ensure that future unnecessary debt is minimized. Additionally, fostering this awareness allows teams to adjust their expectations as these issues are resolved. Time will have to be set aside to address each issue, so increased transparency will be required to explain any postponed projects or workflow slowdowns. 

Log Future Debt

Developing documentation for any future tech debt to be taken on is a crucial part of minimizing harmful debt. Once any potential debt is recognized, ask yourself questions to determine whether it should be taken on at all. What challenges will this debt set you up for in the future? How long can you put off paying back the debt? How does this shortcut benefit us in the short-term?

 

Conclusion  

The long-term sustainability of a company is largely contingent on where its leaders decide to focus their teams’ efforts. Although most tech debt is invisible to customers, its accumulation and eventual payoff never fail to eventually undermine customer experience and developer effort. It will always be worth it to analyze your teams’ focus before your business is overwhelmed by tech debt.

Leave a Comment