This is an AMP version of the article, its original content can be found here.
I received a haircut today, and the niceness of my hairdresser led him to fill the appointment with courteous questions about how I wanted my hair cut, what size of clipper he should use, how long the sides should be, and how much should be removed from the front. He also offered me many types of shampoo and a cup of tea. All this reminded me of the work we do as programmers, and I decided to write a short post about it. I've already mentioned before that trying to make a customer happy is a false objective. This hairdresser was a perfect illustrative example of this very mistake. By the way, in the end, I wasn't happy, and he got no tip. How could this happen if he was so friendly and nice?
I'm not a hairdresser, and I have very little understanding of how to deal with hair. I came to him because I assumed he knew more about this business than I did. I chose him through the assistance of Yelp. I wanted him to tell me how long the hair on the sides should be and how much should be removed on the top. I expected him to give me his professional judgment and stand by it.
Instead of asking me how much I wanted removed on the sides, he should have told me there should be less on the sides. This is what a true professional would do. A true professional would give me his vision of the haircut that best suits me and would try to convince me that it was the best choice.
A true professional would not ask me but would tell me instead, because he would understand that my goal was not to boss him around and make him do my hair the way I wanted it. My goal was to get the best out of his professional skill.
Unfortunately, the guy was either weak or immature. He didn't argue with me and didn't try to convince me. He tried to please me. In the end, he lost.
Exactly the same thing happens when we ask our customers about the technologies they want us to use. I hear this question very often: What language do you want us to use (meaning Java or Ruby or something else)? Or what database should we use? Or how do you want us to design this?
Don't do that. Don't lose like that hairdresser. Don't ask your clients what they want. Instead, learn their business requirements and then suggest the solution you think is the best for them. Then, insist and argue if they don't agree. Convince them. Even if they fire you in the end for your stubbornness, it's better than being that hairdresser who is doomed to please every single client without getting anywhere further.
Remember, the client is not the king; his hairs are.