I think as many of us have been taught before, one of the best ways to learn is to ask questions. However, learning cannot be substituted with being mindlessly spoon-fed answers and facts. Humans master ideas, concepts, and techniques better when they explore these things themselves. The internet holds a lot of information, and simple questions can usually be solved by a quick search. If for some reason, we hit a wall that cannot be breached, then the inquiries and discussions begin. Yet, we still must be mindful of how we can ask questions the smart way.
A good tree will produce a good apple; a bad tree will produce bad apples or none. What analogy am I trying to create? An answer is only as good as its question. Asking a broad, general question will likely render a broad, general answer, possibly no answer at all because there’s not enough detail for anyone to care. In contrast, providing a descriptive explanation of attempts and failures clarifies the problem to give much more helpful feedback.
As a disclaimer, I don’t particularly like the idea of calling any question “stupid,” but for the sake of this topic and in honor of Eric Raymond’s “How To Ask Questions The Smart Way,” I will be analyzing the difference between “stupid” and “smart” questions.
This link should provide a page on Stack Overflow of a stupid question.
I barely label this as a question at all, frankly speaking. The user is asking for help on a code using a programming language called, “Go.” Apparently, there is an error within the code that prevents the package from running, and the code is copy and pasted as well. This user titles his question, “when I go run error, but cannot find package,” which doesn’t give any type of information as to what type of problem this is, deterring potential coders from clicking. Furthermore, there are exclamation marks all over the place. This is obvious groveling that Raymond specifically points out as bad questioning behavior. Overall, the question shows no sign of research, effort, or attempt to collaborate with others on their answers.
Unsurprisingly, it has two downvotes, indicating it as a stupid question. The answers are not as helpful (or the most helpful it can be) as well. One person replied that it was too difficult to understand; another links a website to learn how to write Go code. The user who uploaded the question did not show any effort in trying so neither did the users who answered.
Now onto something more feasible. This link should go to a page on Stack Overflow of a smart question.
This question doesn’t reek of desperation and entitlement to answers like the other one. The title is specific and summarizes exactly what the subject of the question will be, which is that it’s more of a conceptual question. This prompts those who have an interest in this topic to click on it and actually read his post. Initially, the user explains his prior knowledge of the range function in Python. This displays that he has a good base understanding of the program and his code, which communicates to readers that he is asking a question with deeper thought. He gives examples of his own code that supports his logic before posing his question on why the range object in Python runs so quickly. He contributed his efforts in trying to solve the problem himself first, demonstrating that he has done what he possibly could before asking.
Overall, answers to this question teach a community of software engineers rather than just one individual, and it stimulates discussion. All the answers include detailed explanations and their code as well. This is what makes a question smart, and it is proven by a large number of upvotes on the post.
Moreover, this user replied to his responders by acknowledging and summarizing their answers which helps readers by pointing them in the right direction, thus building good rapport in the community.
Raymond taught me that if I ask stupid questions, I’ll most likely get a not-so-useful answer back. This is why I need to actively ask smart questions. Not everyone will know if I understand a certain concept of JavaScript, or if I considered using one method over another. This needs to be explained. Effort needs to be shown.
Especially for software engineers, communication is key to collaborating on projects and sharing ideas with one another. No one can do the job alone. Asking smart questions will help quicken the process of everything.
Asking stupid questions can inhibit learning, whereas asking smart questions can solve problems and even open up new discussions. Smart questions help a community; stupid ones help none.