I was reading this article on slashdot the other day and it occured to me how often I made a particular mistake when I first started programming. I created a perfectly sound little app for someone and then when they complained I modified it to what they asked for. But that is often the wrong reaction. What we should really do is determine what the real problem is and how to address it. Sometimes the user that is complaining has enough power to force you against you will even if you know the “fix” they want is a bad idea, but often we have enough autonomy to be able to come up with a happy medium.
The example from the article was in a game environment. Some users would get stuck. They wanted a way to get a hint so they could move on to the next level. The fear of the game writer was that if he offered a hint the users would “give up” too quickly and just take hint after hint. The users asked for hints, but he thought it was a bad idea. The solution? Limited hints OR hints that take away points from your score OR hints only after a certain amount of time elapses. In any case it was possible to give the user what they wanted without really giving them what they asked for.