My Love-Hate Relationship with Stack Overflow: Arthur S., Arthur T., and the Soup Nazi
Warning: In the interest of maintaining a coherent stream of consciousness, I’m lowering the setting on my profanity filter for this post. Just wanted to let you know ahead of time.
I’ve been a user of Stack Overflow since December of 2008. And I say “user” both in the software sense, and in the drug-addict sense. I’m Jason S, user #44330, and I’m a programming addict. (Hi, Jason S.) The Gravatar, in case you were wondering, is a screen shot of a Commodore 64 game called The Castles of Dr. Creep.
I joined Stack Overflow a few months after the site opened as a public beta. At the time — and this is going to be prone to revisionist history, because I didn’t take good notes every step of the way; sorry — I was an embedded hardware and software engineer, trying to port some small PC software tools I had been working on, from the hell of C++/COM/Windows to Java. Learning the Java language was a breath of fresh air; no more worries about IDL or memory management or
CComPtr<ISomethingOrOther>. But I had only been programming in Java for a few months, and still had lots of questions. Somehow I stumbled on Stack Overflow, probably through a Google search.
For those few of you who haven’t used Stack Overflow (where have you been hiding?) it’s a collaborative question-and-answer site for programming. You post a question, you often get answers. Hurray! Jeff Atwood, one of its founders, described the site early during its development this way:
Stackoverflow is sort of like the anti-experts-exchange (minus the nausea-inducing sleaze and quasi-legal search engine gaming) meets wikipedia meets programming reddit. It is by programmers, for programmers, with the ultimate intent of collectively increasing the sum total of good programming knowledge in the world. No matter what programming language you use, or what operating system you call home. Better programming is our goal.
Back then, when you had programming questions, there weren’t very many useful options that were universal. Google searches in Java pulled up Experts-Exchange (which at the time looked like this), the collaborative site behind a paywall that tantalized you with detailed questions and blurred-out answers, and Java CodeRanch, a forum site that was free and kind of meh. Or there were the newsgroups and mailing lists, if you had questions targeted to particular types of programming. You could ask a question and maybe you would get an answer in a day or two, depending on how well-matched was your topic of discussion.
Stack Overflow, by contrast, was a much brighter alternative. A much brighter orange alternative. It was free, there were smart people there, you could ask almost any question on programming, it had a much nicer interface, along with voting and scoring and notifications, and I was hooked. Yes, I was a rep whore. Those first few months I spent a lot of time there, asking and answering questions, in part to expand my Java knowledge, in part to return the favor and help others, and in part to earn points and privileges.
By June 2009 I had matured to the point where I didn’t care much about reputation anymore. I know this, not because I took notes, but because of Stack Overflow’s search facilities. I can look at my questions, answers, and comments on that site and on the old meta.stackoverflow.com site (now meta.stackexchange.com); here’s one of those answers:
rep points kinda remind me of that whole “Zen and the Art of Archery” business. I’ve gotten caught in that trap of reputation-score-addiction once or twice: poring over questions over and over until I answer one that gets upvoted. It’s not worth it. Post questions or answers because you feel like it or because you think you can provide value to the community.
For the next three years or so, I was an active participant on Stack Overflow and some of the other sites (Super User and electronics.stackexchange.com primarily). Then some things happened. As of February 2015, I have contributed 984 answers on Stack Overflow. All but the most recent 100 answers were from December 2008 until December 2011; that’s about 24 answers per month. The most recent 100 answers I posted from December 2011 until now; that’s about 2.6 answers per month. The most recent 60 answers I posted from May 2012 until now; that’s about 0.5 answers per month.
Why did I drop my participation level?
In part, I was going through some major life issues, one of which was that I was trying to find a new job. (And I started this blog.) But I also soured on Stack Overflow, and decided to stop pouring my energy into that site.
Let’s go back to why I really like Stack Overflow.
In the ideal case, Stack Overflow serves two purposes.
The short-term benefit occurs when someone asks a question. That person needs some help. There are answers. The person who asked a question likes at least one of them and accepts one of the answers. That person has been assisted, and moves on with his or her life. This process might take 10 minutes, it might take a few days, depending on how obscure the question is.
But the question and answers live on. More people add answers, maybe the question and/or answers are edited, and now that question is searchable in Stack Overflow and in other search engines, so other people can benefit. Now we have a long-term benefit. If I want to know what the difference is between the
__getattribute__ methods of Python objects — I can never remember which is which — I can search that on Google and the top three results are from Stack Overflow:
- Difference between __getattr__ vs __getattribute__
- Understanding the difference between __getattr__ and __getattribute__
- What is the relationship between __getattr__ and getattr
All this works really well for a number of reasons:
- User interface rocks! — The Stack Overflow team has put a huge amount of work into making the site easy to use and nice to look at. AJAX stuff: you do something and it takes effect more or less immediately; you don’t have to wait for a page to reload. Logins are via OpenID so you don’t have to remember Yet Another Password, just use your favorite OpenID provider like Google or Facebook to log in. Markdown is the markup language, and it’s my favorite. I write this blog in IPython Notebook using Markdown. Much better than BBCode or some of those old formatting codes used on forums. And you get an instant preview! No more back-and-forth trips between writing markup and looking at the results to see if it looks the way you wanted. (JIRA and Wikipedia, I’m talking to you.) If Stack Overflow wasn’t the first website to offer instant Markdown preview, then at least it was one of the first.
- Website page load is fast — This is always an issue that can make or break a website. Good sites load fast. The ones that are slow (like SourceForge and a lot of Oracle’s Java forums) make people lose patience and give up.
- Social features — We’re talking tagging by subject, upvotes/downvotes, commenting, collaborative editing, moderation, automatic linking to related questions, etc.
- Notification — I get notifications whenever someone answers a question of mine, and whenever someone comments on my questions or answers or replies to a comment of mine.
- Searchability — Not only can you search by full-text or tag or user, but there’s a whole API and you can data mine the site in a bunch of ways.
- Ads are minimally intrusive — Yeah, someone has to pay for the site, but the ads just sit there patiently waiting to be looked at, and if you have a decent amount of reputation, they get hidden automatically.
- The website developers listen to feedback! — These guys listen! You provide feedback via the meta site (formerly meta.stackoverflow.com, now meta.stackexchange.com) and they seriously consider suggestions for improvement, especially when there’s been discussion and consensus. I asked a question in 2009 about the ability to get notifications from multiple StackExchange sites without having to check each one, and somewhere along the line, a feature got implemented. I don’t know if they did this as a direct result of my question (probably not), but now all StackExchange sites have an “inbox” feature where you can see notifications from any of the sites you have logins.
So everyone should use Stack Overflow, right?
Hmm. How shall I say this?
Every online community has its share of assholes.
Stack Overflow and its sister websites are online communities. Therefore, Stack Overflow has its share of assholes.
Now, a good website has moderators that keep the asshole factor to a minimum. And I think Stack Overflow has succeeded in this regard, at least as much as one can hope. But the site is large enough that the policing isn’t just done by a few good guys, it’s done by all sorts of people with high reputation, and the people that police the assholes become assholes themselves. Really good moderators will keep their best face forward publicly, and not engage in heated conversation, but do what they need to do quietly. It’s a dilemma. Do we just allow the really decent people to be moderators, and to get overwhelmed by the work they have, or are we realistic and allow lots of people to participate in moderation, and live with a few errant assholes?
Stack Overflow has taken the realistic viewpoint. There are a handful of democratically-elected moderators who are supposed to follow some pretty-clearly worded guidelines about how to be good moderators. The site also has a much wider set of users with privileges:
- 39,000 users with a reputation of 2000 or more can edit other people’s questions.
- 26,000 users with a reputation of 3000 or more can vote to close questions. Five close votes puts a question “on hold”.
- 6,900 users with a reputation of 10000 or more can delete questions.
With such a large volume, the site needs all these users to share in the work of editing. It’s realistic. Not perfect, but realistic, And that’s okay. The problem comes with culture.
Seinfeld fans will recall the November 1995 episode, The Soup Nazi, in which the cast learns from Kramer about a shop that serves fantastic soups. It’s run by an eccentric guy who has very strict standards about his patrons, and if they don’t go through the proper ritual and supplications, he yells, No soup for you! and the cashier yanks it away before you can object.
The problem with having strict standards of this type isn’t the Soup Nazi himself, it’s when this attitude spreads and it begins to pervade the larger community.
But which attitude are we talking about, anyway?
Arthur S. and Arthur T.: A Tale of Two Demoulas
DeMoulas Market Basket is a regional grocery chain in New Hampshire, Massachusetts, and Maine. It’s kind of a no-nonsense store; the advertising style looks about 20 or 30 years out of date, and it doesn’t really bother to look fancy or upscale. (They don’t even have a website, dammit!) Market Basket and Hannaford are the low-price supermarkets, with stores like Star Market and Stop & Shop filling the niche for the usual overpriced supermarkets.
Unlike the other major supermarket chains in New England, however, Market Basket is a family business, run for many years by two brothers, George and Telemachus (“Mike”) Demoulas, in the post-war years of the 1950’s and 1960’s. In 1993 and 1994, Market Basket made the news as lawsuits raged between two branches of the Demoulas family. George had died in 1971, and his brother Telemachus had allegedly defrauded George’s family of much of their share of the business. By the time of the lawsuits, the major players were now George’s and Telemachus’s sons. Both were named Arthur, after their grandfather, who founded the business in 1917. The Arthur on the plaintiff’s side was Arthur S. Demoulas, son of George; the other Arthur was Arthur T. Demoulas, son of Telemachus. During the 1994 trial, there was apparently a fistfight in the courtroom between the two Arthurs. Around this time, I remember reading something in the Boston Globe about the Demoulas family, and didn’t think much of it beyond that it was a bizarre family feud between an Arthur Demoulas and another Arthur Demoulas, and it had little bearing on my shopping habits.
Fast forward to June 2013. Arthur T. Demoulas has been president and CEO of DeMoulas Super Markets, Inc. for five years. The Arthur S. faction of the Demoulas family gained control of the company’s board of directors. A few months later, Arthur S. has succeeded in getting a judge to allow a $300-million distribution to the shareholders. Arthur T. has been a well-liked CEO, with thousands of fiercely loyal employees who enjoyed higher pay and a profit-sharing plan, and has been opposing the distribution. Then, in June 2014 the board fires Arthur T., and all hell breaks loose. Warehouse workers and drivers go on strike. Shelves soon become empty. There are rallies. There are signs posted saying BRING ARTIE T. BACK, and others showing a head shot of Arthur T. with the text I BELIEVE.
Finally, in late August 2014, a deal is struck, and the Arthur T. faction buys enough of the company to reach 50.5% ownership and Arthur T. is reinstated, saying at a rally after the agreement,
“You have demonstrated to the world that it is a person’s moral obligation and social responsibility to protect a culture which provides an honorable and a dignified place in which to work.”
What’s the lesson here? My take on it is that, in the tension between financial motives and concern for well-being and the community, financial motives usually win out on top, not having the “weakness” of human emotion. But sometimes they don’t, and community trumps finance. This is one of those times.
So what does this have to do with Stack Overflow?
(Ooh, I love another chance to listen to So What. Queue that Miles Davis up, and keep reading.)
Remember, I said that the website serves two purposes. In the short term, people can get programming questions answered. In the long term, Stack Overflow is a searchable repository for these questions and answers, kind of like a Wikipedia for programming, but with a much better user interface.
In my opinion, the Stack Overflow staff and moderators seem to take the attitude that the long-term content of the site is much more important than this short-term purpose. Why do I think this? Because the word “quality” gets tossed around a lot in the site’s blog, or on the Meta site, where there are 129 questions tagged
question-quality. And because the custom of Stack Overflow is to close down questions that don’t meet the site’s quality standards, and close them down fast, often within minutes.
Here’s an example of a question that presumably deserves closing. It’s about choosing a computer, between a MacBook Pro and MacBook Air, something that’s not about programming, and which has only subjective answers given the question’s premise.
Both are specifically mentioned on the site’s guidelines for on-topic questions:
Questions asking us to recommend or find a book, tool, software library, tutorial or other off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Questions about general computing hardware and software are off-topic for Stack Overflow unless they directly involve tools used primarily for programming.
Here’s another one, that’s really likely that someone has a homework question, and they’re just posting it verbatim hoping someone will answer. Another really good candidate for closing.
But other questions that are closed, or have some of the votes to become closed, really don’t deserve it.
Here’s one from a user that wanted to know how he could avoid having to use the
No Soup For You!
And here’s another one that was closed, sadly. It’s a computational geometry question, about computing the angles of a triangle formed by three points in Python, and it was closed as “off-topic”:
I saw this question while looking through a bunch of closed questions, and within about a minute I saw what the problem was. The programmer was converting from radians to degrees incorrectly, forgetting to multiply by 180 and divide by \( \pi \); the divide by \( \pi \) had been left out, and appropriate line of the code would have been
<code>print np.arccos(num/denom) * 180 / np.pi </code>
Also the vectors of a triangle are directed angles, so if you get the signs wrong, it will yield \( 180^\circ - \alpha \) rather than \( \alpha \). Here’s a fixed version of the program:
import numpy as np points = np.array([[343.8998, 168.1526], [351.2377, 173.7503], [353.531, 182.72]]) A = points - points B = points - points C = points - points angles =  for e1, e2 in ((A, B), (A, C), (B, -C)): num = np.dot(e1, e2) denom = np.linalg.norm(e1) * np.linalg.norm(e2) angles.append(np.arccos(num/denom) * 180 / np.pi) print angles print sum(angles)
[19.191300537488704, 19.12889310421054, 141.67980635830079] 180.0
I’d go a little further and make the program symmetric in its definition of A, B, C, so that they are clearly directed vectors that sum to zero, with an appropriate vector negation added so that the inside angles of the triangle are computed:
import numpy as np points = np.array([[343.8998, 168.1526], [351.2377, 173.7503], [353.531, 182.72]]) A = points - points B = points - points C = points - points angles =  for e1, e2 in ((A, -B), (B, -C), (C, -A)): num = np.dot(e1, e2) denom = np.linalg.norm(e1) * np.linalg.norm(e2) angles.append(np.arccos(num/denom) * 180 / np.pi) print angles print sum(angles)
[141.67980635830079, 19.12889310421054, 19.191300537488704] 180.0
But I can’t post an answer, because the Soup Nazis have been here and the question is now Closed.
Even worse, the original poster got alienated, and added this comment:
only reason this was closed was because you elitists think it’s too easy. fine, i’ll just go to reddit or somewhere without this crap.
Closing someone’s question sends a message that their work isn’t good enough, that they aren’t wanted here. From my point of view, even if only 1% of the close-votes are wrong, that’s too many. Even if a tiny percentage of people are harassed by Soup Nazis, it has a pervasive effect that just encourages hostility and banishment, without any accountability. It sends the message that it’s okay to continue the practice.
I would tend to agree with one user’s assertion on Meta that
…initially most questions you asked got a positive reception: happy comments and answers, people that tried to help you out regardless of the way you worded it. Of late the tendency is to simply close or put on hold most questions, or downvote them, or make fun of the writing or the style.
If you look at some of the comments on this post, they’re insightful. Like this one:
I find that people usually close or downvote questions right away if it’s in any way subjective, and it only takes 5 people to consider your post subjective, even though the answer could be objective to 20 other people. The hive does not like that, and there will be no comments explaining why unless you ask. Just close, thank you, and come again.
Or this one:
Michael Richter does a good job of defining this attitude and its causes in his post on “Why I no longer contribute to StackOverflow” – he calls the higher rep devs “the high school cool kids table” http://michael.richter.name/blogs/why-i-no-longer-contribute-to-stackoverflow
Or this one:
I think you hit it on the head with This site was meant to provide a canonical resource for programmers to find answers to their questions. Entire (and very good) books are begging to be written based on the content of the very best questions / answers posted here. Unfortunately they are getting drowned in a sea of drivel. The success of the site drives anyone with a programming question to it (so many hits on Google). This strains the system’s capacity to self-moderate. It is almost as though there ought to be an “entrance exam” before anyone can post a question.
Or take a look at another question on Meta:
There is a distinct decline in the level of civility here. Some of this is due to new users coming in and posting spam and other nonsense, but the offtopic and downvote buttons are doing a pretty good job of keeping this under control.
Unfortunately, a lot of this is coming from more experienced users, and the site’s built-in moderation system is not (and probably cannot) handle this very well. Folks are rushing to pound new users down with “this belongs on meta!”, “this is off topic”, “this is a duplicate!” and “read the FAQ!”. All this, of course, is accompanied by a flurry of downvotes. This is not very welcoming to new users who don’t know about meta, or what is offtopic, or the FAQ.
with a related answer:
I think there is this inherent fear–perhaps a subconscious one learned after spending time on Digg, Reddit, Hacker News, and other similar community-run sites – of a flood of new users decreasing the quality of posts on a site like this. If anything, such a fear dates back all the way to the Eternal September of Usenet, back in 1993.
This fear leads to an overreaction when people see what they think are junk questions posted by newer users – whether the questions are simply offtopic, or perhaps trollish or ignorant, or perhaps highly subjective. People are afraid of the quality of the site being ruined by such things, and whether justified or not, they break out the downvotes in droves.
Exchange moderators are a bit, um, what’s the word? Well, the nicest word I can come up with is “complicated”, possibly “unpredictable”. I have seen other users get flamed for seemingly minor “offenses”. You sit on the sidelines going –> o.O <– and thinking to yourself “Even though I wanted to know the answer to that question, I am so glad I didn’t ask it. Thanks for taking the heat there, fellow user”. I myself had an answer deleted after 1 down-vote. (Between you and me I think it was because, turns out, the mod was a Java dev and I made a Java joke… Knock, knock… teehee ^_^). I don’t mind the deletion, but after only 1 down-vote? And no feedback as to why I’m a complete nincompoop?
Let’s take a step back here. What we have going on here is an experiment in democracy working within the bounds of the allowable actions of the website. Thousands of Stack Overflow users have the power to edit, close, and even delete questions. Nobody can see people’s emotions; it’s all interaction in writing, and no one needs to take responsibility or give much of a reason when closing or downvoting. Don’t like User X’s question? Go ahead, downvote. It’s quick and easy, and doesn’t come with any consequences to you. So democracy is defining the social customs of the site, shaped by discussion on Meta. Democracy is a weird, living thing, especially in this situation. It’s kind of like the boys from Lord of the Flies, stranded on an island, regressing to primitive social structures, and throwing stones at each other, except here the stones are virtual.
I like this sentence that I quoted earlier:
This site was meant to provide a canonical resource for programmers to find answers to their questions.
I like it because it’s ambiguous and covers both of the purposes I gave for Stack Overflow. Find answers to their questions. I can find answers to my questions indirectly, by searching Stack Overflow, or Google, to find someone else’s question that’s already been asked. And I can find answers to my questions directly, by asking them and waiting to find the answer.
The problem comes, I think, because there’s tension between the short-term “I need help now, please help answer my question” purpose, and the long-term “We want to maintain quality so this site has high signal-to-noise ratio.”
The Quality Nazis, like the Soup Nazi, want people to come into the soup shop of Stack Overflow, and abide by the rules, or No Soup For You! and your question gets closed. If it’s a blatantly bad
plz send me teh codez question, that’s one thing. But there are a lot of questions in the gray area, and there’s something a little alarming to me about erring on the side of quality rather than giving people the benefit of the doubt. I don’t like the attitude expressed in this answer on Meta by one of the moderators who’s also a StackExchange employee:
Many of us were the kids that could not go to bed until something compiled, or we figured out how something worked. When we weren’t programming, we were thinking about programming. Things in nature reminded us of concepts in programming, it was an all-consuming drive to learn as much as we possibly could about it. I never dreamed that I’d be working with C professionally all those years back when I was up at night modifying the source code to my BBS system.
Things are a little different today. Folks are entering this field not because they have any real drive, love or talent for the craft, but because they want the financial security and social notoriety that comes with the job. They’re not ever going to be good programmers because they probably aren’t ever going to think like one. This job requires a degree of natural talent and not everyone has it - just like painting, sports, writing … you name it.
Knuth bless ‘em for trying to do something fantastic with their lives, they’ve become quite a drain on us and other resources. This is something that the whole industry is seeing, which naturally reflects here. From my perspective, it’s extremely frustrating to watch them repeatedly throw themselves at a wall while the rest of you repeatedly bang your heads on your desk.
This is the elitist argument (or “cool kids table”); we like quality, we can keep things high quality when we ask and answer questions, but the masses just don’t do that, and it makes this site undesirable for us.
Well? So what if not everyone writes perfect questions that meet all the guidelines for Quality? So what? I mean really, what are the consequences here? There’s a tension here, because there are two completely different answers depending on which of the two purposes you think is most important.
If it’s the long-term Q&A archive, of course it matters! You want to keep around good questions and answers. You don’t want the bad ones. Get rid of them. Strive for Quality.
If it’s the short-term help for programming questions, on the other hand, the No Soup for You approach just hurts people. It hurts people who don’t know all of the rules. It hurts people who make the occasional error (as we all do). And it hurts people who are doing nothing wrong but are subject to an errant judgement by someone with power.
I went on that short tangent about Arthur S. and Arthur T. because this tension between the two purposes of Stack Overflow is really the same kind of tension in the Market Basket fight. Arthur S. represents the goal of long-term quality on Stack Overflow, never mind that you might hurt a few people along the way and make them upset or prevent their questions from being answered. But I happen to side with Arthur T.:
You have demonstrated to the world that it is a person’s moral obligation and social responsibility to protect a culture which provides an honorable and a dignified place in which to work.
Stack overflow has failed to understand it’s mission. Stackoverflow exists to share technology information–not to curate it. Curation should be replaced by indexing and ranking. With Stack Overflow, it is as if google had decided on a primary strategy of deleting content from its index, rather than a primary strategy of ranking good content highest.
Bingo! So what if some of the questions are not as good as others, and don’t perfectly fit into Stack Overflow’s long-term archive? Let people ask them, let these questions get answered. And if they’re mediocre questions, let them fade into mediocrity after a few weeks. Like the idea of generational garbage collection: when you’re trying to prune unused memory, one approach is to promote memory that survives an initial period of time, and then the rules change about how it gets disposed. You then save Quality of the long-term Stack Overflow archive, but you also let people get help for their short-term questions even if they’re in that gray area and aren’t a good fit for long-term retention.
One argument against this, is that low quality questions turn off some of the people who help answer questions. Why should I take my time to answer questions, when more and more of them are sloppy and unclear and show no sign of effort from the asker? This is a legitimate concern. But if the site wishes to help keep good answerers happy, and some of those answerers are frustrated at low-quality questions, then maybe Stack Overflow should help them find high quality questions? After all, there’s some research going on there into automated quality metrics. If I feel like I don’t want to answer low-quality questions, and I’ve got high enough reputation on the site, then fine, hide those low-quality questions for me. Whereas if I’m feeling generous and want to help people, let me see them. Which brings me to my last point....
Automation should be used for good and not for evil. While I think the staff behind Stack Overflow has done a wonderful job in most cases, there are a few things in which the StackExchange software has been automated in ways that are ugly.
One is the great Comment Timer debate. Stack Overflow implemented a timer throttle on the comments. You can only post one comment on the site every 15 seconds. And if you’re a fast typer, it blocks you, and you see this nonsense:
The “timer reset” business is the ugly part. You have to wait 15 seconds. And the obvious response, if you feel you know what you’re doing, is to wait exactly 15 seconds and then press Enter again. But it doesn’t tell you when the 15 seconds is up, so if you wait 14.5 seconds by accident… Denied! you have to start all over again. C’mon guys! What the hell? Really? At least it’s only 15 seconds now; it used to be 30 seconds.
I have a problem with computers acting as absolute barriers for actions that really shouldn’t have absolute barriers. Like the automated phone systems (“Please press 1 if you would like to hear your account balance....”) that are aimed at replacing actual human beings. Most of them have a way to bypass and talk to a human being (e.g. press 0 a bunch of times), but some of them don’t, and if you try the press-0-a-bunch-of-times, they tell you Goodbye and hang up. But I had a legitimate purpose; I listened to the available options, and my question fit none of them, and your inflexibility wasted my time and prevented me from getting help, you damn computer.
So if the goal is to Increase Quality, I have no problem with the computer prompting me to wait a little bit, or try to write a question or answer that doesn’t include certain words, or is too short. That’s fine. Let me stop and think for a few seconds. It will greatly cut down on my “transgressions” of the rules. But if I really know what I’m doing, just let me do it, dammit! If it’s really awful, someone will flag it and it’ll get fixed. The automated aspects of Stack Overflow that aim to Increase Quality should act as a thin barrier that let you push past it if you feel strongly.
Instead, they’re inflexible. No “+1” in your comments:
And no short comments, they need to be at least 15 characters. You have to add gratuitous extra text.
And if you want to use “@user” style shout-outs, sometimes the software will strip them out. Because the computer knows best. I’m sorry, Dave. I’m afraid I can’t do that. Well, fuck off, HAL.
I like Stack Overflow for the most part. Really awesome UI, really huge user base, fast answers, and I’ve gotten some wonderful help over the years.
But the culture there sacrifices short-term help in some borderline cases, in favor of increasing Quality for its long-term archive. I would argue that these borderline cases should be given the benefit of the doubt. Let poor quality questions survive in the short term; they will get upvoted or downvoted accordingly, and after a few days the ones that really are sucky will fade into obscurity, leaving the better quality ones for posterity. (Reddit takes this approach, and it seems like it works.) Otherwise, an attitude of elitism and Soup-Nazism spreads and that hurts the site’s usefulness.
And I wish they would just knock off the ugliness of automated, inflexible barriers that just won’t let you post certain things.
P.S. (17 Feb 2015) — This article got a tremendous amount of attention from reddit’s /r/programming and Hacker News. If you’ve enjoyed this article but are new to DSPRelated.com and EmbeddedRelated.com, take a look around and browse through some of the other blogs on these sites.
I didn’t think it would get the level of attention it did. Apparently, I hit a nerve with a lot of people. There are a few things I wanted to add, after reading through the correspondence so far.
- Area 51 — The way new Stack Exchange sites are created is through a central website called Area 51. My concerns about Area 51 are much more severe than my concerns about the culture on Stack Overflow. I tried championing a new (non-computer-related) Stack Exchange site in 2011, and it was like pulling teeth. Or, perhaps, like one of those online multiplayer games which has been really badly written, with all sorts of weird rules. In the case of Area 51, they are “designed” to ensure success for those sites that deserved it, and to ensure failure for those sites that didn’t. Artificial barriers every step of the way, unless you happen to have a cadre of online-savvy computer-savvy colleagues to help you out. I had a few dozen close contacts in this area of interest; many of them were passionate about the subject, but couldn’t figure out what to do, and when they did, they discovered “Wait, where do I get to ask my questions?” and were confused. Because a new Area 51 proposal, in its early stages, only lets you come up with example question titles. That’s it. You can’t actually ask a question, and you can’t get answers. Then you have to go through a “commitment phase” of signing up for new users. Then, when you have enough of a user count, and the Stack Exchange mods agree to move forward, you get a beta site, and the mods watch the site, checking to see that it looks like a success, and if it flourishes you get a real site. Kind of like the process needed to create a law in the U.S. Congress....
But the plug got pulled on my proposed site before it got to the beta stage. And it was deleted, so I can’t even show it to you as an example. The whole process got me so disgusted, I have no further interest in any Area51 activities, and it was one of the events that led me to pull back from the Stack Overflow community.
- ”People who put the effort into questions on Stack Overflow usually get treated well” — one reddit user commented that “if I thoroughly research a problem first and post my question to SO with a good summary of what I’ve found and tried, I tend to get an answer without any drama.” Me too, but that’s not the point. In the Soup Nazi episode, if you politely asked for soup, shuffled precisely to the cashier, and did not ask for anything out of the ordinary, you got your soup without any drama. But that doesn’t mean that when the Soup Nazi yells No soup for you! at someone, it’s their fault and they deserve it. Some percentage of the people who get turned off from Stack Overflow, and left the site, would have been good contributors. They just didn’t behave exactly as the SO community members wanted. Finding dedicated, valuable contributors is hard. When you’ve let them go through the trouble of getting that far, it’s really unfair not to give them the community support to withstand the kind of minor squabble that makes them decide to give up and go elsewhere.
- Both questions that I pointed out as unfortunate closures were re-opened. That’s good news! Unfortunately, it’s now four years later for one of them, probably too late to bring that contributor into the SO community. But it does seem to show that drawing the right kind of attention at the right time can really bring positive consequences. Right now, Stack Overflow and the Stack Exchange system seems kind of like an inefficient market. An “efficient market” approach in the Stack Overflow site would mean that there’d be an optimal way for matches to be made between questions on Stack Overflow and the right kind of attention, not only to answer those questions, but to bring positive encouragement to improving the quality of questions. Think of it as a kind of like a stock market. There are people in need of assistance, and there are others willing to provide energy to those people, and an “exchange” happens in the sense that everyone gets a benefit from the interaction (questioners get answers, answerers get emotional satisfaction). But with Stack Overflow, all you see is what’s newest (and “new” might mean the last 15 minutes!) or what floats to the highest rating, out of all the millions of questions, and the likelihood of anyone browsing past page three of the results is pretty miniscule. I think there’s room for improvement in bringing questions to the attention of the people who can help most. It’s probably a really hard problem, and I hope the Stack Exchange folks are working on something that will improve the way it works on their sites.
That’s all for now; thanks for your interest!
Here are some other articles which are also critical of Stack Overflow.
- Why I No Longer Contribute to StackOverflow
- Stackoverflow – Hall of Shame (Why I hate Stackoverflow)
- One Aspect of Stack Overflow I Hate and How to Fix it.
- Why Reddit is Better than Stack Overflow (WAAAAY Better)
- Stack Overflow Hates New Users
And on the other hand, Jon Skeet’s guide to Writing the Perfect Question.
Thanks for reading + hope you had a Happy Valentine’s Day!
© 2015 Jason M. Sachs, all rights reserved.
Previous post by Jason Sachs:
Voltage Drops Are Falling on My Head: Operating Points, Linearization, Temperature Coefficients, and Thermal Runaway
Next post by Jason Sachs:
Two Capacitors Are Better Than One
I remember an algorithms question from sometime last year that really stuck with me, because one of the comments from a person who voted to close, was "Is this a programming question? It seems like an algorithms question." This is the kind of pedantry that is quite simply infuriating, which also ruins the experience.
Sadly there is this behavior of human nature that says "Hey, such is not a problem, we don't need whatever mechanism we have in place to prevent it". As we've recently found out with the Measles epidemic... Too many people are now overly concerned with the rumored effects of Vaccination vs the deadly effects of the diseases the vaccinations protect against.
In this specific case one can probably say that the problem created is called incompetent overmoderation...
My guess is that the parties guilty of most poor moderation are people who have only a little more reputation than the minimum needed to do that level of moderation. At least to me, quite a a few appear to be people whose real intent was never (at least primarily) to answer to questions or help others--rather, they're people who saw a chance to get some "power", and took the necessary steps to achieve it.
At least in my opinion, the solution is fairly simple and obvious: simply raise the bar far enough that virtually nobody will bother with jumping through that hoop just to get that bit of "power". Restrict those privileges to people whose inclination is against using them, except when there's no other reasonable choice, and everybody will be happier.
I'd almost go so far as to say that cumulative reputation score shouldn't be considered either--restrict the moderating tools to those who've accumulated at least N points in the last M months (though this should be in addition to overall minimums, not instead of them).
Disclaimer: I have over 250K reputation on SO, which may color may beliefs about its highest reputation users.
- When 5 close votes are received, a random batch of ~10 other mods should receive a request to comment on whether the thread should be closed. if two out of the first 5 responses are "Keep" then the thread doesn't get closed
- Include a timer for the 15 seconds, better yet, call out that the warning box will turn green when it is OK to post again
- Remove the ban on @ and short replies, give high-level mods access to lists of users with a high number of low-character posts or high number of @ uses. Have threads with the same attributes get called to the attention of high level mods
Thanks once more for the thoughts.
I got one answer which makes a claim ("WebAPI already supports this") I couldn't verify. He never followed-up to my questions for clarification. Nobody else took on the question. And, basically, the time it took me to type my problem up was a complete waste of my employer's time.
(Also I'm amazed you actually *like* OpenID-- that's what *prevented* me from using the site for years and years. What a terrible, user-hostile, technology.)
Or did I miss something?
But the usability issues were only a bit of the problem. The sheer pig-headedness of *forcing* people to use it, even people who wanted their own accounts, is what really turned me off.
But this conversation is off-topic...
I thing what has not been modeled is the expectation and experience of the asker and answerer. We need SO concierges, who orient and gently guide new users into the site. It is truly annoying to see people asking homework questions cut-and-pasted, but anger and shunning are not the answer.
A person having the right kind of disposition (patience, understanding) could be selected to respond to flagged questions with a polite and encouraging response. Even a boilerplate response like "an experienced SO user has read your question and found some problems. SO is aimed at finding common questions for which there are clear and correct answers. You are expected to work on and think about your question until you are able to express it clearly, and also make sure your question is not already answered! Ask a new question and you'll earn points that allow you to help make SO better."
This simple kind of boilerplate explanation could help avoid much of the curt and unhelpful responses from impatient responders that make people think of The Soup Nazi. Instead of shunning the lazy, encourage them to either think and explain well, or just suppress their question.
It took me a while to learn the SO protocol and etiquette. Once I did I have often found the site useful. But scale changes everything and SO as it exists today is allowing too much noise in questions and comments, and even answers. If we considered all our responses subject to reasonable scrutiny much of the gamification, lazy answers, rude comments, instant down voting, and pick-off-easy-answer-for points would be reduced. This could be accomplished by having mods simply hide entire threads with polite boilerplate email sent to askers, with mechanisms for other mods to decide it the decision was fair.
Incentive systems are always game-able. SO had arguably the most effective incentive system for several years. It needs tweaking and refining to address all of your points and several others made by other similar critical posts. But throwing out SO would be a travesty. Refining it to handle increasingly stratified users, questions, and responses will give it another few years of utility.
Thank you for presenting the first of several balanced observations amongst a group of hotheaded ones I have seen. It's ironic, but it that same hothead emotion that is the root cause of so many of the real woes of SO and so many of its well-intentioned predecessors and follower, back to Usenet.
I agree. I've been on SO for 1299 days, whatever year that was, and have seen the regression toward closing questions that don't fit "the mold", even those that may be well within the official standards. It alienates quite a lot of users, especially new users.
For example, I am trying to rebuild open source X with tool Y on platform Z. How to fix error such-and-such? This can go unanswered half the time.
My solution is simply not to contribute. I will use google, and if it takes me to SO, ok. That might help. I will still post the occasional question, but there is no way I will waste any time trying to support a society that won't help its members.... especially when the idea of SO is to *HELP* its members :)
First, in any social structure there will always be people who seek power over others. Your analogy of Lord of the Flies is more apropos than you may have intended. The question is, or should be, what limitations do you put in place to slow those people from rising to the top and/or what can you do to minimize any damage they could cause. These were the very questions Madison, Jefferson, et al were struggling with at the beginning of the American Republic. It took them a couple of tries to get it right, or at least more right than at any other time in history. (We were supposed to be continually tinkering with it to get it more right, but we seem to have decided to solidify the structure and then complain that it is no longer applicable in the modern age. But I digress.)
One possible limitation could be to replace the close mechanism with a spam report. There still needs to be a way to prune out the truly obnoxious stuff while making it obvious that all sincere questions should be allowed, though not all of them will be answered.
Another possible limitation is to attach a cost to closing questions and down voting. In this way, people who have made the bare minimum cannot just run around closing other questions or piling on with down votes. It will force them to contribute in other ways.
My other point is a justification for allowing most if not all sincere questions and providing teachable moments for the uninitiated. Unfortunately, I am not smart enough to do that on my own so I will allow Alex Papadimoulis do it for me: http://weblogs.asp.net/alex_papadimoulis/408925. His answer to the question is a little too brutal but I hope that SO contributors would be more tactful and that voting on answers would provide better feedback those who know just enough to be dangerous.
Still not a good question? 5 people just have to flag it as "needs improvement" again.
The automatic opening perhaps could be tweaked for questions with more than 3 edits, or some such, but this should give the advantages of close votes (not having to wade through a lot of bad stuff to see a good post), while mitigating some of the downsides ("soup nazi's").
... There are other things that can be done as well, such as better
notifications of questions you've close-voted and get edited...
Ah -- I missed that point. But I stand by my choice of this question as a good example. It was a question that was closed only 26 minutes after being asked in the first place. Yes, the question's OP made edits after the closure, but no one bothered to open it again until I voted to reopen it after writing my article. Four other people agreed with me, so the question got reopened.
And as a result, the process *succeeded* for long-term quality of the site. But it completely failed to help the original poster, who decided to give up.
"And it hurts people who are doing nothing wrong but are subject to an errant judgement by someone with power."
THIS is the bingo point. On the internet, anyone with a slight amount of drive can get be thrust into a position of responsibility over the actions of at least a few hundred people. Sometimes, these people cant even be responsible for the hair on their head, yet here they are lording over information that can affect and help millions.
Everyone agrees with this to a point... however, I believe that it is MOST of the people that moderate ANY stack exchange site. I contend that 70-80% of any moderator team is the guy that considers his arena of responsiblity his little fiefdom. Not consciously, of course, but if you talk to them, it will come out.
2nd thing is this:
Your blog post will be ineffective as it falls on not deaf, but absent ears. The people that could learn something from reading this page, and perhaps even become better moderators overall, simply won't read it. If you link it to them, they will get defensive, tell you they don't need to read it because they follow SE mod guidelines (which is completely beside the point of the post here). Then, in accordance with my first point, they will for the most part do their best to trample anything you say on the subject ... en mass.
I thank you for making the point. It sucks that it'll wind up being just cheerleading.
Compared to StackOverflow??? SO takes forever to get a response, if you get a response. At JavaRanch, your question is guaranteed to be answered within an hour and by experts that know what they are doing.
I really hate SO.
One argument against this, is that low quality questions turn off some of the people who help answer questions. Why should I take my time to answer questions, when more and more of them are sloppy and unclear and show no sign of effort from the asker? This is a legitimate concern. But if the site wishes to help keep good answerers happy, and some of those answerers are frustrated at low-quality questions, then maybe Stack Overflow should help them find high quality questions? After all, theres some research going on there into automated quality metrics. If I feel like I dont want to answer low-quality questions, and Ive got high enough reputation on the site, then fine, hide those low-quality questions for me. Whereas if Im feeling generous and want to help people, let me see them.
I didn't really rage quit though, it's hard work crafting a good answer and some idiot messing it up takes the wind out of your sails.
One dealt with how to use fully custom URLs in Wordpress without breaking wordpress. I eventually found way to get it work, but no thanks to StackOverflow :
The other one dealt with how to build a UI for GEDCOM based family trees, which means the tree should support two parents per node and multiple interconnections between different branches :
For some arbitrary reason, the question was amost immediately labeled as "off-topic" and put on hold. That means I guess I'll have to figure this one out on my own as well. Thanks for nothing, StackOverflow!
" the questions are 2 years old, 5 years old, and 4 years old. The rules changed :) "
In retrospect, I think most of the most useful questions on StackOverflow would be considered off-topic today and would be closed before anyone gets a chance to even reply if they would be posted today.
"It hurts people who dont know all of the rules"
I doesn't hurt smart people who are able to read the rules. And if you are not able or willing to read the rules,
well, "No soup for you!". I for one always get an answer to my programming questions just by searching on Google and then finding a link to a relevant Stack Overflow questions, just an it was intended by the founders of Stack Overflow. They must be doing something right. More power to them!
Disclaimer: MyDemoulas.net is not owned, operated, or maintained by DeMoulas Market Basket, Inc.
Another one, Music: practice and theory has this question
Q: Software that allows playing in different temperaments
Since I have written such software, I thought I'd answer, but:
" protected by Matthew Read? Jan 9 '13 at 18:22
Thank you for your interest in this question. Because it has attracted low-quality answers, posting an answer now requires 10 reputation on this site. "
In fact, together, the answers provided a good summary of the situation, except of course for my application. This is a specialised subject & I wasn't going to hang around to get my 10 Brownie points, so I asked a new question that mentioned my solution - all hell was let loose.
I have used SE for finding kludges to get round deficiencies in LaTeX, but I agree fully with your analysis, and in addition it's not only useless but pernicious for subjects that require any kind of discussion.
As of now I can only absolutely emphasize what Jason Sachs has observed with regard to Area 51 and also with regard to Meta Stack Exchange (MSE), which is about the whole system of SE. Focussing on MSE here is how it works as of now:
As a user with significant reputation on other sites you will start out on MSE with 100 rep - which is quite different from other specific meta sites. If you ask a question to discuss something or if you post a new idea then the votes will signal agreement or disagreement. In case of disagreement your reputation will quickly burn. To every programmer of course that algorithm will strike you as somekind of Catch 22:
In order to make proposals or utter critique you first have to gain reputation by being liked by those that already have reputation on MSE. It is a system utterly rigged to foster conformism. Want to change it? Want to criticize something the community does not already like? Tough for you:
I will consider this post as some kinde of meta MSE - let's see whether the system runs by its on rules and changes upon Peer Pressure?
To post reply to a comment, click on the 'reply' button attached to each comment. To post a new comment (not a reply to a comment) check out the 'Write a Comment' tab at the top of the comments.
Registering will allow you to participate to the forums on ALL the related sites and give you access to all pdf downloads.