This site uses cookies to deliver our services and to show you relevant ads and job listings. By using our site, you acknowledge that you have read and understand our Cookie Policy , Privacy Policy , and our Terms of Service . Your use of the Related Sites, including DSPRelated.com, FPGARelated.com, EmbeddedRelated.com and Electronics-Related.com, is subject to these policies and terms.

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.

The Good

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 __getattr__ and __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:

All this works really well for a number of reasons:

There’s a huge user community. — At present (and I can check this by looking at the Users page sorting by reputation): Total number of user accounts: around 3.6 million. 127,000 of us with reputation over 500. Over 39,000 of us with reputation over 2000. This means when you ask a question, unless it’s on a really obscure topic, you’ll get an answer. And on common topics in C or Java or Python or Javascript, you’ll get an answer fast. You’ll also get lots of people voting on answers. All this volume (and whatever they do for search engine optimization) makes answers show up on Google, so when you search for technical topics, Stack Overflow questions often come up in the search results.

— At present (and I can check this by looking at the Users page sorting by reputation): Total number of user accounts: around 3.6 million. 127,000 of us with reputation over 500. Over 39,000 of us with reputation over 2000. This means when you ask a question, unless it’s on a really obscure topic, you’ll get an answer. And on common topics in C or Java or Python or Javascript, you’ll get an answer fast. You’ll also get lots of people voting on answers. All this volume (and whatever they do for search engine optimization) makes answers show up on Google, so when you search for technical topics, Stack Overflow questions often come up in the search results. 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.

— 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.

— 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.

— 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.

— 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.

— 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.

— 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?

The Bad

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.

Soup Nazis

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?

So What?

(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 this keyword in Javascript. I saw this as a teachable moment, and was in the middle of writing a constructive answer about the difference between languages with implicit and explicit ways to reference member data, when a little orange box popped up and told me the question was closed and no more answers would be accepted.

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[2] - points[0] B = points[1] - points[0] C = points[2] - points[1] 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[1] - points[0] B = points[2] - points[1] C = points[0] - points[2] 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.

Or this other question:

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.

I think one user’s comment really gets to the point:

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....

The Ugly

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.

Bah. Ugly.

Wrap Up

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.

Postscript

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.

— 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!

Other Reading

Here are some other articles which are also critical of Stack Overflow.

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.