Clean/dirty code wasn't the problem here. The first problem was a lack of communication before rewriting someone else's code, which the author admits.
But another problem is the use of languages that cause abstractions to increase code complexity, whereas better languages allow you to make proper abstractions that decrease code complexity.
Languages with proper object-orientation (e.g. not C++) would make proper abstractions easy to write and maintain. Such languages enable specialization of code based on either the class of the input object (in the case of Smalltalk), or based on all the arguments passed to a generic function call (in the case of Common Lisp).
Object orientation was invented for the purpose of managing complexity. [0] If your co-workers picked a language that makes managing complexity difficult (e.g. C, C++, etc), then you get to choose between (a) fighting a losing battle (i.e. the code will only get less manageable) and (b) quitting.
[0] Unfortunately, more than a few programmers seem to think OO is all about code cleanliness or, worse, encapsulation.
Correction:
Such languages enable specialization of code based on either the class of the input object (in the case of Smalltalk), ...
should be something more like this:
Such languages enable specialization through polymorphism either based on inheritance (in the case of Smalltalk), or generic functions (in the case of Common Lisp).
reply