22

Recently, there have been a number of 'not constructive' questions that were closed, and these questions were appealed on Meta. Out of these, as well as others I have encountered in my travels, there is one thing all these questions have in common:

They ask why something is the way it is.

I believe that there are a subset of why questions that are acceptable on Stack Overflow. I also believe there are a subset that aren't acceptable on Stack Overflow.

Some users believe that Stack Overflow doesn't allow why questions, and they've given impassioned reasons for those beliefs. Other users believe that because the range of acceptable why questions is narrow, Stack Overflow is turning into a debugging service.

So if we're going to have this discussion, let's have it here.

What types of why questions do you believe should be allowed on Stack Overflow? What types do you believe should be closed? In your answer, please link to existing questions on Stack Overflow that you believe should be allowed or disallowed (regardless of their current status as questions), as well as why these types questions should be allowed or disallowed.

In order to provide fodder for discussion, I've listed questions below and what camp I believe they belong in. Please do not limit answers to just these questions, as I'm likely missing many other good examples. For your answer, Please focus on answering this question (with examples). Bonus points for questions that were closed and re-opened multiple times (as this indicates a divisive question). If anyone can produce a data-dump search that helps in this regard, that'd be really useful for this discussion.

Questions that are a good fit for Stack Overflow:

Questions that are not a good fit for Stack Overflow

NB: In an improved form, some of these questions would be a good fit for Stack Overflow. For the purposes of this question, I'm not explaining exactly why the current form is not good for Stack Overflow.

Question

What types of why questions should be allowed on Stack Overflow? What types of why questions should be disallowed? Why should that be the case?

14
  • 3
    I kinda think "why question" is a pretty lousy classification; we want "why" answers, right? I tend to think of these as "curiosity questions" - with the latter being of the "idle" sort.
    – Shog9
    Commented Feb 2, 2013 at 2:58
  • That's a great point. I'll edit the question to reflect that.
    – George Stocker Mod
    Commented Feb 2, 2013 at 3:01
  • @Shog9 Curiosity questions (at least the good ones) belong on Programmers.
    – yannis
    Commented Feb 2, 2013 at 3:02
  • 1
    You should put that in your FAQ, @Yannis.
    – Shog9
    Commented Feb 2, 2013 at 3:10
  • 3
    @Shog9 Done: "Programmers — Stack Exchange is a site for professional programmers who are interested in getting expert answers on conceptual questions about software development".
    – yannis
    Commented Feb 2, 2013 at 3:11
  • 3
    Always wondered what "conceptual" meant there. Good to know!
    – Shog9
    Commented Feb 2, 2013 at 3:23
  • I don't get it. Don't most questions start with the word Why? I assume it makes it easy on the moderators but this is going too far. Commented Feb 2, 2013 at 4:39
  • 2
    Most questions on Stack Overflow start with the word "how."
    – user102937
    Commented Feb 2, 2013 at 4:40
  • Mind taking a look at my own "why" questions? stackoverflow.com/questions/12475595/… and stackoverflow.com/questions/11570902/… Commented Feb 2, 2013 at 11:29
  • @UphillLuge I'm confused about your comment, could you elaborate on 'this is going too far'?
    – George Stocker Mod
    Commented Feb 2, 2013 at 12:25
  • 2
    @Yannis I have no idea what belongs on Programmers, it's your call. But that has no bearing on what belongs on SO. Commented Feb 3, 2013 at 19:42
  • @Gilles Which is exactly why I'm not participating in either discussion (other than the occasional comment).
    – yannis
    Commented Feb 3, 2013 at 19:42
  • I think the problem here is largely that you can't classify a question in this manner based on a single word. Looking at "why" just isn't good enough. English comprehension of the whole question is required. Commented Feb 6, 2013 at 16:52
  • @RobertHarvey There is another class of questions that are DOES/IS. For example "Is anyone also having this problem?" Knowing the answer can help in pin-pointing the cause of more obscure problems. If lots of people have the issue you are directed in a totally different direction than if you are the only one.
    – DHorse
    Commented Jul 19, 2013 at 13:38

4 Answers 4

10

I prefer Shog9's term "curiosity" questions to "why" questions; we're talking about why something is the way it is; not necessarily why something happens.

