- Published on
Technical debt or software rot ?
- Authors
- Name
- Cédric RIBALTA

I recently re-watched an excellent conference on technical debt. And it occurred to me that the subject of technical debt should be brought up again.
Some context
This is John :

John is a front-end developer in a small company.
This morning, a colleague tells him:
The sprint will finish in 2 days, we've finished the add feature, but now we need to develop the edit feature.
How about copying and pasting the code, modifying just the bare essentials, without refactoring/cleaning up?
Consequences
John thinks it's a bad idea, but he doesn't really have the time to do otherwise.
Without missing a beat, he copies the code and modifies the bare essentials, then delivers the editing feature.
The next sprint, the team is late and they don't have time to come back and clean up this famous piece of code. And the following sprint will be the same, and it'll go on like this until the dawn of time.
This piece of code will never be refactored.

So what happened
In fact, the team added accidental complexity (this will be the subject of another post).
If this happens too often, and the complexity accumulates, the software can become unmanageable, and it can become the notorious legacy code that makes us lose 1/10th of an eye every time we read a line.
If it's not technical debt, what is it ?
In fact, you could call it software rot.
Oh yes, it's not as pretty as technical debt, but it's more realistic.
The so-called "debt" has grown so much, the interest is so enormous. And nothing has ever been repaid, so the price to pay is colossal...

So what is technical debt ?
Technical debt is when you make a technical choice that allows you to go faster now, but will slow you down later.
It's a conscious choice, made for a specific reason, and assumed.

And, above all, it's a business decision that needs to be negotiated.
When you need to deliver a feature quickly to sign a customer, it can be a conscious choice.
On the other hand, technical debt is not a wild card for coding on the fly and delivering just anything.
Once an agreement has been reached between the business and the developers. The business must give the developers carte blanche to repay the technical debt whenever they decide to do so.