We joke about “Copying & Pasting from StackOverflow”. We commiserate with the countless hordes who have been shunned by the high-rep elites for…whatever reason.
And yet, I’ll guess that most of us visit StackOverflow on a daily basis. It’s become an ubiquitous part of the programmer’s workflow.
I’ve been a member of StackOverflow for years, once being an active reviewer, and in the top 5% of answerers for some popular tags. But now, StackOverflow has all but vanished from my workflow. It’s become something few anticipated, and fewer want.
It wasn’t always like this. What happened?
I stopped answering questions on StackOverflow a couple of years ago for two reasons, the most pressing being that there weren’t any questions to answer.
That may sound absurd, when thousands of new questions are posted every single day, but most of them fall into one of three categories in the eyes of the core community:
- If anything even remotely similar has ever been asked, the question is quickly downvoted and closed as a “duplicate”. Unfortunately, quite a number of “dupe-flagged” questions are false positives, but there are seldom second chances at StackOverflow.
- Even if a question manages to escape the dupe hammers, if it deals with anything that isn’t puzzling to an expert, it’s fairly likely to get dumped on, a la “how dare you ask why you can’t cast a string to a double, you snivelling plebeian.” Oh sure, the new community rules have reduced this sort of talk in the comments, or at least driven it to be more passive-aggressive in nature, but it hasn’t prevented harassment downvoting.
- Most of the remainder of the questions tend to be cerebrally domain-specific which, while not bad, are seldom reusable.
EDIT: This doesn’t count the “questions” that need to be flagged and closed for being spam, “giv me da codez!!1!”, or entirely off-topic. I’m talking about actual questions.
This hasn’t always been the case, of course, but that’s largely because in StackOverflow’s early days, most questions hadn’t been asked yet. Segfaults and syntax errors were still worthy of discussion. Those days are long gone. At least in part, StackOverflow’s ubiquity is its downfall.
“Just buck the system, then,” one might think. “Answer everything worthy of an answer, whether the community likes it or not.” That would be great if it worked, but unfortunately, one of the greatest crimes in the eyes of the core community is to answer a question they deem unworthy. Not only do they not want to play with the unpopular kids on the playground, but you’d better not either! The popular kids have downvote buttons, and they relish the opportunity to use them.
That’s the second reason I stopped answering. I was sick of getting punished for it.
Even once there’s a good question being asked, there isn’t much hope for good answers.
The first reason is well-known by the community, who refer to it as the “fastest gun in the west effect”: the first answer often becomes the upvoted and accepted favorite, even if it’s altogether wrong. The reputation system was supposed to be a check-and-balance on this, but it often only serves to amplify this phenomenon.
There’s only one way in which reputation works against the “fastest gun” effect, and it’s not a good way. In each major tag, there seems to be an elite crowd of people who have tens of thousands of rep points. Those badges seem to evoke a knee-jerk response by everyone else: “If this high-rep user says it, it must be so!” Yet I’ve lost count of the number of times the high-rep user gave an answer which was partially, or even entirely, incorrect!
I’ve had to cease relying on StackOverflow altogether in researching “Dead Simple Python”. It’s seldom accurate, an unfortunate fact that has led to most of the
#python (Freenode IRC) community dismissing StackOverflow as dangerously misleading.
The reverse is also true: while the high-rep users get automatic upvotes, the newer or lower-rep users often get ignored, or downvoted outright, because they dared to compete with the high-rep user.
I’ve unfortunately been on the receiving end of this more than once. Although my answer was technically accurate, and fully fit the question, I was attacked in comments or downvoted, simply because another high-rep user had already answered, or wanted to answer. I don’t have enough reputation to gain admission into the elite, and the elite don’t seem to like expanding their ranks.
The gamification of StackOverflow is out of control. Votes are no longer related to accuracy and usefulness. Reputation has become the object in-and-of-itself! And when it comes to rep, the rich get richer, the poor get poorer, and it becomes quickly apparent to newcomers that StackOverflow is a losing game for them.
When you combine the discouragement of both new questions and new answers, you wind up with a site that is rapidly becoming out of date. The last several dozen times I tried to use StackOverflow to find information, I discovered the top answers were often woefully outdated.
Programming is a fast-moving field, so the best answer to a question today may be completely different than best answer to that same question in a year. We need new content, even if it might be “duplicate” content, to keep the conversation alive and recent.
Do I really need to say much about this? The comments sections on StackOverflow is nothing short of a trash can fire half the time. Mutual respect, patience, and compassion regularly go out the window.
“But didn’t they fix that with their new community policy?” you ask.
If only! A Code of Conduct only works if enforced by fair, polite individuals who care about the entire community.
StackOverflow is effectively run by people who have earned their moderator powers through sufficient reputation points, with the top mods being elected. It’s like any other oligarchic democracy: the elite run the show by default.
Unfortunately, the only thing the Code of Conduct seems to have done is to encourage the offenders to get more passive aggressive in their attacks.
As I said, the high-rep users get automatic access to most moderator tools, and they often use them to their advantage. Questions are inappropriately closed as duplicates. Otherwise good content from the unwashed masses is flagged and closed as “low quality”. Actual bad behavior from the elites is overlooked, since it’s the elites who clear the flag queues.
I wish I were making this stuff up, but I have many of those moderator abilities on StackOverflow, by sheer merit of the 4K+ rep points I’ve managed to scrape up over the years. I used to try to push back against these abuses, but majority rules…and the majority of active “trusted users” like it this way.
I don’t like what I’ve seen StackOverflow turn into. Downvotes have been weaponized, and all suggestions to implement basic accountability into their usage have been summarily shot down, to the cry of “I can anonymously downvote who I want to! It’s my right!” Many good, honest questions are shut down. Bad answers are praised on the sheer merit of the poster’s existing reputation, while many good answers get downvoted so as to not outshine the Chosen Ones. Moderator tools have become yet one more means of keeping the “unwashed masses” in their place. Unpopular people are roasted for the slightest perceived offence, while gross misconduct is overlooked, and even rewarded, among the elites.
In short, StackOverflow has become a temple to ego and elitism.
DEV has had a
#help tag for a while, and I look forward to seeing that grow. Our site’s compassionate moderator team, lack of gamification, and avoidance of a public “downvote”, have all contributed to a healthy, supportive community. But we can’t rest on our laurels; we must work together to keep it that way!
If I could find where I parked my TARDIS, go back in time, and pre-empt StackOverflow with a community of my own design, here’s what I’d do:
- No downvotes. In the end, these only serve as a means of anonymized harassment. Upvotes are usually more than sufficient. (Actually, I’d like to see how ranked-choice upvoting would work in a Q&A setting.)
- No “duplicate question”. Every question is different, and even the slightest variation can radically alter the answer. What’s further, solutions are continually evolving, so the right answer today may be completely wrong in five years. Instead, allow linking related questions.
- Avoid gamification. When users “earn” reputation from upvotes on their questions and answers, the focus becomes competition instead of knowledge sharing. This is detrimental to a community.
- Moderators are selected for their conduct, not their popularity. Put moderator tools in the hands of the people whose behavior proves they can be trusted. If they abuse those powers, especially after initial warnings, remove their moderation abilities.
- Encourage learning. Don’t allow the community to punish people for not knowing basic facts. Help them learn how to learn! That’s one of the reasons DEV is so incredible; tags like
#beginnerscreate a safe environment for greenhorns to ask questions that would be deemed “stupid” elsewhere.
StackOverflow was a nice experiment, but I think the results are clear. We need a new solution.