I think Lance Roberts' examples fall into the latter category rather than the former. Python code running faster in a function is a provable assertion unlike why various Vim commands behave differently. I believe Lance's examples are both definitively on-topic for Stack Overflow and constructive; so I will concentrate solely on the former set of questions.

My usual problem with curiosity questions is actually the answers, or at least their potential scope. I think Stack Overflow, and Stack Exchange, should follow an evidence-based approach. I believe that any statements or assertions made should be provable, either through the scientific method or by quoting others. The "problem" with the answers to curiosity questions is that this is not always possible.

Having said that, I strongly agree with Shog9's answer to whether there are too many Stack Exchange sites. I believe that Stack Overflow users should "be a bit jealous" of their site; chucking interesting questions to other sites because it's on-topic there as well diminishes the scope of the site and does indeed turn it into a "debugging service"; something that I would much rather avoid.

I do think there's a thin line here that can be walked down effectively. I'm going to use on-topic/constructive and their antonyms interchangeably here (my apologies but they're almost the same thing when writing about this subject).

The Examples:

  1. Oracle <> , != , ^= operators

    This question is effectively why do !=, <> and ^= behave differently. According to the "curiosity question police"1 this would be deemed to be off-topic and not constructive. There is absolutely no possible way of answering that question unless you think that Oracle is going to open up about its internals2.

    But, the question has a number of great answers that answer the question in a few different ways; some refuting the original evidence for the supposed differences by quoting sources, others that prove using an evidence-based approach to do the same.

    I believe this question is firmly on-topic for Stack Overflow.

  2. Why does Firefox treat Helvetica differently from Chrome?

    In its original form this question might be on-topic/constructive there's certainly an answer and people on the site who might be able to answer it. My problem with this is that, to a certain extent, you rely on specific people to answer the question, which I find uncomfortably close to asking a question of a specific user. It is possible to answer the question if the people involved have previously written up this question in a blog post or it's been chatted about somewhere. A user without direct experience can then evidence their answer.

    In its new form the question hasn't changed that much but is, I believe, now firmly on-topic and constructive. The change is the difference between asking for an answer discussing what the effects a lack of web typography standards might have on the implementation of such in various browsers to asking what is happening and where.

  3. Why doesn't C# support the return of references?

    I believe this question is firmly on-topic but not constructive for Stack Overflow (I know Giles will disagree). This falls into the language design camp and the only possible answer relies on someone who's worked on the language writing up the reasons somewhere. Giles' counter-argument to this is that "There are reasons to make this or that choice, which can have to do with nice theoretical properties, ease of implementation, performance, etc... Both kinds of answers call on facts and specific expertise". I do not think this completely holds water, as although people will be able to provide possible, logical, reasons for something being the way it is there is no definitive method of actually knowing why; there's no evidence.

    The problem with my argument here? The question was answered. This is an important point. Just because something seems to be not constructive and impossible to answer doesn't mean that it is.

    I would like to add that this is only true in closed sources languages. These kinds of questions are much more likely to be constructive for languages such as Python where anyone can look and come up with evidence based logical reasons for something being the way it is. Maybe there'll even be comments in the code explaining it.

  4. Why is an initialiser containing a string literal valid to initialise a `char` array?

    This seems to also come under the on-topic/not constructive heading. However, C++ has a standards committee. From what I've read pretty much everything in the known universe has been documented (I'm by no means a beginner let alone an expert). The why in this question can be answered with evidence, making this question constructive.

  5. Why does Mono exist?

    This one is more difficult. The problem is Oded's answer, which effectively says it exists because someone decided that it should. Whilst almost definitely true a link to a blog rather than a specific post doesn't provide evidence of the assertion. When the sole answer is "because it does" I don't think the question can be called "constructive"

My point is that it depends. Even in heavily closed source environments it's possible to tease out an answer to a curiosity question. Some languages are open source and even if no-one who has worked on the language is around it's possible to answer the question.

In conclusion

In writing this post I've come to see the "answer" to this question from slightly different viewpoint than the one I originally intended to espouse.

  • I categorically do not want Stack Overflow to turn into a debugging service.
  • Curiosity questions can always be answered; but such answers must be based on evidence.
  • Stack Overflow users should be jealous of their site and try to keep questions there that are on-topic (sorry Programmers and CS Theory mods).

