There are no dumb questions, but there are definitely smart questions! Being able to ask the right questions and consequently, communicate effectively is an invaluable skill that all software engineers need to have in order to be successful in their professional careers. In his essay, How To Ask Questions The Smart Way, Eric Raymond explains in great detail how to effectively and appropriately ask questions to be able to get meaningful help from others and continue to strenghthen the CS community. The introduction of Raymond’s essay basically describes what one should do before asking a question online. While it may seem trivial, it is important that one follows the tips that Raymond provides so that one may avoid “hostility or arrogance” over a simple question that could have been answered if a small amount of time was invested in finding the answer. Some of these tips include: try to find an answer by searching the Web, try to find an answer by reading the manual, try to find an answer by inspection or experimentation, etc.
The remainder of Raymond’s essay goes on to explain how to ask a smart question. In summary, a well-constructed smart question consists of meaningful and specific headers, is written clearly and grammatically, precise and informative descriptions of the problem, explicitly stated goals, and a summary of previous attempts and their results, to name a few. Other tips that seem more like common sense are also included such as asking in the appropriate forum and being courteous to others.
Here is a question from Stack Overflow, a question and answer forum for programmers: Why did the width collapse in the percentage width child element in an absolutely positioned parent on Internet Explorer 7? The context of the question is not necessarily important however, the person asking it hits a few of the points mentioned by Raymond to get a handful of thoughtful answers back. They efficiently explain their problem, they mention other attempts and the results, and the header is very specific to the problem. This question would be an example of a “smart question” and the answers provided by the community seem to reflect that. The community replied with descriptive, meaningful answers that most likely helped the user to solve their problem.
Now take a look at what would be considered a “not so smart question” (which, interestingly enough, are easier to find than smart questions): i just start some question as a begginner level so my question is to print a table of fahrenheit to celsius. While this question is much easier to understand in terms of context, it more so sounds like a homework problem than a real question. This question nearly exhibits all of the opposite traits of a smart question. It is hard to understand, generalized, and not thought out well enough for the community to provide meaningful feedback. Even at the time of writing this, this question was closed by Stack Overflow for having a lack of detail or clarity and is no longer able to accept answers.
The difference in communication skill is obvious between these two questions, as seen in the answers, but what might not be as obvious is the importance of being able to effectively communicate. The reason why is because this skill does not just apply to online forums or professional software engineering, but to every aspect of life. Effective communication is often overlooked but is many times the key to most successful outcomes or simply making progress. A seemingly harmless misunderstanding could lead to detrimental outcomes from getting a customer’s order wrong or crashing a plane and killing hundreds of people as witnessed in the 1977 plane crash in the Canary Islands as a result of miscommunication between the pilot and air traffic control. So clearly there is a benefit to asking smart questions because it not only helps you receive a sufficient answer, but it elicits thoughtful and meaningful dialogue throughout the CS community.