Come on now, admit it. Your mom/dad told you at some point "If you can't say anything nice, don't say anything at all." The thing is, neither had any idea how detrimental this philosophy is to the real world. While I will focus on the harm it causes the development community, you could extend my ideas to any thread of social interaction.
Basically, there are two main reasons why I feel mom/dad should have received a lecture after stating that gem:
1) It instills a mindset into the recipient that speaking your mind is not welcomed in the world.
2) This mindset further expands itself within the recipient so they are no longer able to receive (and act upon) "hostile" criticism.
Let's examine further...
Words have an everlasting effect on children -- it scares me how quickly my 6 y/o daughter repeats things I didn't mean to say. In addition, endless studies (which I won't take the time to quote) have pointed out a correlation between verbal abuse and self-esteem. The contrapositive of that is also true, positive reinforcing words instill wonderful feelings within their recipient.
Because of this everlasting effect, simple phrases become absorbed deep into subconscious behavior and alter a person's persona. Now knowing that, let's rethink what that glorious phrase really means to a child -- I'm not allowed to say anything that isn't nice.
The worst example of this tends to happen to extremely introverted people that hide behind the "No one cares what I think anyway" phrase. Sadly, this travesty of justice keeps these people from reporting problems they see, solutions they've conceived, ideas they've dreamed up, and a whole slew of other items that can help a project achieve its goal.
Some people will say something that isn't nice but feel the pressure to employ that wonderful effect called "sugarcoating" (placing as much "nice" words around a "hard to swallow pill"). I've seen it in plenty of relationships with my users. For example:
Wow, this page is really neat. I like the layout, all the links work, the articles are great. You've really done a good job. However, you misspelled the word "Emmeekaguramookavich" in paragraph 32. Hopefully this will be an easy fix.
Keep up the wonderful work,
Now, for me the above comment has this long drawn out way of asking me to do something. Don't get me wrong, I'm grateful for the appreciation you're showing me, but the first sentence suffices at doing so. As far as how easy a fix would be, don't you think I'm better qualified to answer that? After all, I am going to be implementing it. Finally, are you expecting me to hand you anything but the wonderful acts of work that I create? Not only do these extra words discombobulate the communication effort, I now have to repeatedly skim them over every time I refer to this message for what I need to do. My time is in high demand, so please speed up my ability to help you by not buttering me up.
Then, you get the side of the spectrum where I sit, the one where the person either never heard this advice or (like me) concluded it was full of crap. We're the ones that don't hesitate to blurt out to your face, "This sucks!" and "I wouldn't even feed this to my neighbor's dog." We're also the ones who will then go over every point as to why we came up with our assessment and expect you to fix them. But however, you won't because of my second point.
For example, instead of taking what I said back to your drawing board you'll be labeling me as a jerk because of my "hateful diatribe."
This same thing happened to me at a previous job. I asked a junior developer to create some custom form that would sort by name, allow you to add new ones (and then more importantly resort once they were added/edited). After a week, I got back something that I used and then immediately told him "didn't work" because it didn't do the one thing I wanted (the resorting). When I said these points, he literally called me "rude", turned around, and went back to his desk. Now, I was able to code what I needed by the time he got to his desk, so I didn't push the issue. However, I wonder if my second point about this little phrase was to blame.
Basically, when you grow up in the mind set that "you can't say anything nice," you conclude that there is something wrong with the person saying these "un-nice" words before you actually listen to what he/she is saying. You can see examples on many Internet based threads. The typical pattern is this. User1 says "this module sucks because it doesn't do blah which I really need." This thread will then quickly fill up with replies stating how User1 is a "n00b", "Id10t", how they should "use something that has blah", "code it", "be happy with what they have," etc. While it is amazing that these same people lash out using such un-niceities, the fact remains that until someone comes along that can accept such criticism (and possess the resources to add blah), blah never gets added to this module. The module is further hindered because many of the developers that do have the resources to add blah are probably turned away from working on it because of the aura that now surrounds its request.
It's getting late and I need to wrap up so I'll finish here and ask that "if you can't say anything nice, shout it loudly!"