Several days ago I was involved in discussion about ways of reacting when a customer wants us to do something what we believe is wrong. Should I rather agree to whatever customer wants with no objection? Or should I go and try to force my point of view, because I know it’s better? Maybe I should even reject to work in the project when the customer insists he’s right, as one of commentators advised?
My approach is simple:
1. Customer is always right.
2. When customer isn’t right, see point 1.
Of course, I don’t say one shouldn’t discuss with the customer. I don’t advice to hide your point of view. When the guy on the other end of the table is willing to look for the best solution with you, fine – show what you think is the best solution.
We’re not living in a perfect world, so you’ll sooner or later find yourself in a situation where the customer won’t discuss with you about best idea. He knows better what are his needs. It won’t be very rare that you’ll find his concepts very far from what you’d like to do. Then, it’s time to use the rule number two.
Sure, that way you can end up rewriting some parts of the code, just after implementing the first approach. Sure, that way you can have much less fun with the work. But, remind me, who pays for that? This dumb guy on the other side of the table? He pays, he expects, I guess.
If you think the customer may be making a mistake with design decision and doesn’t want to discuss that – don’t moan. Go protect yourself. Get some formal acceptance for that to have some ammo for later discussions (if needed). Sign detailed scope of the project to avoid changing it later for free. And get back to work.
There’s one thing more. We’re very quick with saying that we’re right and the customer is wrong. Unfortunately it’s not always the truth. Quite often it’s completely different. The customer usually knows better his end-users and scenarios they follow. The customer knows all the problems with the legacy application. The customer knows goals he wants to achieve with buying a new piece of software. We’re in exactly the same situation except we just think we know all of that.
Remember that next time when you disagree with your client.