"Creditors have better memories than debtors."

Where do tech debts come from? Link to heading

Software tech debts are an inevitable part of the software development process. No matter how well the development team is, tech debts tend to accumulate over time. As a project grows in size and complexity, the number of technical debts increases, and it can significantly impact on the morale of the engineering team. While technical debt may not be immediately apparent to business stakeholders, it can make maintaining and improving the codebase more challenging for the development team. Much like financial debt, tech debt requires attention and management; if left unaddressed, it can have negative consequences on the project’s long-term success. Therefore, it is essential to address tech debts proactively to ensure the project’s continued growth and success.

Some situations when tech debt can be created are:

  • The most common case is when you have to make a trade-off when being under a deadline pressure.
  • The current tech stack of the project cannot handle the new requirement. At that time, the team decide to go with a work-around first and let the refactor/restructure for later.
  • I know the issue but don’t want to resolve it just because I don’t want to do so”. Sounds weird but this one is more popular than you think.

Some common reasons for long-live tech debts:

  • The feature is working as expected and the engineers are afraid of changing. If there are bugs, how to explain the reason to the business team? From my opinion, this one is popular.
  • It’s less important than others and is easily forgotten.
  • The old team members are moved to other projects and the new members are not aware of the issues.
  • It takes a lot of effort to resolve the tech debt due to the huge amount of works to be done.

How to deal with tech debts? Link to heading

I tried several ways in the past and most of them does not work. Some ways I & the team tried and failed are:

  • Creating JIRA tickets and put them in the backlog for resolving later.
  • Putting them in a dashboard among other KPIs to see how many tech debt tickets are pending.
  • Assigning tech debt tickets to the team members when they are running out of tasks.

I think the main reason why the above ways are failed is due to the lack of commitment and attention to tech debt. When the applications are working, the tech-debt could easily be put behind the feature development tickets. For being able to handle the tech debts effectively, I think we should ensure at least 2 important things:

  • [Most Important !!] The engineering lead must adhere to it. As you are a leader, if you don’t pay attention to it, no one will.
  • Reserving a fixed schedule for them and adhere to the schedule. If you want to eliminate the tech debts (as well as other engineering tickets), you have to make it visible in your engineering process. No matter how much time are you willing to reserve for it, you have to make it a fixed schedule and never put it down. E.g. For every 2 weeks, spend 3-4 days just for handling tech debts and other engineering items.

Conclusion Link to heading

In conclusion, technical debt is an inevitable part of software development, and it is essential to manage it proactively. While it may not be possible to completely eliminate technical debt, it is crucial to prioritize and pay down technical debt regularly to ensure the project’s continued success. Like credit card debt, technical debt requires consistent attention and management to prevent it from spiraling out of control. Therefore, software development teams should adopt a proactive approach to manage technical debt, making trade-offs where necessary and continuously improving the codebase to minimize the impact of technical debt on the project’s long-term success. Happy coding!



Keep calm and good things will come!
Subscribe to our newsletter  •  About the author