Well-formed questions are more likely to get answers

Eric_S_Raymond_portraitWhen I was prototyping my game Mathogen. I had so many questions and no one to answer them. Objective C was relatively new and there weren’t many resources online.

I posted my questions to the Cocos2d discussion forum and got a different set of responses. I noticed that based on the narrowness of my questions, I would get different responses. If I didn’t take time to narrow down my questions, fully search for the answer online, and phrase it in an understandable way.

After seeing that I didn’t get answers, or got some really nasty feedback, I was ready to work on forming my questions in a better way.

Eric Raymond, author of The Cathedral and the Bazaar, offers the following tips on How to ask questions the smart way:

  • Choose your forum carefully
  • Stack Overflow
  • Web and IRC forums
  • As a second step, use project mailing lists
  • Use meaningful, specific subject headers
  • Make it easy to reply
  • Write in clear, grammatical, correctly-spelled language
  • Send questions in accessible, standard formats
  • Be precise and informative about your problem
  • Volume is not precision
  • Don’t rush to claim that you have found a bug
  • Grovelling is not a substitute for doing your homework
  • Describe the problem’s symptoms, not your guesses
  • Describe your problem’s symptoms in chronological order
  • Describe the goal, not the step
  • Don’t ask people to reply by private e-mail
  • Be explicit about your question
  • When asking about code
  • Don’t post homework questions
  • Prune pointless queries
  • Don’t flag your question as “Urgent”, even if it is for you
  • Courtesy never hurts, and sometimes helps
  • Follow up with a brief note on the solution

Questions on StackOverflow

In this post I am planning to highlight the effectiveness of Raymond’s suggestions by selecting two questions posted to StackOverflow. I will be featuring the outcomes that occur based on the quality of the way the question was asked. Hopefully I will find that the following is true:

  1. Positive outcomes occur when users follow the guidelines.
  2. Negative outcomes occur when users don’t follow the guidelines.

I am going to show how the chosen questions fulfill (or not) the precepts for smart questions, I will also include how the responses reflect the smartness (or lack thereof), and the insights I gained as a result of this experience.

The “smart way” to ask questions

Here is an example of a good question: Retrieve referral application from URL scheme launch via NSAppleEventDescriptor

The OP follows these precepts established by Raymond:

  • Choose your forum carefully
  • Use meaningful, specific subject headers
  • Make it easy to reply
  • Write in clear, grammatical, correctly-spelled language
  • Send questions in accessible, standard formats
  • Be precise and informative about your problem
  • Describe the problem’s symptoms
  • Describe your problem’s symptoms in chronological order
  • Describe the goal, not the step
  • Don’t ask people to reply by private e-mail
  • Be explicit about your question
  • Prune pointless queries
  • Don’t flag your question as “Urgent”, even if it is for you.
  • Courtesy never hurts, and sometimes helps
  • Follow up with a brief note on the solution

The author of this question poses the question so well that he ends up answering his own question. I believe that he framed his question so well (perhaps reframed is a better word) that he was able to see the question more clearly than he had before. He doesn’t explicitly state how he got to the answer but I believe he used a technique used by Richard Feynman to reframe a problem.

Shane Parish at the Farnam Street blog explains:

The Feynman Technique

Step 1. Choose the concept you want to understand.
Take a blank piece of paper and write that concept at the top of the page.

Step 2. Pretend you’re teaching the idea to someone else.
Write out an explanation of the topic, as if you were trying to teach it to a new student. When you explain the idea this way you get a better idea of what you understand and where you might have some gaps.

Step 3. If you get stuck, go back to the book.
Whenever you get stuck, go back to the source material and re-learn that part of the material until you get it enough that you can explain it on paper.

Step 4. Simplify your language.
The goal is to use your words, not the words of the source material. If your explanation is wordy or confusing, that’s an indication that you might not understand the idea as well as you thought – try to simplify the language or create an analogy to better understand it.

The “not smart way” to ask questions

Is it possible to execute Objective-C programs in Windows? is an example of a question that does not follow Raymond’s guide to asking questions.

  • Question violates the principles established by Raymond.
  • Answers provided by the community should demonstrate that asking a question in a “not smart” way does not lead to both effective and efficient help.

The OP does not follow these precepts established by Raymond:

  • Be precise and informative about your problem
  • Describe the problem’s symptoms
  • Describe your problem’s symptoms in chronological order
  • Describe the goal, not the step
  • Be explicit about your question
  • Prune pointless queries

As a result the OP gets the following responses:

Out of all the 6 answers he gets on StackOverflow the one that illustrates that he did not search for a possible answer before posting is here:

Yes you can compile Objective-C on Windows. But for iPhone development this question was already asked.

And there are several similar questions about iPhone development here on Stackoverflow, just search for it.

Because the OP did not do the proper research to find out if his question had been answered before he added unneeded stress to the people that were reviewing his question.

Insights gained as a result of this experience

I learned that a well-phrased question leads to answers. Even if they come from the OP.

Author: David Neely

Professional Software Developer. Technology and Web Coordinator at the University of Hawaii's Manoa Career Center.