Technical Debt

Technical debt is a burden software developers face from old source code and architectural decisions. It can range from poorly-written functions to frameworks that are no longer supported. In some cases, technical debt can be handled by rewriting code, while in others, developers may need to rewrite entire programs.

Avoiding Technical Debt

The best way to manage technical debt is to avoid accumulating it in the first place. This begins with architecting a program with a long-term plan. A wise software engineer will design an application for the future, not just the current state of software and hardware. Choosing "future-proof" programming languages and reliable frameworks are two important decisions in the architectural process.

It is also necessary to follow good coding practices to avoid technical debt. For example, if the same logic is repeated multiple times within a program, it should be consolidated into a single class or function. Otherwise, it will be more difficult to locate and update each instance in the future, especially if new developers are working on the project. Commenting code is also essential for reviewing and updating code in the future.

Managing Technical Debt

The two main ways to manage technical debt are to rewrite sections of code or start from scratch. The best route depends on the size of the project and the amount of technical debt.

1. Rewriting code

Rewriting or "refactoring" code is the most common way to handle technical debt. For example, a senior developer may review code written by a junior developer and find ways to optimize performance. It may also be necessary to update deprecated functions so that the code can run on a newer platform. In some cases, large portions of code may need to be rewritten to work with a new API. These types of updates are common in the programming world and are one of the reasons why developers release new versions.

2. Starting from scratch

If the amount of technical debt is large enough, it may require more time to update the code than to write new a new program from scratch. In some cases, it may be necessary to re-code an application in a new programming language that is compatible with modern software compilers. Rebuilding an app from scratch is a significant investment, but it may provide additional benefits. For example, a new application can take advantage of the latest hardware technologies and modern user interface elements.

Updated June 20, 2020 by Per C.

quizTest Your Knowledge

Which language is designed to enable parallel processing?

Correct! Incorrect!     View the OpenCL definition.
More Quizzes →

The Tech Terms Computer Dictionary

The definition of Technical Debt on this page is an original definition written by the team. If you would like to reference this page or cite this definition, please use the green citation links above.

The goal of is to explain computer terminology in a way that is easy to understand. We strive for simplicity and accuracy with every definition we publish. If you have feedback about this definition or would like to suggest a new technical term, please contact us.

Sign up for the free TechTerms Newsletter

How often would you like to receive an email?

You can unsubscribe or change your frequency setting at any time using the links available in each email.

Questions? Please contact us.