Technical Debt (also known as design debt or code debt) is the implied cost of additional rework when taking shortcuts during development. One of the easiest examples of this is choosing easy (limited) solutions instead of using a better approach that would take longer.
The longer a company waits to address their technical debt, the higher the cost of the rework. Worse, if the technical debt is not “paid”, it can accumulate “interest” costing more further down the line. Insufficient staff, uncertain prioritization of work, lack of processes and inherited projects from the past can all contribute to technical debts.
For example, if you are migrating a Shopify/Wix store to WordPress or Magento as you scale up, there will be technical debt from the initial choice to use a WYSIWYG builder. While it may have saved time and money at one point, as you scale up these services create an inverse relationship with growth as many are designed for entry-level companies.
Common causes of technical debt include:
- Ongoing Development / Lack of Processes
- Failure to Scope Project or Consult Departments
- A business culture where technical debt is an afterthought
- Pressure to meet deadlines, sprint schedules, ad-hoc client requests
- Lack of supporting documentation
- Lack of alignment to standards, frameworks and technologies
- Lack of knowledge, ability to create elegant products
- Lack of ownership, passing code without collaborating teams
- Poor leadership, technical debt systems are a product of following the status quo
The most difficult challenge about technical debt is trying to accurately estimate the cost to remove it. Typically when a system has ignored technical updates or modernizing processes, it is too late to just “update” the system. There needs to be a process for migrating the technical debt, creating a seamless bridge between the old system and new. This can introduce new problems when software makes it to production but technical debts have not been addressed. A development team should prioritize tasks, keeping in mind that any uncompleted work (or debt) workload should be addressed before moving forward.
Modifying production code also carries inherent risks, such as outages, financial and legal consequences, as well as SEO risks. Keeping up with the necessary development maintenance required to avoid technical debt will not only save time and money but could also save the business.