Or, why Linus is wrong about being a jerk
Linus and co. made a lot of news recently about how Greg KH should be tougher on people who contribute patches to -stable:
So Greg, if you want it all to change, create some real threat: be frank with contributors and sometimes swear a bit.
You may need to learn to shout at people.
I disagree that being a jerk is required. In fact, I believe it to be harmful.
Now, I understand that Ingo Molnar and Linus Torvalds have a lot more experience in open source development than I do, but we can learn about this from scientific studies and statistics, rather than depending on unreliable personal experience.
How to motivate your subordinates to be better
A friend of mine told me recently that every time he messed up a landing while parachuting, his instructors really chew him out. He said that this was beneficial as making an error while landing can be extremely dangerous. Each time after he was yelled at he did better. But is such tough love actually helpful?
In general, which works better: reward or punishment?
In Thinking, Fast and Slow, Daniel Kahneman relates a story about when he was consulting with the Israeli air force. He gave a lecture on how rewarding good behavior produces better results than punishing bad behavior. An instructor, having listened to the lecture, responded:
"On many occasions I have praised flight cadets for clean execution of some aerobatic maneuver. The next time they try the same maneuver they usually do worse. On the other hand, I have often screamed into a cadet's earphone for bad execution, and in general he does better on his next try."
The flight instructor, like Linus and Ingo, rightly see the effects of being nice and being hard: if someone is detailed and meticulous in their patch submissions and Linus et. al are positive, likely the submitter is going to be not as careful next time. But is this a result of the positive compliment or of something else?
Regression to the Mean
In fact, it is not due to the positivity but rather in spite of it. Studies have shown that rewards outperform punishment, so why do people think the opposite?
What Linus and the flight commander think is the effectiveness of being harsh is actually regression to the mean. How well you land your parachute jump is a probability distribution. Most of your jumps are average, some are really great, and some are pretty bad. When you land extremely well it is likely due to luck rather than an immense sudden increase in your abilities. Therefore, your next jump is very likely to be worse.
If your instructor compliments you on your great jump and then you do worse, he may draw the false inference that it was his compliment, rather than regression to the mean. The same is true for your crappy landings: you're very likely to do better next time regardless of how much your instructor yells at you.
This, in my estimation, is what Linus and Ingo have missed. Yelling at people isn't effective, but it can seem that way.
A Robust Personality
The robustness principle is an important aspect to writing quality software. It states:
Be conservative in what you do, be liberal in what you accept from others.
This should be applied to how we, as programmers, interact with each other, regardless of how idiotic the question or contributor may be.
Accept impoliteness from others, but always respond with courtesy.
The world would be a better place for it.
Update: discuss on Hacker News