I think that almost all curiosity questions should be allowed on Stack Overflow. However, I think they should be more heavily policed to ensure that only actual evidence based answers rather than those based upon supposition and guess-work are provided.

1. Might just as well try to coin a new phrase once.
2. In which case you're deluded.

9
  • 1
    I don't believe that the validity of a question should be justified on the strength of its answers. If a question alone is not valid, it should be closed. We shouldn't allow a question just because someone snuck a solid answer in there before it was closed. Bad questions are bad questions. Commented Feb 2, 2013 at 20:35
  • 1
    @Nicol Bolas: Precisely. This is also why self-answered questions end up being closed when the user puts lots of effort into the answer and neglects the question. Commented Feb 3, 2013 at 6:06
  • 1
    I did not say that @nicol. I just do not think we should be closing questions which do not seem answerable solely for that reason. If a "why" question is a good one it should remain open. Commented Feb 3, 2013 at 9:54
  • @benisuǝqbackwards: Consider your statements for "Why does Mono exist?". You say "When the sole answer is "because it does"" That's judging a question entirely based on the quality of the answer(s). What you're saying is that if Miguel de Icaza came onto SO and stated a series of reasons why he started the project, then the question would be OK. Commented Feb 3, 2013 at 10:56
  • I think you're slightly misinterpreting me @Nicol; I do not think that if Miguel came onto SO and answered the question that the answer would be substantially different from Oded's. I also think it's a crap question; I wanted to include a negative along with the positives. I do not think it should be re-opened; it's not a good question. If, however, a question is answerable without a vague "because it does" and it is a better question then I do not see why we should be closing it because we currently see no way of answering it. Commented Feb 3, 2013 at 11:26
  • A question should not be "not constructive" solely because of the potential lack of obvious possible answers; so yes I'm judging a question based on its answers. That is what's happening at the moment; the difference is that I'm choosing to look at it in a positive rather than a negative light. Commented Feb 3, 2013 at 11:27
  • 1
    The notion that the answers - potential or actual - somehow justify a question makes many of us uncomfortable; the desire for a strong, simple rule that can be used to evaluate a question in a vacuum is understandable, and... hopelessly idealistic. Both Good Subjective, Bad Subjective and Real Questions Have Answers took a hard look at existing discussions and came to the same conclusion: answers can make or break a question.
    – Shog9
    Commented Feb 7, 2013 at 21:24
  • I agree that answers can make or break a question; but I think I'm arguing for questions being assessed in more of a vacuum @Shog9. What seems to happen at the moment is questions get closed on the basis of their potential answers. I'm arguing (at least in the comments) that we'd lose a lot of good answers that way and that we should not close questions on the basis of what may be, but what is. A good question is a good question, period; whether it seems like the answers would be constructive or not. These questions should be policed to ensure that only provable answers are posted. Commented Feb 8, 2013 at 8:35
  • @Shog9: Without a vacuum, you enforce a double-standard. "Why did my question get closed, but this other half-assed question gets to stay open?" Well, because everyone is posting crap answers on yours. With a vacuum, questions are not treated equally; some get closed immediately and have no time to collect answers. Others stay open for awhile and get decent answers. I don't know what the real solution is.
    – user102937
    Commented Jul 19, 2013 at 17:32
6

I think for a why question to be a good one, it must reach some point of education that isn't just for knowledge of programming/computer trivia, but is useful information to know for programmers.

A good example is:

Why Is Processing a Sorted Array Faster Than an Unsorted Array?

This question asks about a programming issue that is very relevant to most programming, and it has great answers that really go into the nitty-gritty details.

Another post that educates on a subtle point in programming:

Why Does Python Code Run Faster In a Function?

4

I think that a why question should pass two criteria:

  1. Not be a rant. Like "Why not use tables for layout in HTML?", which is nothing more than an excuse for someone to defend his generally unpopular position. Questions should not be opinions.

  2. What good is knowing the answer?

The last criteria is the big one for me: does the answer provide anything more than satisfying someone's idle curiosity? Consider "Why does Java allow this useless class?" Even if a Java developer came along and posted a great answer detailing the debates and discussions about this... would anyone have learned anything afterwards? Nothing of consequence. The most you might get is some information about compiler design, but even that's not particularly significant.

