A Question About Questions

by Jeff Atwood

on October 12, 2008

Stack Overflow is a place for programming questions. We've been quite clear about this for as long as I can remember; the faq and about pages both try to make this point in the first paragraph:

What kind of questions can I ask here?

Programming questions, of course! As long as your question is:

  • detailed and specific
  • written clearly and simply
  • of interest to at least one other programmer somewhere

... it is welcome here. No question is too trivial or too "newbie". Oh yes, and it should be about programming. You know, with a computer.

Do look around to see if your question has already been asked (and maybe even answered!) before you ask. However, as long as you've looked, if you end up asking a question that has been asked before, that is OK and deliberately allowed. Other users will hopefully edit in links to related or similar questions to help future visitors find their way.

It's also perfectly fine to ask and answer your own programming question, but pretend you're on Jeopardy: phrase it in the form of a question.

There's also a bright yellow sidebar for new users which explains what Stack Overflow is -- this appears on the homepage, every question page, and (in slightly different form) on the ask a question form:

stack-overflow-welcome-sidebar

However, there is one little nagging concern -- what exactly constitutes a "programming question"? Different people have different ideas. To put it mildly, opinions vary.

In order to stem the tide of potentially verboten non-programming questions, any Stack Overflow user with 3,000 points of reputation or more can close a question that is deemed off-topic using the following prefab reasons:

  • exact duplicate

  • not programming related

  • subjective and argumentative

  • not a real question

  • blatantly offensive

  • no longer relevant

  • too localized

  • spam

That gives users a fairly reasonable set of guidelines to start with -- these are the kinds of questions we really don't want on Stack Overflow. Not that they are fundamentally bad questions, mind you, or that you're a terrible person for asking them, but there are better websites on the Internet for those kinds of questions. But even within those guidelines, there's substantial disagreement.

We don't want people to close questions indiscriminately with the jackbooted heel of justice, however, I also feel that it's important and necessary to close questions that veer far from the goals of the site -- so users understand what is and isn't acceptable in our community. You can't let people run roughshod over your community and drown it out in noise.

I'm not a huge fan of poll questions on Stack Overflow for a bunch of reasons, not the least of which is that users will get badges for upvotes on poll questions -- this is not at all what badges were designed for. However, I have to admit that this poll started by Adam Bellaire is actually quite useful in letting Stack Overflow users themselves define what sorts of questions are appropriate on Stack Overflow.

The current results for Which type of "programming related" questions are appropriate [on Stack Overflow]?, in order by votes, are:

  1. Questions intended to resolve a specific programming problem that have multiple possible answers. As with this answer, but the "correct" response is subjective. (14)

  2. Questions intended to resolve a specific programming problem that have only one correct answer. A "specific programming problem" can be defined as a problem that exists in code and that can be resolved with correct code (or cannot be resolved at all). These questions are normally language-specific. (13)

  3. Questions about language-agnostic algorithms for hypothetical problems that have potential real-world applications. For example, traveling salesman or BSP. (13)

  4. Questions about best practices and other aspects of programming, including use of software tools used in the development process, standards for maintenance and readability of code, advice to avoid potential coding pitfalls, etc. (11)

  5. Questions about software tools that, while not directly related to software development, involve some scripting or programming themselves, for example, Excel or Matlab. (11)

  6. Questions about hypothetical problems that don't necessarily have real-world applications, for example "code golf" or the "FizzBuzz problem". (8)

  7. Questions about social engineering, management, or career building, ergonomics, or other "soft" topics related to development work. (7)

  8. Questions about hardware considerations such as server environments, building an optimal machine, problems with hardware, etc. (1)

  9. Questions about programmers' favorite things (e.g. cartoons, books, movies, pop culture references). (-2)

  10. Polls about what StackOverflow is for (like this one). (-6)

  11. Questions about software not directly related to programming, such as Microsoft Word, or usage (not programming!) of device drivers. (-11)

The "winners" of this poll, items 1-7, map strongly to my idea of what we built Stack Overflow for. Items 8-11 ... not so much.

If you're wondering what so-called programming questions are appropriate on Stack Overflow, I'd say between our prefab question close menu and the top voted items in Adam's well constructed poll, you should have a fairly good idea.

Oh, and by the way, what's your favorite programming food?