Ask Correctly and You Shall Receive

27 Jan 2022

Why You Need to Know How to Ask Correctly

It is crucial to learn how to ask questions correctly, not only when dealing with computer science related topics but in general. With modern technology comes websites such as Stack Overflow and The Coding Forums, which can be extremely valuable resources when used correctly. Think about it, if hundreds of thousands of programmers every day encounter a number of issues and turn to these websites to find answers to their questions, the number of queries every day would be astronomical. However, if we can learn to ask the right questions in the correct way, it would be much easier for everyone to get the answers that they are looking for. Although an answer is not guaranteed and should not be expected, the likelihood of a question being addressed is much higher if it is asked in a constructive and thoughtful way.

There’s No Such Thing as a Bad Question…Or Is There?

As I was looking at “bad questions” on Stack Overflow, I mainly focused on questions that had received negative votes. I think that the ability to downvote something is very helpful because it indicates that the question is not a good one. It is informative to other “hackers” on the website looking to answer questions as they can see that the question may be incomplete or a duplicate question. It is also helpful for the person asking the question as they can see that their question is being downvoted for a reason and hopefully they can use that information to understand how to ask a question more effectively next time.

I came across a question on Stack Overflow where the asker posted their homework assignment on the website, with the title “Please help me fill some methods in LinkedList in C.” They claimed that it was their “last resort” to post their question on Stack Overflow, and that it was a homework assignment that needed to be completed as soon as possible. After reading through their post, I identified many errors in the way they asked their question. First off, I found many typos (even in the title) that were distracting and indicated hastiness. According to Eric Raymond’s essay “How to Ask Questions the Smart Way,” it is important to prepare the question properly instead of asking hasty questions. From the way the asker had written their question (very briefly with many typos and little to no specific details), I could see that they were most likely in a rush while asking this question, probably because the deadline was coming up. Not only is this academic dishonesty (the asker is not coming up with the solution themself), but the asker would not learn anything from asking a question like this. By providing empty methods that need to be filled and attached their entire code, it seems like they expected someone to do their assignment for them. After reading the comments, I saw that others felt the same. Michael from the comments section summed it up perfectly: “Try to do it yourself and if you [are] stuck upon a particular problem get back to SO [Stack Overflow] and ask a question.” The asker lacked effort and did not provide any information on what they had already tried, or what they were specifically stuck on. Another comment says, “He doesn’t look for help. He wants to get it done.” I feel as if that statement accurately represents this post. Although deadlines are very real and often stressful, it would be hurting the asker instead of helping them to do the assignment for them as they would not be learning anything from the assignment. Receiving the full answer may temporarily help their grade, but it would be detrimental to their understanding. I was surprised that this question even received an answer, but a user responded with some hints to guide the asker in the right direction. However, this was lost on the asker. They continued to prod the answerer to send them the full solution, to which the asker replied “I’ll help if you show me what you tried and where it failed but I will not do your complete homework.” I believe this was the appropriate response as the answerer lets the asker know what they can do to receive more help, but is firm about not completing their homework. Lastly, they never showed any courtesy for the help that they received, and I feel that this was just bad internet etiquette.

Fortunately, finding an example of a “good question” was significantly easier than finding an example of a “bad one.” The asker wanted to know how to delete a Git branch locally and remotely. They added a list of their failed attempts and the errors that they received for each attempt, and they finished their question by asking what they could do differently. I liked this question because their end goal was concise and direct: they wanted to delete a Git branch. Asking a question in a direct manner with enough detail clears up a lot of clutter that questions may have. They also added a list of their failed attempts, which shows that they attempted to solve this problem multiple times before bringing their question to Stack Overflow. This indicates that the asker is wanting to actually understand and learn something, instead of having the solution handed to them. Lastly, I appreciated how they described the goal but not the step (from Raymond’s essay). Instead of staying stuck on one method of trying to solve this problem, the asker is open to other ways of finding the solution. In response to their “good question,” the asker received multiple responses that identified different methods of solving the issue, and underneath each of these responses were others commenting and having constructive discussions. I think it is great when a question can lead to further discussion, because that furthers understanding. This was a well asked question that received multiple well formulated responses.

Takeaways…

Although there are no hard and fast rules about asking a question correctly, there are some general guidelines to keep in mind when formulating a question. This is for the benefit of the asker as well as the answerer. Asking a “good question” is not difficult, it just requires more thought and intention. By attempting to find a solution beforehand, keeping records of any errors or information related to the question, and formulating the question with adequate detail and supporting code, anyone can ask a question effectively and (hopefully) receive a good answer to lead them in the right direction.

Links to the questions: “Bad Question”: - https://stackoverflow.com/questions/32423795/fill-some-methodes-in-linkedlist-in-c-sharp

“Good Question” - https://stackoverflow.com/questions/2003505/how-do-i-delete-a-git-branch-locally-and-remotely