Software engineering depends greatly on communication with others as it does on code. One of the most important skills for a software engineer is the ability to ask effective questions, questions that are clear and exerts critical thinking upon the reader. Eric Raymond’s guidlines, How to Ask Questions the Smart Way, provides a solid framework for how to write such questions. We can see the importance of asking “smart” questions by analyzing two examples from Stack Overflow. The first demonstrates how following Raymond’s principles leads to efficient and effective help from the community. The second illustrates how not following those principles results in poor outcomes, such as confusion and frustration. By comparing these two cases, I gained a deeper understanding of how question quality directly affects the quality of responses.
Smart questions are important because it shows sign of respect to both the asker’s time and the time of the people who offer their help. According to Raymond’s guidelines, some indications of a smart question is being clear, describing the goal not the steps, and providing enough information for others to reason about the problem. Asking smart questions is valuable in developing communication skills that allow for, in a professional software development setting: better collaboration, faster debugging, and a more efficienct use of time.
A good example of a smart question is: Why does creating a list of lists produce unexpected behavior?
In this question, the developer is confused by Python behavior when initializing a list of lists. They showed their attempts at creating this structure and demonstrated, with concrete output, that modifying one sub-list unexpectedly affects all others. Following Raymond’s key guidelines, we can see that the developer explicitly states the unexpected behavior and provides a complete segment of code. The asker then compares the two approaches and explains thier reasoning. A key part of asking a smart question, is asking a question that can’t just be searched up for the answer; the question should evoke thought and deep understand as to why such behavior occurs.
A bad example of a smart question is: your project contains error(s) please fix before running
In this “question”, the developer needs help after receiving a error message from the Eclipse IDE while developing an Android application. This post lacks detail on exactly what the asker wants help with and doesn’t provide a description of what they have tried so far. The only information provided is the Eclipse reporting an error and that they could not find the error in their project. Also, the way that the question is written is very grammatically incorrect and seems more like a Google search than a question for others.
By comparing the two questions we can see that asking smart questions allowed for the asker to recieve better answers than the latter. The smart question succeeds because it provides sufficient context, demonstrates their attempts, and tries to understand the underlying problem. In contrast, the poorly asked question fails not because the problem is unsolvable, but because it isn’t clear what the asker is asking for, thus leaving the interpretation to the reader. By using Eric Raymond’s guidelines, in any field, it becomes easier for others to help you and creates more effective collaborative spaces.