“Technical debt” describes the trade-off between delivering new features quickly and having a robust, reliable system.

It’s an inevitable part of the software development process, but we must manage it properly.

In this article, I’m going to cover…

Modern engineering teams can radically improve performance by understanding these different types of tech debt and how to manage them. Those performance gains include code quality, productivity, morale, and reducing the negative impacts of technical debt.

The First Type of Tech Debt: Code Debt (the big one)

Code debt is the technical debt that accumulates when software development teams cut corners in code production.

Code debt occurs when engineers use shortcuts, increasing complexity that must be addressed later. This complexity can be difficult and expensive to pay off over time, as existing technical debt and code must be refactored or replaced with a better solution.

In some cases, neglecting to address code debt can lead to bugs and security issues in the future.

Four Types of Code Debt

Martin Fowler, a well-known software development expert, has described four types of code debt. He invented the technical debt quadrant to explain the complex matter of technical debt and how to classify it.

How to Fix Technical Debt in Your Codebase

Here are three practical strategies you can implement to avoid technical debt in your codebase.

It might be tempting to fix easier, low-hanging fruit. However, these issues have a negligible impact on code quality. They might even be undone by the adverse effects of not prioritizing high-quality issues.

Technical debt can slow down development processes, making it difficult to deliver new features. To maintain feature velocity as your codebase grows, you should commit 15-20% of your resources to address technical debt each sprint.

The Second Type of Tech Debt: Documentation

Documentation is an essential aspect of your product and provides information about its design, core logic, and functioning.

Inaccurate or incomplete documentation can lead to confusion or misunderstandings among your team members.

For instance, developers might make wrong assumptions about the code when your documentation is outdated. They then accidentally introduce bugs or new code debt.

Avoid documentation debt by implementing a documentation process. Regularly reviewing your documentation or for each release ensures your documentation stays in sync with your code.

The Third Type of Tech Debt: Security

You accumulate security tech debt when you accrue security vulnerabilities through your software development process. Neglecting this type of technical debt can have severe consequences for your company and its customers if malicious actors exploit it.

The best practices for addressing security technical debt involve proactive risk management, regular security reviews, continuous testing and monitoring, and continuous education.

The Fourth Type of Tech Debt: Engineering Tooling

Engineering tooling refers to the various tools and technologies you use within your engineering team. Not documenting essential processes related to your engineering tooling may lead to engineering tooling debt.

For instance, you need a formal process document describing how to tag and release a new code version. Otherwise, each developer has their own approach to releasing code, creating a window of opportunity for mistakes. To give a concrete example, an engineer might forget to execute end-to-end tests, unknowingly releasing code that contains bugs.

It’s crucial to write down important processes related to engineering tooling and teach engineers how to use the tool.

Wrapping Up

Technical debt can be persistent once you encounter it. There are many types of technical debt you should look out for. The most apparent type of technical debt is code debt. However, you can also encounter documentation, security, or engineering tool debt.

Modern engineering teams absolutely should accumulate tech debt. That tech debt should be taken on both deliberately and prudently. Manage tech debt properly using the right tools.


Also published here.