Glossary Background Image

No Bad Questions About Software Development

Definition of Technical debt

What is technical debt?

Technical debt, also called tech debt or code debt, refers to the time and resources a company will spend later on refactoring old code due to prioritizing faster deployment over quality during development. Technical debt can also occur as a result of gaining new experience and expertise and updating code to meet current trends and expectations.

Are there different types of technical debt?

There are two approaches to classifying technical debt: by intent or nature. Intent includes three categories: intentional, unintentional, and unavoidable. Nature currently includes 13 categories of classification. Proper identification of technical debt can help a company make strategic decisions on properly managing its debt.

  • Planned technical debt. An informed decision is made to accept the risks and costs of releasing a product early and the decision-makers understand the compromises involved.
  • Unintentional technical debt. A company hasn’t developed an effective workflow, resulting in poor communication between developers and other team members. Their developers may also be inexperienced in new coding techniques.

The 13 categories for classifying tech debt by nature include:

  • Architecture debt
  • Build debt
  • Code debt
  • Defect debt
  • Design debt
  • Documentation debt
  • Infrastructure debt
  • People debt
  • Process debt
  • Requirement debt
  • Service debt
  • Test automation debt
  • Test debt

Debt in these areas can also be intentional or unintentional, and using this approach helps companies identify where debt will or could occur, as well as where to focus resources for reducing their debt.

What factors lead to tech debt buildup?

Tech debt is generally caused by three factors: time constraints, market changes, and outdated technology. When a company sacrifices quality to meet a release’s deadline, it creates tech debt. As markets and technology change, companies adopt solutions to meet these developments and update code to include new libraries and infrastructure.

  • Time pressure. Developers often face pressure to deliver a product on time. This might lead to the deployment of apps that are not fully featured or that contain bugs. Development teams may sacrifice an app’s performance to get to market as quickly as possible.
  • Market change. Even if a team releases a fully-featured app, they might face changes in customer expectations. Later, they may encounter new market opportunities that prove challenging.
  • Outdated technology. Several coding languages, developer frameworks, and libraries are needed to develop an application, and they become obsolete over time.

Is tech debt bad?

As a natural part of developing code, tech debt can be managed properly so that it won’t cause harm to a business. If not managed, tech debt can cause problems such as extended page loading times, lagging apps, and product downtime.

Tech debt is almost always unavoidable when there's a compromise between speed, cost, and quality. However, it can be a symptom of deeper problems within a company, such as poor engineering practices or efficient workflows. Like financial debt, the mere presence of tech debt isn’t bad, but a company needs to avoid letting its debt grow out of control and stifle growth.

Moreover, technical debt — just like any other form of debt — accumulates interest that makes new feature releases more expensive and less stable. As a result, a team will waste time on compatibility issues and bugs instead of focusing on the development of new functions.

Key Takeaways

  • Technical, or tech, debt is the time spent in the future on refactoring code due to compromises on quality to achieve speed.
  • Tech debt can be classified as intentional or unintentional, depending on how well a company understands the risks involved in speeding up the deployment of a product.
  • Companies accumulate tech debt due to time constraints as well as changes and developments in the market and technology.
  • If managed properly, tech debt won’t harm a company in the long term, while debt that is ignored will lead to severe consequences.

More terms related to Software Development