Technical debt is a metaphor referring to the eventual consequences of any system design, software architecture or software development within a codebase that becomes outdated. If the debt is not repaid, then it will keep on accumulating interest, and thus more debt, making it harder to implement changes later on. Unaddressed technical debt can lead to massive costs to bring the software back to where it is considered up to date down the road.
Analogous to monetary debt, technical debt is not necessarily a bad thing, and technical debt is often required to move projects forward.
As a change is started on a codebase, there is often the need to make other coordinated changes at the same time in other parts of the codebase or documentation. The other required, but uncompleted changes, are considered debt that must be paid at some point in the future. Just like financial debt, these uncompleted changes incur interest on top of interest, making it more and more cumbersome to work on the software over time.
A good example is the recent upgrade Magento made to Magento 2.0. Eventually older versions of Magento 1.x, well even all version of Magento 1.x will be deprecated, leaving many Magento sites in large technical debt. Magento 2.0 is a major overhaul and there is no simple upgrade path, therefore all Magento 1.x sites will have to migrate to Magento 2.0 or move to a different eCommerce platform.
Another example are the responsive frameworks, Bootstrap and Foundation. Foundation recently came out with a new version and Bootstrap is scheduled to come out with a new version as well. The websites using the old versions will eventually be on an outdated responsive framework and should upgrade in the near future. The longer the companies wait to upgrade the more difficult to upgrade path will be in most cases so the smartest thing to do is get in front of the problem and make sure your platform is updated.
Most companies go through continuous cycles of technical debt that can lead them into big trouble. They can wind up with a software that is a major security risk, not upgradeable, or not have the funds to get out of the technical debt they have found themselves in.
Ways to Avoid Painful Technical Debt:
Software as Service
Software as a service is updated for you, because you are literally paying for the software as a service. If you use a software like Dropbox, Google Apps, or any other similar services it will automatically update at no cost to you. Therefore utilizing software as a service more frequently is a great way to avoid technical debt.
Planning ahead will allow you to anticipate for the costs and risks associated with accumulating technical debt. If you know it is likely there is a software update each year you have to upgrade, and that cost is approximately $10,000, make sure you are budgeting for that each year. That way there won’t be any surprises. Even if its not guaranteed that an update will come out each year, it is better to plan for it than to fall behind on software versions to the point where you cannot maintain the software.
Understand Your Budget and Costs
Many companies make the mistake of underestimating or not fully understanding the costs of maintaining their software. For instance, even a website, that may seem simple, may have a complex backend CMS platform like Magento or Drupal that may require hundreds of hours of development time to upgrade. If you know your maintenance costs you can budget for them properly.
Utilize Open Source Software
Open source software can often be a great way to reduce technical debt because they do not have licensing costs and instead of paying for licensing you can budget that money towards upgrading the software. Not all open source platforms are created equal though, and a platform like WordPress is far more easy to upgrade and maintain than say a Drupal or Magento.
Look at the Community Around the Software You Use
The community around the software you are using is very important to its success. A software with a strong community will most likely survive or have lots of developers who can help you upgrade and maintain the software, avoiding technical debt. The worst thing that can happen is becoming dependent on a software that no one supports, so you are forced to move to a completely new software, which can be very expensive.
For help eliminating technical debt, please contact myself or the team at Trellis!