In the business world, debt can be a positive implication when it reflects funding to solid investments, which will provide a greater return in the future. In the IT industry there is a term not known to many business-savvy people known as technical debt. As technology evolves and Software is Feeding the World, more and more organisations are experiencing technical debt.
To understand the difference, we wanted to give a greater understanding of technical debt vs financial debt.
What is financial debt?
Financial debt and technical debt have one thing in common, they are a problem that can turn catastrophic if not dealt with in time.
In general, financial debt is when an organisation borrows money to be paid back at a certain date with interest. There are multiple (good) reasons why organisations take on financial debt. However, lack of debt management is one of the main reasons many organisations fail, more than technical debt.
For any organisation, they start out with a clean balance sheet and income statement:
Successful organisations manage to generate a positive income statement, meaning income is higher than expenses, which allows them to build more assets than liabilities:
Sometimes, it makes sense to take on debt (liabilities) to acquire assets. These are mainly tax purposes, but what more and more organisations forget when they accumulate software and IT assets, is that there is another type of debt that cannot be seen in the balance sheet. This is what we called technical debt.
What is Technical debt?
Technical debt was coined in 1992 by Ward Cunningham, a computer programmer. He used technical debt as a metaphor and described it as:
“Shipping first-time code is like going into debt. A little debt speeds development so long as it is paid back promptly with a rewrite. Objects make the cost of this transaction tolerable. The danger occurs when the debt is not repaid.”
If we think about it, technical debt may sound like a financial term. However, when it comes to software development technical debt is not reinvested into assets that generate a return, it acquires interest which may be difficult to make changes in the long run.
Let us elaborate what the causes technical debt to pile up over time are:
One of the main reasons for technical debt is codebases and infrastructure evolving. Software development is changing at a fast pace, and that can be a challenge to many organisations. When a framework, codebase or entire software architecture is updated, older code becomes obsolete, better known as legacy code. The older the code is, the slower it becomes performance-wise and the harder to fix.
Another main reason for technical debt is software entropy. Ivar Jacobson, a software engineer described software entropy as the second law of thermodynamics. In simple terms, over time software becomes complex and costly to maintain. Due to continuously changing, it becomes disorganized as it grows without proper refactoring and architecture design. In theory, building on top of old software can cause a heck of a lot of trouble, rather than doing the work required and redesign the whole system. Below is a clearer picture on how software entropy works.
Lack of documentation
The third main reason for technical debt is lack of documentation. Documentation must be strictly kept up to date. Otherwise, the company will lose track along the way. However, having clean and easy-to-understand code is significant to avoid technical debt.
To understand more about technical debt, you can watch the video below which gives a thorough explanation about it.
Indeed, financial debt and technical debt is troublesome. In general, financial debt might result in bankruptcy when managed wrongly. However, there are ways of fixing it along the way such as maintaining the quality of the code and proper documentation.
Technical debt is for sure not similar as financial debt. The two should be handled in separate approaches. Financial debt can be repaid in time but technical debt can’t. Are you experiencing technical debt? Don’t hesitate to contact us. Finally, keep yourself updated on the latest technology trends, to get a better idea on how to fix technical problems along the way.