- Technical debt: That is the code that you already know is sub-par, however that you just determined to jot down for good causes, and that you’ve got a plan for correcting. Let’s face it—hardly any code on the market matches this description. What number of improvement groups even have a plan for paying again technical debt? Not quite a bit.
- Unintended complexity: Fred Brooks coined this time period, which completely describes code that isn’t proper and that outcomes not from negligence or unhealthy coding expertise, however as a result of nobody understood the system and made unhealthy selections. Perhaps the group selected a framework that was manner too heavy for the duty at hand. Perhaps the group created pointless abstractions or added a function in a manner that doesn’t match the system. Sadly, that is the form of factor that doesn’t seem till effectively after the very fact.
- Simply unhealthy code: Most of what will get referred to as technical debt is simply rushed, slapped-together, or “emergency” code that was by no means reviewed, or was glossed over as a result of it “labored” and the client was screaming. band-aids for buyer hearth drills, important bug fixes that have been checked in over the weekend, or artifacts of builders working with out sufficient time, readability, or assist.
A fairly label
The issue with calling all of it technical debt is that it places a reasonably label on avoidable issues. We give ourselves an excuse to do the mistaken factor as a result of we may give it a flowery title that suggests we’ll “pay it again” later, when everybody is aware of that we by no means will. When the group is allowed to make use of the time period to justify not doing issues the proper manner, you’ve obtained a tradition in decline.
As well as, labeling all of the unhealthy stuff technical debt can result in justifying unhealthy selections and practices. It could actually cover issues like under-investment in engineering and poisonous, fixed deadline stress.
So let’s cease doing it. Let’s all agree that we will’t name it technical debt until we even have a backlog merchandise to repair it. Actual technical debt ought to have a piece ticket, a correction plan, and a deadline. The rest needs to be acknowledged for what it’s: crappy code. Let’s construct a tradition the place we now have actual technical debt, and the place we name every little thing else by the proper title. Let’s reserve “technical debt” for what it really is: a acutely aware tradeoff with a compensation plan.
Every thing else? It’s not technical debt. It’s plain outdated code rot.