Sense and... Stack Overflow

24 Jan 2024

Eric Raymond’s essay titled, “How To Ask Questions The Smart Way,” provides a clear overview of how to be a mindful and effective communicator when posting questions in forums such as Stack Overflow. Navigating online etiquette skillfully may feel difficult or complicated, but I believe that this essay makes it fairly more comprehensible due to the way it is organized and reasoned. While this essay is written with computer science related content in mind, I believe that being able to think about and ask a good question is an essential life skill. Nobody is expected to know all the answers, but being able to be resourceful, critically think, and ask an effective question may be essential to getting closer to an answer.

Many times, software engineering is completed with a diverse team of individuals, and clear communication may make the task easier for everyone involved. Not only does asking questions promote effective collaboration and clarity in the workplace, but it may also lead to more effective problem-solving and less risk of errors. Additionally, asking a thoughtful question provides a great learning and teaching opportunity, ultimately leading to more experienced and knowledgeable engineers.

What Makes A Smart Question?

With all of this talk about smart questions, you may be wondering what exactly makes a question a smart question. Let’s look at some examples.
To begin, let’s examine an example of a smart question. This question on Stack Overflow meets many of the defined criteria for smart questions. The user was trying to develop an app, but they keep getting an “OutOfMemoryError” due to the large size of the image they are attempting to load, and they’re trying to figure out how to resize the image on the fly to avoid the described error. This individual posted to an appropriate tech-related forum with correct tags so that it may be reached by the correct people. Overall, this person was clear about the issue they were facing and their goal. Their title describes the problem, and they lay out the steps that they took before they got the error and the steps they took to try to resolve the error. In addition to this, the user describes the types of tools they used in their program, and they provided code that may be copy and pasted to recreate the error as well as the logs that contain the errors. Throughout their post, they remain straightforward and descriptive, and the clarity and correct-language used makes the post easier to understand. To top it off, they asked a clear, open-ended question that appeared to be receptive to a variety of solutions.

The fact that there many replies that offered up solutions or improvements along with feedback or explanations should serve as a strong testament to the quality of their post. Some users even offered additional resources for the user to look at. It’s possible that the effectiveness of the user’s question also likely contributed to the post’s high rating and visibility on the website which may improve the chance that the user was able to get the help needed to accomplish their goal.

In comparison, let’s look at a weaker question posted to Stack Overflow. Unfortunately, weaker questions seemed to be easier to find. In this post, the user appears to get a “NoSuchElementException” error in a piece of Java code which the user lists. Beyond the errors and code listed, the post is relatively empty except for a few vague statements asking for help to figure out what is wrong and a link to the coding challenge problem that the user was attempting to solve. Even the title, “Java Code Compile Issue,” as well as the single “java” tag are incredibly vague. Based on the post, the user did not appear to make other attempts to review the code and fix the problem themselves, and the included code is neither commented nor described by the user so anyone attempting to answer the question must try to understand the original problem and the code by themselves. While the ability to review the code and understand the problem may be expected of any skilled developer, the user did not make an informative post that would make things easier for anyone trying to figure out what is going on. Not only does the question potentially come off as “lazy” due to the poor quality of the content, but it is also a much weaker post due to the lack of clear and grammatically correct language which may make it difficult for others to understand.

While the lower-quality post did receive a reply that offered up an answer and a link to the competition’s solution page, other comments on the post suggested that the user should go examine the Java documentation and ask a better question to understand why the code was throwing that error. Ultimately, the user was not able to get nearly as much quality feedback as the smart post despite posting on a relevant forum like Stack Overflow. In fact, this seemed to be a trend that I observed by going through low-quality posts. In every low-quality post I clicked on, there were usually significantly fewer answers than the higher-quality posts. While this is not a formal study, these observations may suggest that a higher-quality question may lead to more quality answers compared to lower-quality questions.

Don’t Be That Person!

Creating low-quality posts will not only result in less satisfactory answers, but regularly asking poor-quality questions with minimal effort may damage one’s reputation by creating a perception that they’re lazy, poor at critically thinking, and unable to be proactive and take initiative in problem-solving. One who regularly asks poor quality questions may stand out for negative reasons while on the other hand, one who takes time to problem-solve and ask a quality question may be viewed more positively and as a resourceful asset to the team. Sometimes people may be scared to ask a question out of fear of being perceived as unintelligent or incapable, but I believe that asking questions is crucial to learning and establishing clear communication and understanding. I believe that it is important to reiterate that the quality of a question ultimately appears to be more tied to efforts rather than the perceived level (i.e. material that is perceived as basic versus more complicated) of the subject-matter being asked about. A quality question, regardless of whether it is asked by someone trying to understand a basic data structure or someone who is trying to create a difficult algorithm, is a quality question. Before asking a question, it’s important to first ask ourselves if we are contributing positively to dialogue in the online space through thoughtful engagement.