Reflecting on 'How To Ask Questions The Smart Way' by Eric Steven Raymond

08 Mar 2024

The following is a technical essay assignment for ICS314:

‘There is no such thing as a stupid question’ or ‘the only dumb question is the one that isn’t asked’ are a couple common phrases about asking questions I have heard repeatedly throughout my life. In the open source software module of my ICS314 course at UH Manoa, we were introduced to a different perspective about questions pertaining to software development. The essay ’How To Ask Questions The Smart Way’ published by Eric Steven Raymond, or ESR - a computer scientist, author of ‘The Cathedral and the Bazaar’ and proponent of the free software movement; offers a solution for asking ‘smart’ and ‘not smart’ questions.

So, what is a good question in terms of asking for help on software forums? According to ESR, a good question is one who’s answer is not easily found and does not waste the time of the well meaning people who are offering their help and expertise for free, which I completely agree with and understand. The basis of what makes a good smart question is that you cannot find the answer through research of manuals, a forums, blogs or source code. The tertiary components of a good question are that it is detailed, written in clear language and goal oriented.

Below, are two examples of basic JavaScript questions posed to Stack Overflow outlining the differences between ‘smart’ and ‘not smart’ questions.

The following post from stack overflow is a ‘not smart’ way to ask a question, my opinion: Stack Overflow Smart Question

I prefer to use OOP in large scale projects like the one I'm working on right now. I need to create several classes in JavaScript but, if I'm not mistaken, there are at least a couple of ways to go about doing that. What would be the syntax and why would it be done in that way?
I would like to avoid using third-party libraries - at least at first.
Looking for other answers, I found the article Object-Oriented Programming with JavaScript, Part I: Inheritance - Doc JavaScript that discusses object-oriented programming in JavaScript. Is there a better way to do inheritance?

While this question was not extremely specific, it was a framed in a way to spark conversation between developers that have more industry than the poster. The question elicited 19 answers and 754 upvotes, which is evidence of how helpful it was to other users. Having open ended, but specific questions that lead to discussions is a ’smart’ way to ask questions.

The following post from stack overflow is a ‘not smart’ way to ask a question, my opinion: Stack Overflow Not Smart Question

Q: How do you tell if a function in JavaScript is defined?
I want to do something like this

function something_cool(text, callback) {
    alert(text);
    if( callback != null ) callback();
}
But it gets me a ‘callback is not a function’ error when callback is not defined.

While I’m the intent of the question was a genuine question, a google or documentation search would have given a much faster answer then waiting for a response from Stack Overflow.

Conclusion

It is best practice to be courteous and respectful to the people who take time out of their day to answer software questions from strangers for free. In order to preserve as much of their time as possible it is important to first try your best to answer the question on your own by conducting research, and in the case you cannot find an answer, post your question in a meaningful, specific way that will be beneficial to the software community.