Technical Debt

Technical Debt

Technical Debt is crippling your Product.

As engineering teams, or sometimes even as product teams – Do you get requirements where you are asked to take shortcuts and deliver a suboptimal product in less time? The reason could be anything ranging from launching it before the competition does, customer commitment, or any other apocalyptic true random statements about negative Business Impact.

When we agree to build such requirements, which meet the short-term Business Requirements and we take shortcuts to develop a feature in a sub-optimal way to deliver it on time, we accrue Technical Debt. Often, such features or products look okay to customers and businesses, but the developers realize the tech debt when they face complexities in scaling the product or while adding new features. Most of the time we don’t have the time and patience to address the tech debt, and with every feature, every release, the debt gets stacked to a point where the product becomes unmanageable, and the developers have to start writing the code from scratch.

Types of Technical Debt

Intentional Tech Debt: When you purposely accrue technical debts, sometimes just to test an MVP or sometimes just to launch a product/feature in a very short and unreasonable timeline.

Unintentional Tech Debt: Every product has unintentional tech debt, which gets fixed from time to time through maintenance by updating the libraries, designs, code patterns, methods, classes, etc. Sometimes unintentional tech debt may also arise because, at the time of development, nobody has a vision of the actual scale a product might reach at a later point in time.

How to Prevent or Fix Technical Debt?

The sad part is that the people who accumulate all the tech debt are usually not there when it becomes imperative to go back and pay it back, i.e., to fix all the issues, that would have arisen due to the shortcuts taken. This is the most difficult part, as we are required to go back, try to understand the code, that somebody else has written, and then try to address all the shortcomings.

While developing any feature, the prevention of tech debt should be the focus of every engineering team and should be clearly communicated to product managers and other stakeholders. The engineering and product teams should have the backbone to push back any such unreasonable request, which will accrue tech debt, as it is their job to develop scalable solutions. Also, the engineering team should have an agreement over best coding practices along with some kind of manual or automatic code quality check.

Intentionally or unintentionally, most of the products accrue tech debts, and it becomes imperative that we get rid of these debts like we try to get rid of our financial debts. If we don’t address the tech debt on time, it keeps piling up, and we reach a point where we cannot manage our product or develop any new features and would probably be required to rebuild the entire product. Below are some of the ways to fix tech debt:

  • Identify the tech debts, that may affect the future release.
  • Prioritise the tech debts to be solved.
  • Allocate time to refactor the code and fix the problems.




References:

https://www.youtube.com/watch?v=wRwa02Vac1U

https://www.youtube.com/watch?v=2nDxKYIajo

https://www.atlassian.com/agile/software-development/technical-debt

Vivek Joshi

Software Engineer

1 年

Technical Debt resolution also depends on the competence of the team. Big MNCs can resolve such debt easily because they have enough resources to do so. They can have a separate specific team, unlike small organizations that can only afford the workforce that is enough to maintain deadlines on the more essential issues.

回复

要查看或添加评论,请登录

社区洞察

其他会员也浏览了