Causes Of Technical Debt
Almost all technical debt was caused by a decision maker who, at some point, prioritized temporary high development speed in exchange for a huge long-term problem.
The subject of technical debt management pops up frequently because technical debt is prevalent in many companies. But most often, there is nothing to manage. It is like asking how to manage a flat tire on your car:
And when you look at it like this, you realize the only way to get the maximum value (and lifespan) from your car is to:
Technical debt is the practice of intentionally introducing faulty code because it appears to have short-term benefits (faster development time etc.). The only way to manage it is by reducing or never adding it in the first place.
Like cars, companies are also assembled out of many different parts. And if you have one faulty part, it will affect the performance of an entire company.
One such part is software. It can be either software the company uses or the software it makes. But technical debt is usually mentioned in the context of a company-created code.
Adding technical debt should be avoided, and even raising a question on how to manage it implies it should be there in the first place. The truth is quite the opposite.
At the heart of the technical debt is hope:
Technical debt can only be paid as any other debt: with interest. But unlike many options available in the financial industry, the interest on technical debt is always high and challenging to pay off.
Because, in reality, the effects of technical debt constantly keep growing. And this makes it seem harder and harder to tackle.
At the same time, solving the issue of technical debt competes with other priorities like developing new features that existing and new users might like. So a company almost always prioritizes a new feature.
This entire situation with technical debt seems like "boiling frog syndrome", where the frog doesn't notice the slow increase in water temperature. And similarly, the company also doesn't notice any day-to-day differences that would raise any alarms. All the while, this giant monster is growing unstoppably.
And sometimes, the situation gets to a point where even the most basic and simple changes in the code are very hard to make. Everything is so slow to modify. Your competition is overtaking you because they can move and innovate faster. And you are out of shortcuts you can implement.
The best way to prevent technical debt is to realize it offers you no advantages. And it is also next to impossible to remove. Although, it provides you a strong (but false) feeling of accomplishment and hacking the system in your favor.
But it is never a good feeling when your competition overtakes you or your users just leave because of a bad experience caused by technical debt. All due to decisions you made 1 or 2 years ago when you found it very important to save 1 or 2 weeks of development time. But now, it would take you 6 months to fix the whole thing. And at the same time, you'd need to stop developing new features.
Obviously, no company is going to take that route. They can't even if they wanted to because 6 months in the software world is forever. And other competitors are going to overtake them. So the technical debt stays there forever. Or at least until the entire business fails.
For that reason, prevention is your best option. And to prevent anything, you should understand it. So definitely read more on the causes of technical debt and learn how to stop it in its tracks.
Some people talk about the benefits of reducing technical debt. However, if you don't remove it completely, it will drag down your project and your company forever.
To mention specific benefits:
And the more crucial some part of the code or architecture is, the more significant the impact of the technical debt is on an entire project/company.
You can read more about it in an infrastructure technical debt article that goes into depth on this subject.
Suffice to say that the database is the most essential part of the infrastructure. Every shortcut you take here (in the form of technical debt) will have more impact and far-reaching consequences.
And regarding the database, you don't necessarily need to have some kind of bug or faulty software solution. No. It is enough that you don't use the best tools available for your competition to put you out of business.
Let's say your development team makes an excellent scalable database that has no bugs or issues. Still, that is a mistake because that time could have been spent on developing your actual product. Developing business logic specific to your product that matters.
If your competitors just used a pre-existing 8base database platform that is production ready out of the box, automatically scalable, and automatically generates necessary endpoints. Then they just won.
They got faster to the market, they can push out new features faster, they have less critical systems to maintain, and overall they are a more profitable company.
Therefore, you cannot waste your time reinventing the wheel. You need to find and use the best tools available. Starting from a solid database is an excellent way to start with no technical debt.