To produce quality software it is really important to understand the concept of Technical Debt. Let’s see how Ward Cunningham explains it:
The key phrase in his explanation is:
“If you develop a program for a long period of time by only adding features but never reorganizing it to reflect your understanding of those features, then eventually that program simply does not contain any understanding and all efforts to work on it take longer and longer.”
The fact is that every codebase changes. Every time we change something without fully understanding the impact of this change, we are duct-taping and in fact increasing our technical debt. A general sense of confusion builds up over time that makes it harder and harder for a developer to apply a change.
You’ll end with 2 possible reactions; either the developer gives up and decides to add some extra duct tape or demands a rewrite to get rid of this mess. The choice is yours…
So be warned, if your developers are confused, it should be a big signal to start refactoring and bring the codebase back in line with your current level of understanding.