How To Manage Technical Debt
17 February 2021 4 min read
A Software Development Lifecycle (SDLC) consists of several phases. All of these phases are necessary for the prompt and proper delivery of the software. However, it doesn’t necessarily mean that every software delivered to the client is debt-free.
The problem of technical debt is a recurring issue in Development Teams and this is often seen as something negative as it happens to be one of the greatest de-motivating & frustrating concepts for the entire team.
Technical Debt arises from the quick and dirty decisions made by the development team and also refers to the additional development cost implied due to reworking the whole code. Our goal here is not to discuss the definition of technical debt, rather, it is all about how we can efficiently manage technical debt.
The first and foremost thing is to take initiative and responsibility as a developer
Generally, the business people and developers are not on the same page. While it is true that the ‘business people’ keep on promising new features to the client without discussing with the developers, it is also worth noting that this is one of the sources of revenue of the company and it is really important to grab these chances to keep the company going.
On the other hand, this is not the fault of the developers because they have to incorporate the promised features. But this doesn’t mean no one will take responsibility for technical debt. The onus for this lies with the developers. While making estimates about product delivery and features, developers must make a correct estimate, not only for the additional features, but include the time for writing well maintained, correctly documented, and production-ready code.
Also, when as a team, they feel that code quality is not up to the mark, it’s time to take a back step. Add with that, it’s vital to include the talks of technical debt with all of the stakeholders, so that they have a better idea of what to expect down the line. But at the same time, it’s important to stay emphatic to the needs of the client and the product manager.
All in all, there is a scope for negotiations to include the additional time for avoiding ‘technical debt’ and the development teams should try their best to convince all the necessary stakeholders.
Reducing Technical Debt via Agile Methodology
Approximately, all of the IT Development Teams have now moved on to the Agile Framework. Agile Framework helps to keep a check on the technical debt. Traditionally, when the waterfall model was in place, software when marked as done, would mean it was good enough to go to the QA team for testing purposes.
Since there was no concept of iteration in the waterfall model, bugs used to creep in and it used to go unnoticed since all the testing used to happen at last ie just before delivering the software finally to the customer. This led to an increase in Technical Debt since the development team had to redo certain parts of the code if it was not working fine.
Add to that, there was a possibility that while making changes to the code, some other part of the code might break which was working perfectly fine. So, all in all, the development had to put in more effort to deliver the complete software.
However, with Agile Methodology in place, things have taken a U-turn for the better. In Agile, things go down iteratively and the emphasis is laid on Automatic Testing, feature branching workflows, and continuous integration. Since the idea is to ship features at the end of every iteration, so naturally, testing also happens at the end of every sprint. This makes sure that technical debt always remains in control as bugs and errors are rectified very soon and there is no compromise on the quality.
Using Code Metrics to avoid Technical Debt
There are certain metrics that we use to manage technical debt. Some of them are mentioned below:
Bug BurnDown Chart
Development and Quality Assurance Teams use the Bug Burndown chart to track the completion of a set of bugs by a certain date and to monitor the progress that gives them an idea of the work remaining over time. Burndown chart shows an approximate completion date and therefore helps to keep a track of the bugs resolved and gives them a fair idea about how much extra effort the development team will need to put in to deliver the software successfully.
Cost of Delay
Deadlines are very tight in the software industry. This metric helps to keep a track of how much time the team loses due to technical debt.
A good code is a code that is properly tested. The percentage of code covered by unit test cases is known as Code Coverage. Anything in the range of 80-90% is considered to be a good metric by the Development Team.
The biggest advantage of using Code Coverage as a metric is that when the coverage falls below 80% or the percentage of code coverage is continuously dropping over time, it gives the development team a hint that they need to devote more resources towards Test Driven Development and cover the untested areas.
Technical Debt is a tradeoff between developing perfect as well as well-tested products and delivering products under a strict deadline. While both of these things have their merit, Technical Debt, perse, always doesn’t refer to a negative circumstance. The situation, the development team is currently in, is also to be taken into consideration while announcing whether the circumstance is a technical debt or not.
We now hope you now have an idea of what technical debt is and how to resolve the same. Technical Debt, if left unhandled for a long time can prove detrimental to the progress of the development team. Hence, it is quite necessary to capture and resolve technical debt before the situation goes out of hand. We hope that the above-mentioned steps help your team to better manage technical debt.