How to Prevent and Repay Technical Debt: What Teams, Technical Leads, and Managers Can Do - Wishevoke

How to Prevent and Repay Technical Debt: What Teams, Technical Leads, and Managers Can Do

Technical leads, project managers, and managers can prevent technical debt by giving software developers more time; Additionally, they can schedule free time and refactoring sprints to give teams the opportunity to improve the code, claims Nedelcho Nikolov. To prioritize technical debt, development teams can show how much time we can save if we invest now and how complicated the software will become in the future if we don’t pay off technical debt now.

Nedelcho Nikolov shared his experience dealing with technical debt DEV Challenge accepted 2023.

“Technical debt is often caused by a deadline you have to meet, where you have to rush the code and don’t have time to get it right,” Nikolov said. “You have to make compromises, and usually it’s either the unit tests or poorly written code in production that just works and no one knows how or why,” he added.

Another cause of technical debt could be that the team is still new and coding standards are not yet in place, as Nikolov explained:

We had a newly formed team working on a brand new project, so everyone wrote the code in their own style, which made it difficult to maintain and find something later.

Technical leads, project managers and managers can prevent technical debt by giving developers more time to test everything and write good code, Nikolov said. You can also schedule free time in the project to spend it getting things in order after the big rush, or just give the team a few refactoring sprints so they can spend time improving the code.

“Prioritizing technical debt is difficult because you have to convince the people above you to spend time on something that doesn’t make money,” Nikolov argued. He suggested throwing some numbers into the conversation, like how much time you can save later by investing it now and how much more complicated it will be in the future:

This can be proven by developers’ estimates if the code was written correctly, no debts were incurred, and the code is in its current state. Typically, stakeholders are interested in numbers, so this may be the best approach.

To deal with technical debt, Nikolov suggested that teams invest time to pay down the debt every sprint, or at least when team members complete their task and see that there is something else in the pipeline that needs to be fixed or redesigned . “It’s easy: just invest the time now and do it,” he suggested.

Another approach is to dedicate entire sprints solely to fixing, as Nikolov explained:

We had a project that a new team was working on that finished on time with code quality compromises. After we were done, we spent a few sprints refactoring everything and getting it back in order. This allowed us to pay off our debt and have a good looking codebase that was easy to navigate and add new features to.

Take time whenever you can to pay off your debts, because over time it becomes more difficult, Nikolov added. Don’t be afraid of technical debt; it is a necessary evil. “It allows us to complete a project or task on time, but we have to pay it back as quickly as possible afterwards so that we don’t end up in complete chaos,” he concluded.

InfoQ interviewed Nedelcho Nikolov about dealing with technical debt.

InfoQ: If we can’t make detailed estimates of the costs and benefits of resolving technical debt, is there another way to prioritize?

Nedelcho Nikolov: Another good approach is to use an effort/impact matrix where you can evaluate each task in the following ways:

  • Easy to do and has a big impact on work – quick success
  • Easy to do, but it won’t help much since it’s a piece of code that doesn’t change, or a feature that no one will change in the near future – time fills
  • Difficult to do / It will take more time but it will have a big impact – major project
  • Difficult to implement and no impact on the project – money pit

With the above values ​​in mind, you can easily prioritize which debts you should pay off now and which can wait.

InfoQ: What can we do if a lot of technical debt has accumulated over time?

Nikolov: If you’ve accumulated so much technical debt that it’s really difficult to deal with, that’s the point where you’ll just have to start the entire project over again. It’s difficult, but not impossible, to convince stakeholders of this because you don’t want to spend your time bringing in money or adding new features, but instead want to iterate on something that already exists.

We came across such a project with my team; a 15 year old PHP application with no framework containing mixed PHP, HTML and JS code in one file. The stakeholders wanted a complete redesign with responsive design. With some reasonable explanations and some estimates, we managed to convince them to start the entire project from scratch. Now we have a modern PHP application running on Laravel with VueJS frontend and working with Tailwind CSS. Of course, we now have new technical debt to pay off due to the timeframe we had, but we are slowly paying off this debt every sprint.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top