One of the lesser known risks of technology solution development domain is the concept of “technical debt”. Many teams often don’t think about this until it’s too late. In my experience, high performing teams tend to have a deep understanding of technical debt, and proactively take action to manage this, which plays a big part in their overall success.
So, what is this mysterious thing that is lurking in the shadows, waiting to reveal itself at the worst possible moment to disrupt your team? Let’s take a look and get a better understanding so that we can do something about it!
The phenomenon of “technical debt” appears when a team member makes decisions for short-term gain instead of long-term benefit. Sometimes, due to various factors such as time constraints, tasks becoming more complex than originally expected, ineffective scope management, etc., team members sometimes choose to take a “short-cut” instead of implementing the proper solution.
Some examples of technical debt include:
- Hardcoding variables
- Not doing proper design prior to implementation
- Not following coding standards; waiting until later to address compliance issues
- Skipping steps in testing code
“Technical debt”, similar to debt of any kind, accumulates gradually and often unbeknownst to the debt owner. It builds up over time, as it usually develops inconspicuously, especially when nobody is paying attention. As with any other debt, technical debt must be paid off, but it builds up interest over time; the longer you take to pay it, the greater the cost will be.
What can you do to reduce the likelihood of technical debt impairing your team? Here are a few tips that you might consider.
- Educate your team – It may come as a surprise, but some of the most seasoned developers still do not have the high level of rigor when it comes to building software code in accordance to industry best practices. As the leader, it is your responsibility to give your team the proper tools to be successful, and one such tool is common coding standards. If your team does not have this, I strongly recommend you invest in this effort immediately, because lack of standards has a high probability of leading to technical debt.
- Conduct regular code reviews – Instill proper behavior through consistent code reviews within your software development lifecycle. Make this a part of every developer’s routine so that issues can be identified (and addressed) as early as possible.
- Allocate bandwidth for refactoring – There will be times when you are aware of the technical debt, but choose to de-prioritize or postpone the work due to business pressures or other reasons. Share the risk openly with your customers and/or stakeholders so that they are aware of the potential issues at hand.
- Pay off technical debt in small increments – One technique to eliminate technical debt is to reserve time to pay down the debt in an iterative manner. It’s ok to not pay off the entire debt all at once; if you can chip away at it incrementally, the task will not seem as daunting.
- Implement a tool to automate code scanning – Most modern software shops utilize code scanning tools of some type, such as SonarQube. These tools are generally not excessively expensive, and can expedite the identification of bad code very quickly. If you integrate a tool into your normal quality assurance and review process, your team will thank you!
Left unchecked, it is inevitable that technical debt will absolutely negatively impact your project in some way at some point, so why not tackle this head-on and address it on your own terms?