Whereas "Why does volatile exist?" provides real information. A good answer will by its nature describe uses of volatile. If someone doesn't know what it is used for, then they will get useful information.

Indeed, I imagine that many of the good "why" questions can be rephrased to remove "why" entirely. "Why does volatile exist?" could become "When would you use volatile?"

So let's examine these examples in this light:

Now the bads:

I think that this system works as a first-pass judgement criteria. It's subjective to be sure, but so are many "why" questions.

7
  • -1 "would anyone have learned anything afterwards? Nothing of consequence." This argument is flawed. Maybe you see it that way, but clearly not the people who asked the question and the people who upvoted it. What makes this answer even worse is your superficial assessment of what are "obvious" rants or what is "irrelevant" on questions posted under tags to which you've provided no virtually answers. Commented Feb 2, 2013 at 8:07
  • (cont) What is of particular interest is your clear bias towards C and C++ questions in your "evaluations." The question asking why namespace std is a bad practice in C++ is not any better than the one asking why tables are bad in HTML. All this answer does is prove that one man's trash is another man's treasure. Commented Feb 2, 2013 at 8:15
  • 1
    (cont) Finally, I somewhat agree with the rant part - as in, ranty questions tend to generate needless discussion and/or flame wars. But the UTF-8 question (which I don't think it's ranty at all) would have lost tchrist's epic answer if had been closed. And I don't want that to happen - useful answers to be lost or not posted because overzealous deleters and closers think any question that doesn't fit their often inconsistent standards deserves to be nuked. Commented Feb 2, 2013 at 8:31
  • @NullUserExceptionอ_อ: "The question asking why namespace std is a bad practice in C++ is not any better than the one asking why tables are bad in HTML." Did you read those two questions? The HTML question was very defensive, saying, "I have never (or rarely to be honest) seen good arguments for this," and essentially denigrating people who disagree with his opinion as being guilty of "cliche thinking". The C++ question was inquisitive, asking from a neutral point of view. The HTML guy wanted justification for his preconceived notions; the C++ guy wanted information. Commented Feb 2, 2013 at 8:53
  • @NullUserExceptionอ_อ: "clearly not the people who asked the question and the people who upvoted it." People ask and upvote bad questions all the time. The fact that a question was asked and the fact that it gathers lots of upvotes is not sufficient justification for keeping it around. Commented Feb 2, 2013 at 8:56
  • @NullUserExceptionอ_อ: "But the UTF-8 question (which I don't think it's ranty at all)" Did you read the part of his question that was clearly argumentative? When the person asking the question is effectively saying, "The language should do X", they're not asking a question anymore. Commented Feb 2, 2013 at 8:57
  • 1
    @NullUserExceptionอ_อ: Lastly a question must stand on its own merits. We don't say that a question is good just because someone decided to bless the question with a good answer. Bad questions are bad questions, even if one happened to attract a good answer to them. I don't want to see information disappear either. But bad questions need to be closed. If someone might have provided a good answer they can do so when someone later asks a good question. I think we should use more "historical" locking for crap questions with excellent answers, but they should remain closed. Commented Feb 2, 2013 at 9:04
4

I'm confused about your comment, could you elaborate on 'this is going too far'?

It looks like pigeonholing to me. Automatically putting a Why question in the "probably ought to be closed" hole is going too far. "Why is the sky blue" is an important question for any child to ask, it sets him on the path of perceiving the world better. Those why questions exist in programming too, many of them with profound and important answers that benefit many programmers to perceive their craft better.

The Why question is the one that follows the How questions. Asked when a programmer discovers that he keeps running into How situations because he doesn't quite understand the underlying principle. Answer one Why and you pre-empt a dozen eye watering boring repetitive Hows.

Having those questions automatically closed would be a great loss. Make the call case-by-case only.

2
  • 2
    Has anyone suggested automatically closing those questions? If so, I haven't seen it -- more to the point, if someone has suggested it, is there evidence that they are being automatically closed? What we have now is a case-by-case basis. The crux of my question is: Is the range we have now acceptable, and if not, why not?
    – George Stocker Mod
    Commented Feb 2, 2013 at 14:20
  • Sounded to me you were asking for a way to sub-classify the class of Why questions. I'm trying to make the case that this is entirely the wrong approach. Guess I didn't make it well enough, sorry. Commented Feb 2, 2013 at 14:30

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .