What Does Technical Debt Look Like?
08 December 2020 2 min read
Technical debt can be defined as the work that you delay today but have to do tomorrow. In software development, it refers to the idea that some important work is not implemented for a deliverable, but it has to be done in the future. Basically, prioritizing a speedy delivery over code quality.
How to Quantify Technical Debt?
Technical debt is an important aspect of software development. Having a lot of technical debt can lead to issues and incurring costs in the future. Quantifying it can help us understand a threshold and manage it in a more efficient manner.
Computing a number to reflect technical debt needs a lot of consideration. There are multiple variables that can play a role in code quality, including complexities, lines of code, inheritance, nesting depth and much more. Therefore, with so many factors to consider, it can be challenging to derive a number.
To ease the problem, technical debt is represented as a ratio of Remediation cost (cost to fix a system) and Development cost (cost of developing).
Technical debt ratio (TDR) = Remediation cost/development cost x 100%
How to Address Technical Debt?
Technical debt should stay under a certain limit to allow for easy management and development of the software. There are several techniques that can be employed to keep it in check:
✔️ Define technical debt and set a threshold
✔️ Prioritize the debt tasks
✔️ Use agile development
✔️ Have regular meetings with the engineers and owners
✔️ Set a standard for coding
✔️ Automated testing
✔️ Refactoring code
The first four techniques come under the prevention of technical debt, while the remaining three are for repaying the technical debt.
How much Technical Debt is Acceptable?
Technical debt is a pressing issue in the software development world. However, the phenomenon is inevitable, especially as the development projects get larger. Hypothetically, technical debt can be reduced to zero, however that is never the case in real life. There are always situations where you have to prioritize speed over quality.
Having a debt is not an issue as long as it is being properly managed and maintained. Your technical debt should not exceed a certain set threshold and your developers should be actively repaying it as well.
Ask your programmers to keep track of the dependencies in your code and the technical debt sections that can have an impact on other functionality of the system. If you have a large amount of technical debt in one sub feature that is not used occasionally in the whole system, it is still relatively non-critical, as compared to a lesser technical debt in a more important sub system.
Therefore, set a benchmark for the amount of debt you can tolerate and ask your developers to adhere to it.