“But every question is a cry to understand the world. There is no such thing as a dumb question” -Carl Sagan, The Demon-Haunted World: Science as a Candle in the Dark.
Perhaps you have heard something similar at some point in your life. It may have been from a teacher trying to encourage the students to break the silence of the classroom. Maybe you heard it from your parents as they taught you how to interact with society. Whether or not you have heard this phrase before, it is important to continue to ask questions in order to grow as a person. This is especially true for software engineers as it is virtually impossible to know all the answers with the multitude of programming languages out there. Therefore, to become a smarter software engineer, questions are essential. However, there is caveat to asking questions as improperly formulating your question can lead to ridicule or even no response at all.
Eric Raymond’s “How to Ask Questions the Smart Way” is an excellent launch pad to start the journey to asking smart questions. In general, you should make an honest attempt at solving your problem before asking others. This can be done several ways, including searching the internet, reading the manual, and visiting a FAQ section. This is to avoid looking “lazy” and demonstrate you’re not there to leech off others. If you cannot solve the problem on your own, be sure to be respectful when asking other individuals for their assistance. Your message should be grammatically correct and free from spelling errors. Additionally, your question should be focused and accessible. It is key to remember that a stranger is lending their time to address your question.
The following Stack Overflow question follows the guidelines for asking a question the smart way. In this example, the user makes his question accessible by organizing his sample code into code blocks for others to try his code. Additionally, he clearly states his goals by explaining what the desired result is and what is currently being outputted.
It outputs this:
My value: 3
My value: 3
My value: 3
Whereas I'd like it to output:
My value: 0
My value: 1
My value: 2
These actions also indicate that the user attempted solving the problem several times on his own before posting to Stack Overflow. This increases the likelihood of receiving help as the community won’t see him as trying to leech off other people’s time. Similarly, the top-rated answer also follows the guideline recommended by Mr. Raymond. The developer directly addressed the user’s question before proceeding into deeper explanation as to why. For each of the three explanations, the code was placed into code blocks for ease of access.
On the other hand, the following Stack Overflow question is an example of how not to ask in the smart way. First off, the user simply writes “Fix This Please” as the title of his question. This is very ambiguous and gives no indication to the nature of the problem (i.e. the programing language). Then the user provides the sample code in the format of a blurry screenshot. This makes it difficult for the person assisting to read the code and interact with the code. It isn’t until the end of the post that the user mentions trouble with “apostrophes and ticks.” While it is a more detailed explanation that what was provided in the title, the exact nature of his problem is still ambiguous. There is also no indication of any prior troubleshooting steps done by the user. Overall, the user’s tone seems to indicate laziness and a desire for someone else to do all the heavy lifting for him. Meanwhile, the sole person who answered the question demonstrated proper organization with code blocks, provided ample details, and used a respectful tone.
In conclusion, I have come to realize that there are no “dumb questions” but there are “dumb” ways to ask a question. While trying to adhere to all the guidelines pointed out by Mr. Raymond may appear tedious, I think it is important to increase the likelihood of receiving an answer and respecting the time a stranger has put aside to address my question. As a general rule moving forward, I will put myself in the shoes of those viewing my question and ensure the proper organization and respect is in place before hitting that “submit” button.