Ian says that this is good advice for screenwriters; I'd say it's good advice for software developers as well, and probably for anybody involved in doing creative work for a customer. In short, when asked to do something you think is a mistake, say "Yes." Then find out what they are hoping to get from it; they have a reason for asking. Then think about it, and see if you can figure a way to get them what they want. Then take your answer back to them.
Sometimes their request will be fatally flawed, but you'll be in a position to explain, patiently and without anger, just why it's a bad idea. Sometimes you'll find that your initial reaction was mistaken. And sometimes you'll be able to propose a better way to get them what they want. And no matter what the result is they know you've taken them seriously, and tempers will be much cooler without that big "No" hanging in the air.
As a side note, my favorite way of saying "You're mistaken" on such occasions is, "Actually, that turns out not to be the case."Posted by Will Duquette at February 13, 2005 09:20 AM