Technical debt is a metaphor or a concept in software development where organization accumulate debt under the development process. Technical debt is created when teams need to forecast bug fixes, regular maintenance and cut corners in there development. Either teams can do development by the book, but usually the cost to create clean code seen as a to big cost.
When organization need to do things quick and dirty, cut down on design, ignore smart technical solution, don´t get rid of unused code and skip automation test a technical debt is created. This debt effect the whole organization and make all the work much more slow and more difficult.
It´s just gone get worse until the organisation start to pay off the debt, the sooner the better.
Technical debt can be compared with financial debt. A debt is a cost that need to be paid in the future, and technical debt is the cost / effort it takes to get the code clean again. And this is one of the problems for software development teams. Even if every one saw the debt, like financial balance sheet show debt its hard to get rid of.
But technical debt is hidden and not often estimated, it´s hard not only for the teams, but even harder for product manager and management to understand the cost of technical debt. And after a while the management wonder why the output is to low.
But don´t get scared. Debt is always built, it cost to much to do everything perfect with zero bugs, and its probably impossible any way, and if not surely the marked window is lost for long time ago.
As always, it´s about finding the right balance.
There are many factors that can cause technical debt, here is some.
- To much pressure from management
- Ineffective process
- Lack of knowledge in the teams about clean code
- To few test suite
- To many parallel task
- Not enough refactoring