TL;DR: Stack Exchange favors standard, fast, and complete answers at the expense of novel, creative, and excellent answers. This bias results directly from reputation ratings, badges and other extrinsic motivations, which form the core of the system and can not be removed. Therefor, the quality of answers taken as a whole will likely never increase (though it may be good enough for nearly everyone at the current level).
As a preface, I've stopped using Stack Overflow after participating in the beta and using the system for a while. I'm not trying to stir up controversy or ruffle feathers, though that seems likely to happen. Rather this is a postmortem of one user's experience with Stack Overflow.
I've always enjoyed answering programming questions. It's a regular part of my job and one of the reasons I enjoying coming in each day. I remember when I discovered Usenet and the vast flow of questions from all over the world. It was like discovering a new continent. For a long time, I participated on
comp.lang.perl.misc where I learned so much about Perl and programming in general. And I had fun.
Sadly, Usenet has problems that are intrinsic to the system. The same questions are asked over and over. Then the same answers are given. Then the same corrections and refutations of the answers. Then the flamewars. It got old and I eventually gave it up.
So when Joel Spolsky started talking up Stack Overflow it seemed like an ideal replacement for Usenet. And it does correct a number of problems with previous systems. Notably, very basic and common questions are not commonly asked on Stack Overflow anymore. People seem to be able to find their answers without having to ask and if by some chance they do ask, they are quickly pointed to the canonical question. It's also a plus that people can correct minor issues with other people's answers without implying they are losers or stupid.
Stack Overflow does so many things right and it was just the sort of system I thought I wanted, but I started losing interest. For a long time, I thought it was because there was no
meta.stackoverflow.com for people to have a place where they could, well, talk about meta-issues. But after months away from the system, I think the problem runs much deeper.
When I first answered a Stack Overflow question, the little number next to my name started to go up. It was pretty neat and made me happy to have answered well. As I submitted more answers, the number started to go up a little faster. Pretty soon I started looking for questions to answer that would make my number improve even more. I love answering questions, but I also liked getting my number to go up. Pretty soon, I found that I made a little calculation before starting to answer a question: "Will this make enough of a difference in my number to be worth my time?" By the end, I was avoiding answering questions that I was interested in answering because there were already a few good-enough answers and I was unlikely to increase my number.
If you've taken a psychology class or two, you probably see the problem already: my intrinsic motivation was completely replaced by an extrinsic motivation. While there is debate among psychologists as to whether extrinsic rewards always drive out intrinsic motivation, few would agree that extrinsic rewards are better or more effective than intrinsic ones. We instinctively know that people perform better for love of the game than for a paycheck. When the extrinsic reward is a little number tacked to the end of your name, it seems even less likely to be effective.
The FAQ says: "Reputation is completely optional. Normal use of Stack Overflow — that is, asking and answering questions — does not require any reputation whatsoever." The first sentence is, of course, a lie. If you participate on Stack Overflow, you have a reputation number whether you like it or not. In addition, the "reputation" concept forms the core of the Stack Overflow experience by design. The second sentence clarifies the first to explain the nugget of truth: you don't need to understand the reputation concept in order to begin working with Stack Overflow. In other words, the reputation system is extrinsic by design.
While researching motivation theory, I came across this paper. One paragraph in particular seems to sum up the Stack Overflow experience for me:
Extrinsic rewards have been found to reduce intrinsic motivation, but not in all circumstances. The majority of published research has dealt with the effect on motivation rather then performance, but consequent effects can be evident in performance, and there are many theoretical predictions supported at least in part by empirical findings. When people are intrinsically motivated they tend be more aware of a wide range of range of phenomena, while giving careful attention to complexities, inconsistencies, novel events and unexpected possibilities. They need time and freedom to make choices, to gather and process information, and have an appreciation of well finished and integrated products, all of which may lead to a greater depth of learning and more creative output. Extrinsic rewards tend to focus attention more narrowly and to shorten time perspectives, which may result in more efficient production of predefined or standardised products. Job satisfaction and long term commitment to a task may also be affected.
It's tempting to think that hiding or truly making reputation optional would fix the issue, but I'm not sure that a fix is possible even if it were desirable. If you look around at questions and answers on Stack Overflow, you'll find they are quite standardized, efficient and timely. In fact, from the point of view of a programmer looking for an answer, Stack Overflow works nicely, thank you very much. It seems like there are plenty of people who can thrive or ignore extrinsic motivation, so there doesn't seem to be a broad problem here. If you want to make an omelet, you're going to break a few eggs.
Just don't expect to get chickens.