New project. You walk in the door, they are past the early phases and have a large body of code already done. It is already in production. Sure it has problems, but it's software and it mostly works. Your job is to make some modifications and integrate in a few other systems.
Code is simply a representation of how the author is thinking about a problem. There is no magic to it. It's just a thought expressed in a fashion that can be executed by a machine. All the best practices and everything else are nothing but other people's thoughts about other problems. sometimes the thoughts are useful. Often times they aren't. Or they don't apply because they really arent best practices. They just have a better marketing department.
As you seplunk your way through the project you quickly note that they aren't thinking about the problem the way you would. In fact, you develop a fairly negative opinion about the code you are working with and this leaves you in a quandry. Do you say anything? Is it just you?
Obviously being a good consultant you slog through and complete your task. But being a consultant should mean more than just slapping down working code and moving on. You take pride in kicking ass. You spend a ton of time learning new stuff so you can get even better. You like to leave your clients better off than you found them. So what to do? You're pretty sure that your spidey senses aren't decieving you. The code really is wrong (wrong as in not written 'correctly' not as in not working) and could be done better. How do you tackle the problem?
Carefully. Ever been out around other people with kids? Ever been around when those kids are acting like hellions? What did you do? Did you tell their parents? How did that work for you?
As I already said: there is nothing magical about code. At least not to me. But if you want an arguement that goes no where; go tell the author of a program that he could have done it better and then try to explain how.
The reason you are in a quandy is because your spidey senses are working just fine. They're telling you the code is wrong and that the author and culture aren't going to listen to you. If you are in a learning culture your spidey senses would have sent a different signal. Actually, you probably wouldnt have come across the problem in the first place. Sure they would have thought about the code differently (which is good and as it should be) but it would have been refactored, unit tested and cleaned up leaving you to just do your task.
sucks don't it?