David Robinson bio photo

David Robinson

Director of Data Scientist at Heap, works in R.

Email Twitter Github Stack Overflow



I spend a lot of time answering questions on the programming Q&A site Stack Overflow. The site is fairly notorious for its strict rules on what kind of questions can be asked, with questions that don’t meet these guidelines getting swiftly closed. (Incidentally, I would credit this policy for much of the site’s success).

This strict policy is not universally beloved (to say the least). A common refrain among disgruntled users is “How can you say my question was bad? Everyone knows there are no stupid questions!

I have to disagree, not only with the criticism of the site, but with the aphorism in general. There are stupid questions- but they’re not what you’re thinking of.

A Good Question

When people say “there are no stupid questions,” what they’re defending is typically something like:

What is 2 + 2?

That is, they’re saying “no question is too easy.” And this comes from a good educational impulse. If you say a question is “too easy,” you’re failing as a teacher, and you’re mocking your student for the gaps in their knowledge rather than filling them in.

But this is not what I mean by “stupid questions.” Sure, “What is 2 + 2” shows a certain lack of research effort. But it’s clear and direct: it’s something I could answer, and it’s something I could teach. I have no interest in calling an asker “stupid” for not knowing something. (See A Million Lines of Bad Code for more on this topic).

So what are stupid questions?

Question is Wrong

Why is 2 + 2 equal to 5?

A question being “wrong” sounds like a paradox. But many questions contain assumptions, and if these assumptions are wrong, it can make any answer utterly unhelpful, and make the question misleading. (The traditional example in rhetoric is “Have you stopped beating your wife?”).

I once came across a question (since deleted) on Stack Overflow that asked “Why does this Java code compile?” The answer was, simply, “It doesn’t.” What a waste of everyone’s time!

Not Enough Information

What is the answer to the arithmetic problem I’m trying to solve?

This question is impossible to answer because it does not provide enough information. For coding questions, this typically describes a lack of a Short, Self-Contained, Correct Example. (Everything I could say about such questions is far better expressed in that extraordinary link: read it!!).

Note: Adding phrases like “Please help, it’s very urgent” and “I’ve tried everything but nothing works” do not make these questions more answerable.


“911, what is your emergency?”

“What is 2 + 2?”

In this case, the question itself may not be bad. It is the context that makes it inappropriate. You shouldn’t go up to the microphone at a public Q+A of a politician and ask how you should fix your car, or whether you should give up gluten. (Judging from some of the public Q+A’s I’ve seen, this is not a universally shared opinion).

Sometimes this problem is related to effort:

Solve the following 50 arithmetic problems. Show your work.

This would be an appropriate question for an elementary school teacher to ask her students. It would not be appropriate for me to email to a colleague I’d just met.

Not A Question

Man, what kind of idiot wouldn’t know that 2 + 2 = 4?

Just because something ends with a question mark doesn’t make it a question (and therefore “immune to stupidity”). Rhetorical questions and rants are not questions, they’re thinly disguised statements. They can be judged on the same grounds that any statement can be judged, and in many cases are also Off-Topic (think of a public Q+A where an audience member spends ten minutes expounding his pet theories, before ending with a half-hearted “You know what I mean?”).


When someone asks a question, they’re admitting ignorance, and therefore revealing a vulnerability. This is a difficult, and virtuous, thing to do! And protecting them from shaming (“Ha ha, you don’t know the answer!”) is a worthwhile goal.

But someone asking a question is also making an imposition- they’re expecting someone else to spend their time answering it. And in that implicit contract, they have responsibilities as well:

  • They should make sure their question’s assumptions are correct (rather than asking questions that have no meaningful answer)
  • They should provide all the information an answerer might need (so that the question can be answered, without needing to ferret out additional clarifications)
  • They should make sure they’re on-topic (and not asking a question inappropriate for the context)
  • They should actually be asking a question (and not taking advantage of the platform to rant, or show off)

When askers don’t put in this effort, what they end up with is a “stupid question.” And once they recognize that, they can start making it a good one!