The other day I reviewed code someone on my team wrote. The solution wasn't fully functional and the design was way over complicated-- meaning stored unnecessary information, built unnecessary features, and basically the code had lots of unnecessary complexity like gold plating and it tried to solve problems that do not exist.
In this situation I ask "why was it done this way?"
The answer is the other person felt like doing it that way.
Then I ask if any of these features were part of the project spec, or if they have any use to the end user, or if any of the extra data would be presented to the end user.
The answer is no.
So then I suggest that he delete all the unnecessary complexity. The answer I usually get is "well it's already done".
My view is that it is not done, it's buggy, it doesn't do what the users want, and maintenance cost will be higher than if it were done in the simpler way I suggested.
An equivalent scenario is:
Colleague spends 8 hours refactoring code by hand which could have been automatically done in Resharper in 10 seconds. Naturally I don't trust the refactoring by hand as it is of dubious quality and not fully tested.
Again the response I get is "well it's already done."
What is an appropriate response to this attitude?