The Right Glue
August 2009
By Dean
Last night, Youtube raised its cocky little head and said, "Hey, Dean! I have a new TED talk for you to watch!" TED talks, being my only subscription on Youtube, have shown me hours of insightful ideas. If you haven't heard about them, you should check a few of them out. They're definitely the best thing on Youtube.
But most importantly is Daniel Pink's talk regarding the nature of motivation and how performance incentives affect performance. If you don't have the 20 minutes or so to watch the video, allow me to paraphrase:
When people are given tasks that can be accomplished largely by rote, performance incentives will increase productivity. In other words, if I have a task I need done, and that task doesn't require anything other than an uncreative, mechanical approach, I can get people to do it faster by offering to pay more to the people who get done first.

So far, that's just basic economics: people are motivated by payoffs.

But when the tasks require creativity, such as solving a puzzle whose solution isn't immediately obvious, performance incentives actually decrease productivity. The idea is that incentives help to narrow focus onto the task, preventing people from seeing creative solutions as quickly as they would without the incentives.
Daniel gives many examples of studies from different cultures that all show this effect. Incentives statistically stifle creativity and slow productivity. This is in contrast to how most businesses operate, a point Daniel makes many times in his talk.
He relates it to software, as software companies are among those who break away from traditional, incentive-based models to increase productivity. Remember, software is an application of creativity; for the hard problems, obvious solutions don't exist. Programmers have to be creative to see non-obvious solutions to software problems, and that creativity is limited by incentive-based models.
So notwithstanding the obvious fact that people will take advantage of incentive models (causing people to focus their efforts on gaming the model rather than doing the real task at hand), incentive-based models reduce overall productivity in software development!
Daniel mentions in passing that some programming can be done by rote and can be outsourced to incentive-based companies. That seems to be the typical opinion of people who have never had to deal with the result of outsourced code. Indeed, I would argue that all software development is largely creative and none of it is a mechanical process that can be improved by incentives. That's the only point on which I disagree with Daniel. But I digress.
Near the end of his talk, Daniel mentions companies in which there are no schedules, no strong resource management. Just directions and paces set by the individual employees who are motivated by their own desires to learn, to apply themselves and to do good in the world. I can't think of a more appealing way of working. It sounds too good to be true, but he presents the evidence to show how and why it actually works in the real world.
I can't help but wonder how much of this that vampire knew, either consciously or unconsciously, when he designed Stack Overflow. There are a lot of features of Stack Overflow that reflect a deep understanding of motivation, and some that seem to go against Daniel's evidence. At this point it seems to me that Jeff Vampwood's team came to their model by accident, without knowing about motivation's true facts.
For example, Jeff has stated very clearly that software is a craft, and therefore an exercise in creativity. But at the same time he implements a model in Stack Overflow that incentivizes answering programming questions. This has lead to a related problem where people answer questions very quickly in order to get the most reputation with the least effort.
While it's true that almost all questions on Stack Overflow are not answerable by just anyone, the people who do know the answers will agree that most questions are simple and easily Googled. So while answering them requires creativity, the experts don't need to apply very much creativity to solve them. In other words, the problems are so simple relative to the hard problems programmers face on a daily basis that they might as well be mechanical problems, and so incentives help the productivity of the site's users.
Additionally, Stack Overflow has a concept of "community wiki" questions, wherein no reputation is awarded to participants. Questions that probably won't have single answers are encouraged to be community wiki in order to remove the creativity-stifling incentives created by reputation.
I think that if the Stack Overflow team had understood better the nature of motivation as Daniel describes it, they would have had a much different approach to reputation and the concept of community wiki. Rather than seeing community wiki as a way to gather many good ideas, it should have been seen as a way to gauge the creativity required to solve a problem. Dead simple problems would be normal, incentive-based questions and problems that are hard to solve should be community wiki, even if there probably is only one answer.
This is, of course, assuming that people really see reputation as an incentive. I personally don't. It's just an arbitrary number associated with my account. This number can't buy video cards, it can't make me happy, it doesn't welcome me home from work every day. But the way Jeff writes and speaks about reputation it's obvious that he intends it to be an incentive, which means he's accidentally harming the productivity of his community.
It's a very interesting idea that you can't really force productivity increases. If you still haven't watched the video, I suggest you do. It's worth every minute. Now if you'll excuse me, I've been neglecting my sandwich.
Latest comments:
By Dean
Note that the following post has nothing to do with fishing, fish, tackles, lures, "catching the big one" or any other euphemisms. It is brought on by the fact that it's been too long since the last post and that it's too hot to turn on my gaming desktop. Why is it so hot? I choose to blame NASA arbitrarily for this heat. It's Hubble space telescope's fault. (Also, this laptop I'm using has a very non-standard keyboard so if you see a lot of out-of-place slashes you may join me in cursing HP for putting slashes in places slashes just should not be.)
Today I wanted to write about teaching and learning. While these things don't have anything specifically to do with software development I'm going to write about them anyway because I find them interesting. And it's not like the off-topic police are going to come shoot me with tasers or lasers or radars if I post something slightly tangential to my site's primary topic. Like a lot of things I've written about recently, this one is driven by behaviour I have observed on Stack Overflow.
I believe very strongly and fundamentally in helping people who help themselves. This is at the very core of how I approach learning and teaching. To bastardize an old proverb, I don't believe in giving a man a fish, I believe in teaching him to fish, provided that he is capable of learning how to fish. In other words, I need to be able to guarantee that he'll be able to help himself once I've helped him. If he's going to forget how to fish before the end of the week, there's no point in teaching him to fish because that's just a waste of time and effort.
So it's important to me that when I'm helping someone I am reasonably sure that what I'm teaching will actually be learned. Teaching isn't just a matter of speaking facts or addressing problems publicly. It's an interactive affair that requires as much effort from the students that the teacher is spending. People have different methods of learning and teaching and ideally every teacher and every student knows which methods they all prefer so that they can maximize knowledge transfer; however, in the real world most people think that a teacher can use the same method to teach every student, and that a student can use the same method to learn from every teacher. This is definitely a problem, but it's not what I seek to address today.
In my academic life, in my career and on Stack Overflow I have met and continue to meet people whose learning and teaching styles differ from mine enough that I cannot help them or be helped by them, at least not without a third party to help interpret what's being said. It's unfortunate that there are lots of intelligent people out there who have trouble teaching or learning because they haven't put a lot of effort toward understanding different learning and teaching methods outside their comfort zones. As someone who learns primarily by doing (a method used by only 5% of the population), I've always had to compromise and learn things using methods that don't come naturally to me. (As an aside, this is probably a major contributer to why I find learning and teaching so interesting.) Maybe things are different nowadays or elsewhere, but in my academic and professional careers it seems like not enough is done to help understand different methods. But I digress.
My main point today comes from another group of people that are hard to distinguish from the intelligent-but-out-of-comfort-zone learners: lazy people. Or maybe moron is a better term. Regardless of what you call them, they're the people who realize that if they pretend to not understand your teaching style, you'll eventually just do their work for them or point them to someone who'll do it for them. They're called help vampires and they are the bane of my existence.
I cannot help people like this, because they either refuse to or are incapable of learning. No matter what methods of teaching one tries, no matter what strategies one uses to break the problem down into easy-to-understand components, help vampires do not learn. At this point one is forced to either just give them the answer without teaching them anything (in which case they'll come back again for more later, annoying everyone), or ignore them (in which case they'll probably spread rumours about how unhelpful you are).
When a user appears on Stack Overflow asking a very poor question, everyone has a choice. Should they answer the question, even though it might be asked by a help vampire? Should they ask for more information as proof that the asker is capable of understanding why the question is poor? Should they ignore it? Write to a moderator telling them to delete it? Go out for a coffee milkshake? Every user has his own way of approaching this choice.
Personally, when helping someone, I need confirmation that he is not a help vampire. Confirmation can be as simple as looking up past questions the user has asked to see if they had similar problems. If every single one of a user's questions are poor, then that's pretty clear to me that the user isn't willing to learn. If the user has never asked any questions before, I'll ask them to elaborate. If he doesn't understand why I need more information then it shows he doesn't understand his own problem, meaning he hasn't put any effort into solving it himself.
Now, I want to make something clear, when I say "poor question", I don't simply mean it isn't in well written English. I'm not so superficial that I can't try to understand the deeper problem the user is trying to describe in a language he hasn't mastered yet. Simply not speaking English natively isn't enough to make a question poor. I've seen poor questions written with beautiful, clear, unambiguous grammar, just as I've seen amazing questions written by students who are obviously just learning English.
When I encounter a help vampire, I instinctively regard everything he writes as spam. That's what it is, after all. It's a user posting information that serve no purpose other than confuse volunteers out of time that would be better spent answering questions from users who are capable of learning. Content produced by help vampires is a net drain on the system, and they should be removed from the community for the good of everyone.
And of course, as usual, when I act on what I believe in I'm met with resistance from people who think it's more important to be "fair" to everyone than it is to make sure users aren't soaking up volunteers' time and effort only to have them come back with the exact same question next week. On Stack Overflow, at least, users are not entitled to answers to their questions.
If a user doesn't put any effort into understanding his own problem then no one should expect a community of volunteers to help him. There is a large number of users who think the opposite, and I invite them to explain why they think so. At least for now I have this post I can use to explain myself whenever it comes up. I'm tired of having to justify myself for trying to improve a community.
Latest comments:
This is some kind of footnote. This webpage is awesome and can be viewed in any browser. Even ones that suck ass like Safari and Firefox. Isn't that awesome? This site is best viewed with browsers that aren't maximized on large-resolution displays (> 1024 pixels in width). But then again, if you are running a large resolution and browsing maximized, then you're a terrible person so you don't really deserve to see this site at its finest. Jerk. I mean, seriously. I spend all this time making a nice site and your silly browsing habits ruin its look. That's really cold, man. If you're using IE6, then in order to see the cool avatar effects you need to enable JavaScript. No rights reserved by Dean Whelton (who is awesome) of any of the content, images, design, backend or electrons used in this site. Steal at your convenience. None of it is worth stealing anyway, so there. I have even made an RSS feed for more efficient theft of my intellectual property: CLICK IT NOW!!! Now, don't say I'm not generous. I guess if you want to know more about me, you can visit the about page. It's not really an about page, though. It's just one of the first posts. I don't feel like making a real about page. You can contact me, too. If you feel like it. Are you really wasting time reading this? Go outside or something.