
Mastering effective communication is one of the necessary cornerstones to being a successful software engineer. Possessing the ability to ask smart questions and to phrase difficult problems clearly in a manner that maximizes the likelihood of receiving a helpful response is one of the fundamental aspects of effective communication as stated in Eric Raymond’s essay, “How To Ask Questions The Smart Way,” which provided invaluable guidelines on how best to achieve this. Asking a smart question is a form of flattery to an experienced software engineer or user; however, before you ask any question, you should first attempt to research it on your own before funneling the question out to experienced users, and this should be reflected in your question. A question should not be passively demanding an answer, but instead earning one with a “substantial, interesting, and thought-provoking question — one that implicitly contributes to the experience of the community.” (Raymond). Smart questions stress the fact that you need guidance, ponder whether you overlooked or missed something, request for the precise directions and course of actions needed to address your problem, and emphasize your willingness to become an active participant in aiding in your quest for a solution will more likely ensure that you’ll get the assistance you requested. By understanding and applying some of these principles and guidelines, software engineers can enhance their problem-solving skills and contribute positively to the community.
According to Raymond, several key characteristics are needed to develop smart questions, such as, being specific, detailed, clear, concise, and should contain proper grammar and spelling, so it may be easier to read and understand. It should also try to avoid unnecessary information, focus on the core issues, provide an understanding of the problem with sufficient context and background information, and reflect that a prior independent research was conducted by the questionnaire in efforts to first discover the answer on his own.
It’s important to ask smart questions for several reasons. Smart questions usually generate useful responses. Knowledgeable individuals or users are also attracted to well-thought-out and clear questions, since it helps them to better understand the problem and offer effective solutions. Smart questions also are time savers for all parties involved and result in a shorter response time, especially if the question is detailed and precise, which helps minimize confusion. Plus, when smart questions are asked, it demonstrates the level of respect the questionnaire has for the community, his expertise and knowledge in the industry, and how he values the user’s time as an important commodity, resulting in a supportive and collaborative environment.
An example of a smart question can be found in this post here. In an attempt to understand why processing a sorted array is faster than an unsorted array, the questionnaire provided a clear and specific subject header that accurately describes the issue. The questionnaire showcased his understanding of the problem by implementing relevant codes from both C++ and Java programming languages. He then compared the timing results of both sorting methods and searched for a valid explanation to justify the significant difference between the two execution times. Using detailed facts and concise questions enables the questionnaire to gain a better understanding of the problem and hopefully leads to more helpful responses from users. This is a prime example of a well-structured smart question since it provides proper grammar and spelling, which makes it easy to read and understand. Comments and the answers to the question also demonstrate community engagement on a high level, where users discussed and analyzed the various sorting results. Therefore, it reinforces the importance and effectiveness of asking smart questions, since it leads to a rich and informative discussion. Smart questions like this one, should contain key characteristics, such as, being specific, detailed, clear, concise, and reflecting the fact that a thorough prior research was conducted in the matter.
An example of a not-so-smart question can be found in this post here. The questionnaire was having a problem with the “is” operator in Python and posted a vague subject header in the form of a question in all caps emphasizing his frustration, “WHY IS THE ‘IS’ OPERATOR IN PYTHON NOT WORKING WITH MY CODE?” In an attempt to figure out what was wrong with his code, the questionnaire provided very little context with his title, failing to specify the exact issue. This lack of clarity and context makes it harder for users to provide helpful responses and often leads others to disregard the question. The questionnaire does not provide enough information about what he encountered. He simply stated the problem with the code and how it’s not working; however, he failed to state what his expectations were, how the code should have behaved and what output he was trying to achieve. There is also no indication that the questionnaire has done any prior research or troubleshooting, which indicates a lack of effort on his part. Because this not-so-smart question lacks specificity, direction and background information, it makes it difficult for users to provide a precise answer. This is evident since the only comment posted on the page was by a user who ridiculed the questionnaire’s use of an aggressive tone since he phrased the question in capital letters, and advised him to not shout in the title. Consequently, responses to these types of not-so-smart questions are more likely to be less helpful, since the community would need to ask for more information before they can offer a solution.
Eric Raymond’s article “How To Ask Questions The Smart Way,” has deepened my understanding of what is considered a smart and not-so-smart question. When the questionnaire provides smart questions for the users, it pays off exponentially in the long run. By taking the time to formulate a clear question, emphasizing the actual problem, directions and expectations, and reflecting upon the prior research background conducted, posing smart questions help the users understand and address the questionnaire’s issues more effectively. In addition, asking smart and thoughtful questions shows the questionnaire’s respect for the community, demonstrates how he values the time and expertise of users and helps foster a more collaborative and supportive environment. Overall, having effective communication and knowing how to ask actual “smart” questions are important and vital skills needed for software engineers in the future.