How to Manage Technical Debt and Keep the Codebase at the “Low” Tech Debt Level
Just because you debt level is ''low'', doesn't mean it doesn't need to be managed! Learn how to keep your debt under control.
Join the DZone community and get the full member experience.Join For Free
You may also like: The Three Secret Types of Techincal Debt
What defines the Quality of software? The number of bugs and errors. Many people would probably answer this way. But there is a much bigger concept that stands behind the code quality and the ability of developers to implement new features quickly and easily. It is called technical debt.
How can we define tech debt? Technical debt is fueled by numerous issues. Those can be traced to coding practices, documentation, duplication, complexity, test coverage and others. No matter what causes technical debt, tech debt, if not controlled, can have a huge negative impact on project outcomes, thus, on business scalability and profitability. How can we avoid those risks? How can we manage technical debt?
How to Manage Technical Debt?
There is no one right way to control tech debt, but there are basic rules that might be helpful. In order to manage and resolve technical debt, you should understand what you’re dealing with. One of the most reliable sources of information on this issue is talking to your customers. The user’s feedback cannot be overestimated as it helps to understand what works right as well as the obvious vulnerabilities of the company’s software.
Another key element in technical debt management is the effective use of tools that allow detecting tech debt issues. There are plenty of free tools providing useful information on tech debt as well as paid ones which enable more detail code checks. Among those tools – JDepend, SonarQube, Teamscale, ReSharper, Bliss and many more. QArea has also developed its own easy-to-use tool for measuring technical debt dynamics which is called Code Quality.
Without a doubt, technical debt metrics give us a solid ground for indicating software issues but those numbers alone are not enough. At the same time, it is more than possible that the developers are aware or can sense the issues that cannot be detected automatically. So one of the most infallible methods of “catching” technical debt is communication with the development team.
After you have identified the tech debt it is always a good idea to collect all related issues in a tech debt list or in the backlog. Documenting this data will make tech debt more visible, structured and understandable.
Knowing where your debt is hidden is a good start. You must reevaluate it from time to time in order to distinguish real critical issues and pay the debt down. While dealing with tech debt you should realize that some deficiencies may not cause any problems for years but some debt must be repaid immediately. The longer the debt remains – the higher the price you will pay in the future.
In addition, there are some other options that can help manage technical debt effectively. When it comes to fighting technical debt, collective efforts are crucial. It is very important to build the right culture in the team where both developers and managers recognize the danger of tech debt and ready to fight it. The company should also incorporate the philosophy of high quality which might help not only to resolve the existing problems but to prevent the new technical debt.
What Is Tech Debt in Agile?
Tech debt in Agile (as in general) is the sum of software errors and other issues that need to be resolved but were put off to a later time. What is tech debt in Scrum? Scrum is an Agile framework that provides the right environment for the teams to handle technical debt issues. Even if you track tech debt intentionally it will influence both production speed and the estimates of PBIs.
Therefore, it often makes sense to track tech debt on the Product Backlog. It is also suggested to prioritize tech debt issues and move them to the Sprint backlog from time to time. In this case, the developers work on technical debt like on any other story in the sprint.
Scrum teams see technical debt just like any other type of work that has to be done. This approach helps to identify what tasks to be performed during the project to resolve tech debt issues. Tracking tech debt in Product Backlog provides the Product Owner the opportunity to prioritize between new features and tech debt depending on the company strategy. This approach also enables to keep the tech debt transparent as well as helps communicate it to a non-technical audience.
How to Keep Codebase at “Low” Tech Debt Level?
Like financial debt, technical debt is not necessarily a bad thing. In some cases, the decision to accept a technical debt is the only way to achieve your short term goals – like meeting a deadline or delivering the product to the market fast.
In the long term, it is very important not to compromise and keep your product quality under control. How to make it right? How to keep the codebase at a “low” technical debt level? And how much resources should be dedicated to chasing the tech debt issues? There’s no single formula for success in managing tech debt.
There is no specific number of developers as well as there is no clear budget for this purpose. Each case is unique.
“But what really matters is to understand the quality dynamics of code development. That understanding will give you the ability to react immediately if tech debt starts to grow,”
— Alex Gostev, Project Portfolio Manager at QArea says.
It’s hard to argue with that.
Published at DZone with permission of Andrew Smith. See the original article here.
Opinions expressed by DZone contributors are their own.