Smart Questions Build Smart Developers

05 Sep 2023

Effective communication is essential to success in software engineering and an important part of achieving this communication is asking questions. However, it is important that we ask questions in a “smart way” so we can make a significant contribution to whoever is asking the question. We should always be giving help to those that need it in our community and should discover the importance of asking smart questions.

So what defines “smart”?

Example of a “smart” question. The “smart way” of asking a question, as outlined by Eric Raymond, involves doing your homework, being specific, and providing context and the question linked embodies all these principles. The question asks “Why is processing a sorted array faster than processing an unsorted array?” It also includes coded examples along with an explanation of the code below it. They also include what they’ve tried and the steps they’ve taken so far to fix the problem, along with what their entire thought process was behind their coding and debugging. This is a clear example of a “smart question” which makes it really easy to understand, reply to, and give a clear answer. The community response to this question is swift and helpful. Experts appreciate the effort the developer has put into crafting a smart question, which in turn motivates them to provide detailed, targeted answers. This question leads to efficient and effective help because it enables those with expertise to understand the issue quickly and offer precise solutions.

Example of a “not so smart” question. In contrast, the “not so smart” question we found on StackOverflow fails to adhere to the principles of smart questioning. It lacks specificity, context, and clear formatting. There are grammatical errors, they do not provide any code, error messages, and lack details about their debugging process. The question asked is “solr-dump and restore from on prem to servers in gcp.” This question asked is sparse and unhelpful and does not provide much context to what the issue is and what the developer needs assistance with. Because of this, there are no responses or answers to this question because it is much more challenging to provide an answer to this question rather than a “smart question.” This question reflects the consequences of not asking a smart question, resulting in inefficiency and ineffectiveness in the help-seeking process.

The experiences of these two contrasting questions on StackOverflow illustrate the importance of asking smart questions in software engineering. Smart questions save time for both the asker and the answerer by providing clear context and relevant information. They also demonstrate a level of respect for the community’s time and expertise.

If you have a question then ask!

When developers invest effort in formulating smart questions, they are more likely to receive prompt, high-quality responses. On the other hand, not asking a smart question can lead to frustration, delays in problem resolution, and wasted effort for both the asker and the community.

As software engineers, it is crucial to internalize the principles of smart questioning outlined by Eric Raymond. Doing so not only enhances our interactions within the open-source community but also promotes a culture of knowledge sharing and collaboration. While this essay has provided specific examples, the broader lesson is clear: asking smart questions is a skill worth honing, one that pays dividends in the dynamic and ever-evolving field of software engineering.