Tackling technical debt

Posted by Tim on 03 Jul 2024 in Business,Development

What is technical debt and what causes it?

Technical debt is the set of potential issues that arise from technology & infrastructure decisions, very often involved with speeding up the delivery process of (a piece of) software. In essence, it is the result of a tradeoff between speed and stability during development.

The typical causes of technical debt are often related to haphazard, poorly thought out technology investments. Here are the most common ones:

  • Outdated/legacy software (e.g. old and rarely used programming languages with a smaller base of active developers)

  • Outdated versions of frameworks and platforms, and/or software that has reached its end of life stage. This includes failing to upgrade to their more recent/latest versions, which can often be so cumbersome that it ends up being postponed or altogether avoided, further contributing to the technical debt.

  • Proprietary platforms with vendor lock-in which present an easy out of the box experience, but allow for less flexibility and customizability as the strategic needs change and/or expand.

  • Employees who worked on the project initially and thus possess a keen understanding of the initial development decisions leaving the company

  • Creators/maintainers of widely used (open-source) solutions stop maintaining and refreshing them (essentially the same as a project going end of life)

  • Unreliable and/or poorly tested technology solutions

  • Hastily developed solutions and workarounds

 

What are the negative consequences of not accounting for technical debt?

  • Security: outdated software or software which is no longer maintained and gets no security coverage opens up glaring vulnerabilities to websites using it. Poorly tested solutions and workarounds also tend to be less thoroughly developed and thus open up additional security risks. Skipping or skimping on testing can lead to many issues down the line.

  • Maintainability: outdated and/or bloated software often takes a lot of time and effort to maintain properly. A lack of knowledge with particular software that is potentially not top of the line also makes maintainability difficult.

  • Performance: unoptimized software tends to be less performant by default than highly streamlined and cared for software. And, as we know, good performance is an indispensable element of a good user experience in the digital world.

  • User experience: speaking of UX, technical debt impacts more than just the performance of a website or application. Outdated software may cause certain features to break or go missing entirely. It can also negatively impact Google’s Core Web Vitals scores, which also affect SEO in addition to UX. Finally, poor UX also reflects on your brand and reputation.

  • Reputation/branding: user experience has an important impact on your brand and reputation. On top of that, if the information about your platform and its version are openly available (e.g. by inspecting the source code), outdated software with potentially obvious technical debt could discourage skilled engineers and/or other technically savvy prospects from wanting to work with you.

 

How to avoid technical debt

The key in avoiding technical debt is a well thought out digital strategy, based on careful decision making and market research. Some important questions and considerations here are:

  • What problem(s) do your ideal clients/customers need to solve?

  • What technologies best fit their needs?

  • What features do the majority of them expect?

  • How do these findings impact how crucially you need to use a specific technology?

  • How compatible is the technology with the rest of your tech stack and/or your team’s current expertise?

Ideally, a robust digital strategy will incorporate a more cohesive, future-proof approach to building out your technology stack while avoiding temporary solutions and quick fixes, both of which minimize risks of unsurmountable technical debt.

It’s also important to select technologies which allow for future flexibility. A composable architecture might not be the ultimate solution it’s sometimes marketed as, but if we’re talking about avoiding technical debt, implementing composability the right way will definitely minimize any future issues and prevent specific problems such as technology incompatibility.

Smart technology investments will be an essential part of developing a future-proof technology stack. Determine when it makes sense to “buy” an existing solution versus “building” your own custom one. See if/where you can save money with powerful open-source options to have a bigger budget for higher-impact tech investments.

 

How to fix technical debt

Unfortunately it’s much easier to preemptively avoid, or at least minimize technical debt as much as possible rather than fixing it once it’s already an obvious issue.

Replatforming can be expensive and time consuming, and so not everyone can afford it, especially if it presents a relatively major disruption to their day-to-day business operations. Even upgrading to a newer version of a platform can be a hassle, e.g. upgrading from legacy Drupal 7 to a modern version of the CMS.

It can happen that attempting to get rid of your technical debt can further break things, and you may need to start from scratch. Often, “fixing” technical debt will essentially mean starting from scratch; in that case, the key priority will be preemptively minimizing and avoiding new technical debt on the updated platform.

Start with a technical audit of your existing site(s), their key areas, vulnerabilities, and redundancies. Gauge the findings with the state of the market and your current vision, then follow the tips in the previous section when planning for the necessary fixes and changes.

 

Conclusion

Technical debt can be a real detriment to the success of your business, especially considering the breakneck pace of technology advancements.

We hope this article will help you to minimize any technical debt issues and ensure the long term viability and success of your brand’s digital presence.

In case you need some help with a specific part of your technology stack and/or are considering a website upgrade, check out how Agiledrop can help you out or reach out to us directly to learn more.