We joke about "Copying & Pasting from Stack Overflow". 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 Stack Overflow on a daily basis. It's become an ubiquitous part of the programmer's workflow.
I've been a member of Stack Overflow for years, once being an active reviewer, and in the top 5% of answerers for some popular tags. But now, Stack Overflow has all but vanished from my workflow. It's become something few anticipated, and fewer want.
It wasn't always like this. What happened?
We've Run Out of "Good" Questions!
I stopped answering questions on Stack Overflow 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 Stack Overflow.
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 Stack Overflow'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, Stack Overflow'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.
Answers Are Popularity Contests
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 Stack Overflow 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 Stack Overflow 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 Stack Overflow 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 Stack Overflow is a losing game for them.
Past the Expiration Date
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 Stack Overflow 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.
Don't Read The Comments
Do I really need to say much about this? The comments sections on Stack Overflow 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. Stack Overflow 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.
Moderator Tool Abuses
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 Stack Overflow, 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.
It's Our Playground, Go Home
I don't like what I've seen Stack Overflow 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, Stack Overflow has become a temple to ego and elitism.
What Now?
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 Stack Overflow 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
#explainlikeimfive
and#beginners
create a safe environment for greenhorns to ask questions that would be deemed "stupid" elsewhere.
Stack Overflow was a nice experiment, but I think the results are clear. We need a new solution.
Top comments (96)
Regardless that I've got down votes on valid questions like this, this, and this
Marking duplicate questions is a good thing (the idea itself).
Down voting questions that are literally asking for nothing but "do my work for me" is a good thing too.
Commenting on questions to get more info before answering is another good thing.
The problem is not in these features, maybe the problem is merely with people abusing those features.
I certainly agree with all three of those points, at least for the most part.
I don't think commenting should go away.
I think flagging a duplicate needs to NOT close the question. Often, further conversation or additional answers are justified.
Downvoting can be useful in theory, but again, there's no accountability. We should have flags for things that are provably bad, and simply withhold upvotes for the rest.
The problem with downvotes is basically...
They're anonymous signs of disapproval, which tend to bring out the worst in people. (Mob mentality)
They have no attached explanation, so no one can learn from them. (Accompanying comments are not required, and are even vehemently discouraged by some elite factions on StackOverflow.)
There is no way to implement accountability. They can be habitually misused, and nothing can be done.
A flag, on the other hand, is not anonymous, has full accountability (it can be rejected), and has accompanying helpful explanation.
As for the duplicate question thing. If questions could be merged somehow into some kind of subject umbrella that would help.
I hate having a question marked duplicate and go the the linked question and it doesn't have the answer needed.
So do you follow the advice on SO for that circumstance? Which is to ask a new question, in which you can explain that the duplicate to your previous question didn't provide an answer because...
Unfortunately, sometimes that's when your new question is marked as a dupe of your previous question, and you get flagged for spam.
Not making it up.
Those 3 question have only upvotes.. just saying :)
...which begs the question, were the downvoters removed from the network? I know they're always having to break up illegal voting rings.
So, this is a good thing that SO takes care about unfair downvotes, right? Or am I missing you?
It's a good, but it's not enough. The only time they care about downvotes is when there is a provably organized effort by a group of people to attack (or support) targeted individuals through voting. The daily, individual abuses of the system have always been altogether ignored.
BTW, this is just the aurora of DEV community... Meaning the upvotes came from here since I posted the links here.
So...we've become an accidental voting ring? o.O
(JK)
Yeah 😆
One thing that SO desperately needs is a way to "update" an answer. The correct (or best-practice) way to center a
<div>
10 years ago is not the best way to do it now. An easy way to accomplish this would be to weigh upvotes based on how recent they are. More recent = more weight. An answer that's been receiving more votes lately should appear nearer the top than an old answer that received more votes a long time ago.They already had that feature. Just some questions were only valid at that time, so that the answer doesn't need to update, just leave them there as a historical reference. Some other questions, if you found an other answer recently, be nice and give your answer. If the question's author is still active, he will update the answer flag. Otherwise, users will upvote your answer when they find it useful for them and moderator will base on that to update the answer flag.
That's why, when searching SO for answers, I always look at the dates, and take that into account. A mechanism automatically downgrading outdated answers will be either very sophisticated, or very inaccurate.
And, regrettably, sometimes we have to keep the code compatible with MSIE...
That's what I've always believed, but that exact proposal was shot down multiple times by the Meta community, to the tune of "We have the RIGHT [waving angry fist] to downvote whomever we want, whenever we want, without having to give an accounting for it." Someone said almost exactly that to me in one such conversation on Meta, minus the angry fist. He got a lot of upvotes on that response, too. That's when I concluded the core SO community actually values downvoting as a harassment tool, and doesn't want to lose that power. Any other use of DVs would fit in nicely with some simple accountability.
As someone whose job description is CEO (as in "responsibilities", not "paycheck), it's not as easy as it sounds. People think management is the easiest thing in the world: like you said, "just hear people," but the difficulty comes when everyone has different views, and they're all shouting over each other...which is exactly what StackOverflow Meta is most of the time.
Running something as big as StackOverflow takes a solid understanding of programmer culture, human psychology and sociology, and communication. None of those subjects are particularly cut-and-dry. You try things, discover they don't work, and then adjust your approach. Over and over.
DEV is amazing, and I've been incredibly blessed to have been involved pretty deeply as a member somewhat early on. I was invited to be one of the first community moderators (an honor I still haven't wrapped my head around), so I've been a part of a number of discussions about site policies. It isn't simple. The tremendous amount of discussion, consideration, and experimentation that has gone into getting DEV to this point is mind-boggling. I have massive respect for @ben, @jess, and @michaeltharrington! Their jobs are not easy.
With all that said, I think the fact StackOverflow got this bad shows that Spolsky and the rest of the leadership missed some major red flags. I don't know why, nor will I try to guess. But I can understand why Spolsky stepped down. He has no idea how to dig them out of the hole they're in, and in fact, doing so may be utterly impossible at this point.
Seems like you and me are using different StackOverflows. I don't see the community "dumping on" questions that "aren't puzzling to an expert". Questions where the greatest puzzle is what the author is actually asking, however, or the "do me homework for me" kind, however... well, that's a different story. Your observation on the comments being "nothing but trash can fire half the time", can be reconciled with my own experience of SO only by introducing the auxiliary theorem: "the Python community is waaay more vicious than the JS community".
As for downvoting - it isn't free (at least on the answers). When I downvote your answer, we both lose rep points. That mechanism in itself discourages downvoting on a whim. I don't get downvotes often, but when I do, it's a rare occurence when I have reasons to think "It's a perfectly valid solution and someone's being a jerk".
Upvoting of the "elite" and downvoting of the "peons" even if their answers are correct? Again, not my observation. I see, however, technically correct answers with negative votes when they're third or fifth copy of the same exact solution. If you're about to post an answer to a question that already has one, yours should bring something original - otherwise, what's the point?
Many a time I saw someone post exactly what I was about to post (and what I'd even started typing) - a little frustrating, yes, but the reasonable thing to do was to click on "Discard", upvote their answer, and move on.
As I said to another commenter, I'm glad you've had a different experience. This is based on about ten years of being a part of that community, as well as the experiences of many people I've mentored and worked with.
As someone who spent a lot of time in the review queues, I regularly flagged to close those sorts of questions. I'm not even remotely referring to those. I'm talking about good, well-structured questions that some of the "cool kids" decided was just "too obvious" (to them) to be worthy of existing, and so they attacked by all means possible. You'll notice in the comments on this article, I'm not the only one who has seen that.
As I already mentioned in another comment, JS is indeed different, partially because you haven't "run out of questions" in that ecosystem yet, and TMTOWTDI is unavoidable. Yet, interestingly, the Python community as a whole all but disavows StackOverflow, both for the rampant inaccuracy and the unhealthy social dynamics.
Meanwhile, I've encountered the same first-hand in relation to C++, C, and ActionScript, not counting the typical patterns of behavior I observed in many other tags through my helping to clear the review queues. At one point, I was spending 1-3 hours a day in the queues. I was actually watching these behaviors become a norm.
When you have tens of thousands of reputation points,
-1
means absolutely nothing. So, in effect, it is free if you're an elite. It only costs something if you have little reputation to spend.Downvoting questions, of course, is always free, so it provides a convenient, anonymous way to harass newcomers. And yes, it happens regularly. I lost count of the "first post" instances I encountered in the queues which were fully qualified as good questions (well structured, clear, not a duplicate), but it was downvoted heavily anyway.
Agreed, but again, not what I'm talking about. What's further, sometimes the non-popular user posts first, but when the elite user comes along and posts the same content, the less-popular user is downvoted. This was something I, again, saw happening more and more via my work in the review queues. That phenomenon was half of the reason I stopped ever trying to answer anything.
So, I'm glad your experience has been better. StackOverflow is a big place, and as I said in my other comment, it's perfectly possible not to notice the bullies on the jungle gym from the swings.
As I agree with part of this, I think you are only complaining and alternative is a joke. I cannot find anything literally on dev.to even now. Amount of questions in the stack overflow is so humongous that it is not even possible that such tool like dev.to can be any alternative. For the argument that you cannot just start on StackOverflow because you loose as a new user is also a false statement. I had start to play with it about 3 years ago, and I just pushed hard on the beginning ( like 3k in the first year), now I have 8k+, not a big thing, but for sure it proves that you can start there and literally help a lot of devs. Also never felt that there are votes for users with better reputation.
Next point, no duplicated questions - this is a problem, but I dont see a way to maintain 1000+ questions like - how to convert number to string in JS.
No Down votes - this is a good point, and I agree, I had this situation few times, that for no reason I was knocked out by some minuses.
Stack has many problems, but they are social not technical ones. Yes, people answer mostly because of gamification, because they want to have nice scores. But this is normal, human are like that, they need some reward for the effort. Sorry I don't believe system without gamification will have any engagement from the community.
You should check out this website called DEV.to. Somehow they have regular engagement from the community without any form of a gamification. :P
(Excuse the sarcasm...that was too hilarious to pass up. You have to admit it's an ironic statement considering.)
I think you're exaggerating quite a bit. While all you describe happens to some extent as expected (many people on the internet are impolite d**** and the SO community is big enough to make matters worse), in my perception it's not as bad, as you describe it to be.
What I personally don't like is that they don't allow for opinion based questions about best practises (e.g. what's the best approach to ...) even though many of those still existing are very popular. I think this is an area, despite all the flaws of a voting system used by humans introduces, the system could really shine.
I'm just describing my own decade of experiences on the platform, combined with the experiences of people I've mentored and helped over the years. It hasn't been pretty, no exaggeration.
Maybe for someone frequenting different tags than I did, it would look different? StackOverflow is certainly big enough that one can't necessarily see all the bullies on the jungle gym from the swings. ;)
You make an interesting point. I mostly spend my time with JavaScript/TypeScript. Maybe it's less bad for those?
You know, that would actually make sense! JavaScript is a very wibbly-wobbly language (so many subtleties), and the frameworks are constantly shifting around, so y'all haven't run out of questions yet. And maybe y'all never will! There's also likely to be more respect for alternative solutions, since There's More Than One Way To Do It (because everyone is using a different stack).
I spent a lot of time in C++, C, Python, and ActionScript 3.0, among others. The problem definitely seems more acute over there.
A troll is someone who breaks site rules habitually, often just for the sheer thrill of doing so. A sockpuppet is a fake account created with the express purpose of bypassing a ban or performing malicious actions repeatedly. Serious trolls often create multiple sockpuppet accounts.
Also, a greenhorn is a newbie.
You forget, Spolsky and Atwood were having fun too. They didn't want war, they wanted a healthy, fun, vibrant community. But they failed to recognize that if they automatically linked "smart" and "powerful" in this industry, they'd wind up with all the antisocial egotists having the moderator tools. They forgot everything Weinberg ever taught us!
You can have fun, but that doesn't nullify the fact you're still doing hard work. It's not a matter of complaining. Coding is hard, but I love it. Making a decent apple pie is hard, but I love it (just made one this afternoon). To pretend it's easy doesn't help anyone. Everything is easy to the person who isn't doing it.
I think @ben and @jess would say that, yes, running DEV is hard work. Nothing saying it isn't fun most of the time.
reputation is a tool trying to address low quality inputs
but most of time it also punishes hard newbies to same levels as grieffers
in the end, creating some kind of closed "circle-jerking" communities
for that aspect, it is not specific to stackoverflow
but that sad because thoses issues are 20 years old... ^
One might argue that's a major reason why Reddit is what it is.
That's why I'd like to see ranked-choice upvoting instead of typical upvote/downvote. You can pick one best answer, one second best, etc, and anything that isn't correct or useful, you just don't vote on at all! (And then use flags for objectively bad content.)
This is a good article. I have never contributed to StackOverflow because I feel like just about every question has been asked, and any question I could answer has been answered. I personally like don't want to reinvent the wheel and if I can gain insight on how to tackle a common problem with easy then I'm all for it. Sometimes the solutions are things I would've never come up with by myself or any sort of documentation reading or tutorials would have got me to. I personally like that duplicates are marked and just have links to another discussion because there's a defacto discussion for a problem instead of me trying to find out if all the 10 discussions on the topic say the same thing. To me a downvote signals it's not a quality answer and I feel like to me it isn't abused. Ever answer I've seen severely downvoted is because the person answering didn't read the question or isn't providing any value. I do feel that I've seen some of the accepted answers that aren't the best answer. However, your article sheds a whole new light for me on the politics of the community. Nice read!
if you never contributed to stackoverflow because you think everything has been already answered, then you probably tried nothing really new or more complicated, how then you think others still get questions and answers, wouldn't they get duplicated questions? You cannot force it think out of your head, you need to come into a requirement that you have to solve and you found a solution by trial and error yourself, and I tell you a secret, stackoverflow in my opinion contains about 10-20% of programming knowledge the remaining 80% is on github or elsewhere or not replied, so sometimes you just have to only copy and paste from github forums, and I either post a question and a reply where I can't google it, or I copy it from Github.
Definitely in the nothing new category. When you work with something established like the Spring framework there are plenty of complicated tasks that someone else has done that's present on StackOverflow.
This article would be 100% better if you linked to or screenshotted actual examples of the problems you're talking about.
It's easy to claim that people respond with 'how dare you ask why you can't cast a string to a double, you snivelling plebeian.' but … do they really?
It's easy to claim that you've lost count of the examples where a python answer is completely wrong, but … if there are so many, surely you could give just one or two examples?
I'm sure your general point is valid, but to be honest, the specific claims you're making seem highly exaggerated.
The trouble is, one doesn't usually keep a log of something that vast and depressing, and it would be an enormous task to compile enough evidence. I know I'm presenting this without citation, but as you can see from the comments on this thread, I'm not alone in these observations.
As I've said to two other comments questioning exaggeration: this is my experience, and those of people I've mentored and worked with. I'm glad yours has been different.
I didn’t say my experience was different.
Also there’s nothing to stop you searching Stack Overflow right now and adding a few examples, either in a comment or in an update to your article.
P.S. The "sniveling plebeian" line was an expression of attitude, not a direct quote. Actually, I wouldn't quote some of the stuff that I've seen. A lot of it would violate our CoC.
You can blank out any swear word. Or you can link to the offensive post with a warning and not quote it directly.
I already have enough work, I don't need to be pouring hours into finding sufficient examples to satisfy you. I'm sorry. You're welcome to look yourself, as it is a public website. Otherwise, you can believe me as is, or you can disbelieve me. I really don't care whether you believe me or not. This is not to say there is no evidence, just that I value my time too highly to spend it digging up toxic waste.
I wrote this article mainly for the people who have had these experiences themselves, and to start a discussion about what went wrong, and how to prevent those mistakes from being replicated elsewhere.
Why are we so afraid of duplicate questions or "do my work for me" questions? Wouldn't the community see this and won't answer. "Let the markets do its job"?
Love the idea of "related" .
I completely agree that with rapid change in technology, duplicate questions should be allowed to get "newer" answers.
Excellent post by the way.
This is how I've always felt about it. Instead of marking as dupe and being a jerk about it to a new user, just move on. Then the more friendly people can answer the question and get more rep and the high rep people won't have to waste time "educating" new users and can go back to trying to snipe easy questions off of New.
Joel Spolsky stepped down as CEO shortly after the new Code of Conduct was rolled out. I wonder if he saw how little the CoC changed things, and quit because of it. After all, he did say something to the effect of "I don't think I'm the right fit anymore" (not his exact words).
You claim to be a CEO, but do you have a board you answer to? Might change your perspective.
As I already said elsewhere in this thread...
...so I'm really not sure what "perspective" you're implying needs changing.
Interesting. I've tried using SO as a resource for answering questions while learning Python and found it less than helpful the majority of the time. Often the questions were too complicated and specific for a noob like me to extrapolate to my situation and the answers provided too complex for the simple question I was trying to answer. Sometimes, I'd find the more simple answer I needed for my 101 class buried towards the bottom heaped with scorn (not encouraging for a noob) a la "Ugh that's such a hackish way to do X. Learn how to code." I'll try the #help tag sometime.
Some comments may only be visible to logged-in visitors. Sign in to view all comments.