Probably the single largest source for unnecessary technical debt is the “not invented here syndrom”. The not invented here syndrome is a humorous way to explain a system development problem, which is the natural resistance many developers have towards using 3rd party tools, and would rather reinvent the “wheel” themselves when confronted with a problem requiring “wheels”.
Once you realise that code actually is technical debt, you also understand that you want to minimise your amount of code, to increase your future flexibility, and free up resources in your development department. The simplest way to achieve this is actually to use third party libraries and components. Either Open Source components, or proprietary components. From a technical debt point of view, it doesn’t matter if your component is open source or not – Since every single line of code you can avoid creating yourself, becomes one line of code less you need to maintain in the future. Ask yourself the following question.
What is most expensive; Having a developer spend six months coding, or purchasing a 3rd party tool for €500?
Then realise that even if the developer succeeds, he creates technical debt for you, that you’ll have to maintain in the future. Purchasing a component from a 3rd party, implies that the 3rd party will (probably) give you new versions, and bug fixes in the future, included in their price.
There is a reason why we don’t create our own cars, and that reason is because huge car manufacturers are able to optimise the process of creating a car, to the extent that their product is better, less expensive, and more secure than whatever we could have built ourselves home in our garage. The same is true for all fields that require specialisation of some sort. No company can master all fields required to assemble their entire product – In fact, not even a car manufacturer. Most car manufacturers will purchase a whole range of the components that makes up the final product from 3rd parties. This is a large reason of why they are more efficient at assembling cars than we are ourselves.
Whenever your software development department has a problem, the first question should always be; Have somebody else already solved this problem in an adequate way? If the answer to that question is yes, you can significantly reduce your technical debt by somehow obtaining these pre-existing components instead of reinventing the wheel within your own organisation.