The metaphor “technical-debt” was first coined by Ward Cunnigham, Lots of people in the industry confuse it with code that is poorly written, Ward Cunnigham, In his video message, explains it a bit more to clear few confusions. https://www.youtube.com/watch?v=pqeJFYwnkjE
As uncle bob said in his blog, Mess is not a technical debt. There is no chance of paying off the mess.
Now repeat with me:
- Messy code is not a technical debt
- Unclean and sloppy code is not a technical debt
- Duplicate code is not a technical debt
- Quick and dirty code is not a technical debt
- The cut-and-paste code is not a technical debt
- The code that you are planning to write but haven’t written yet is not a technical debt
- Commented out code is not a technical debt
- Missing documentation is not a technical debt
Clean code is the pre-requisite for acquiring technical debt, you pay back the debt using refactoring, your code has to be clean enough to be refactored later.
Tips for managing and keeping technical debt at bay
- Production quality code all the time, there is no such thing as trial or beta version of the code.
- Do some planning to acquire technical debt and inform the business about it so it becomes part of the backlog.
- Boyscout rule everywhere.
- Quality is your responsibility and it is a part of your job, you shouldn’t be asking permission to do your job well. You never expect anything less than the best from a Doctor, no matter how expensive or time-consuming treatment you get. Everyone expects a high-quality job from you, cutting corners to save time and money might make your customer happy for a while, but in the long run, it hurts your reputation. The software you produce competes with all other software your user interacts with. If you are a web developer, your competition is all the web apps your end-user uses.
- Make Knowledge sharing a Strategic Investment, One good strategy to spread knowledge among the team members is to perform mob programming sessions regularly. It helps team members glue well. Mob programming is more effective when performed at the beginning of a project.
The most effective way to manage technical debt is to pay it off immediately. That little-off code should not see the light of the next sprint.