The ability to ask smart questions is vastly under-appreciated. It is even more so in our line of work where often you are no more than a username in a forum of many. Being able to ask smart questions is of utmost importance for software engineers because of the precise nature of our work.
Any computer scientist will tell you that ambiguity is one of the most frustrating aspects of programming. Being told to create a program with ambiguous instructions, facing an error with ambiguous origins, or worse, trying to understand an ambiguous question on Stack Overflow, are universally painful experiences for programmers; thus, we all do our best to avoid them.
Consequently, a smart question will yield a smart answer, whereas an ambiguous question will yield an inadequate answer if any at all. For instance, this particular Stack Overflow question is far from a Smart Question as would be described by Raymond. To begin, the subject header which reads, “Array Object Definition Issue” is unspecific. Instead of providing the error message from their code, the author opts for a subject header that could describe a multitude of things. Furthermore, the author essentially describes their problem as, “I deleted something, and now an error is happening. Why?” The responses to their inquiry are appropriately unkind due to the ambiguous nature of their question although they did provide their code. Additionally, the author fails to describe the intent of their code, an issue that is addressed by the first reply which asked for more clarification as to what the objective was. All in all, the question received unsatisfactory answers due to its poor wording and unclear intention.
As for a smart question, this particular Stack Overflow inquiry is adequate in clarity and intent. The author quotes the error message from running their code, and provides additional context as to where it is happening with the subject header of, “Cannot read property ‘push’ of undefined when combining arrays.” The author not only provides their code, but describes the location within the code where error occurs. The author receives many replies which not only answer their inquiry, but also provide working example code referencing the author’s code. The answers to the question reflect the “smart” nature of the question with their clarity and precision.
All in all, reading Raymond’s essay on “How to ask questions the smart way” has better defined my criteria for what makes a question more likely to be answered adequately. Although anyone can point out that a question may be unspecific, Raymond’s clear precepts have made recognizing these faux pas much easier and provided me with a better idea of what a smart question might look like when I need to ask for help. It goes without saying that error messages should be provided for any code that has error messages, but this is lost on some people. I’ll definitely be making my intentions clear when it comes for me to inquire about my code.