Ask Smarter, Not Harder

10 Sep 2020

How Do I Ask?

As a software engineering student, it is important to ask questions frequently. Whether the reason you’re asking the question is to better understand a concept or finding an error in your code that you can’t seem to get past. By asking these questions you can learn from others and you can have the opportunity of being provided insight to a solution from another person’s mind. However, asking a question that may not be well thought out can have the opposite effect, and you may not even get an answer. This is what I learned when I read the essay “How to Ask Questions the Smart Way” by Eric Steven Raymond. He covers how technical questions ought to be asked, and how to get the best answers and feedback from the tech community. Below are examples of what Raymond would consider a “smart” question, and an example of a “stupid” question

The Questions

Both of these questions that I provide below are questions found on StackOverflow, which is a website where developers can ask questions and other developers can leave their answers and provide advice. I’ll start with an example of a smart question first.

The Smart Way

The question asked was “Why is processing a sorted array faster than processing an unsorted array”? The user then went on to explain that while working in C++ he noticed that the time it took to process an array that was already sorted was significantly faster than the time it took to process an unsorted an array. He then proceeded to provide his code, although long, was very descriptive so that the reader can better understand the question. He also went on to explain his thought process of the possible reasons why the code could be running the way it was, stating that at first he thought that maybe the data was being placed into the cache, but determined that this was probably not the case.

Although this question is older and was asked a little over eight years ago, it still holds as a good example of what a smart question looks like. The question being asked was a great question to begin with, as it was challenging and thought out very well. He also showed that he tried to answer his own question as well, providing his thought process and his knowledge of coding. He even tried the code in Java to see if he got the same result so he could rule out the possibility that it might be some sort of problem with the C++ language.

By showing all of his effort and by showing his proof of troubleshooting the problem, he narrowed down the possibilities of what could be causing this processing anomaly, which is one of the points that Raymond made in his essay. The question also covers other points that Raymond made, including describing the symptoms of his issue, showing that he made an effort to solve the problem, and writing clearly so that the reader can understand the question, all of which are characteristics of a smart question. Since there was effort put in by the user asking the question, naturally there was effort reciprocated by the readers answering the question. The majority of the answers concluded that the issue was caused by Branch Prediction. The answers went into great detail explaining what branch prediction is, even pointing out which part of the user’s code could be causing the issue. With over 24,000 up-votes (meaning that the question showed effort and was clear), this question is a perfect example of a “smart” question under Raymond’s terms.

You can find the link to this post here.

Now for what Raymond would consider a “stupid” question.

The Wrong Way

This question asks, “How can I read from a website?”. The user goes into more detail with the question providing a screenshot of the desired digital output and stated that he is trying to make a bot. He also stated that he wants to replicate the display the screenshot provides because he is making a console application where if a certain condition is met, then a send key will be executed.

From the beginning, the question was not very descriptive and helpful to explain what the user asking the question is trying to achieve. As stated in Raymond’s writing, this probably caused readers to skip his question due to lack of interest and information. This question also was more of a demand to the readers rather than asking how to address the problem, and It’s fairly obvious the user didn’t put in any effort to try and resolve the issue. As expected, there were some harsh comments towards the post, as well as 19 downvotes at the time of this essay. Here is one of the comments made on the post by a user named Magus: ” If you have not tried to solve the problem, SO won’t either. We aren’t a living, breathing encyclopedia. If you need research, use Google.”

This is a perfect example of what not to do when asking a question. Asking a question that shows no effort put into solving it, while basically asking for an answer from readers as well, will get people upset. People will think “why should I answer your question? We aren’t an object that is readily available to answer all of your problems”. Despite the negative feedback from the community, there managed to be one short answer to this question which provided a brief explanation and a link, but nothing nearly as descriptive and helpful as the answers given from the smart post.

You can find the link to this question here.

Be Intelligent!

Reading Raymond’s essay was an eye-opening read that I think will be very beneficial for my future in software engineering. In this field things are always changing and there’s so much to learn, so it’s important to always ask questions if you don’t know the answers to them. But this doesn’t have to apply only for software engineering. It can be used to for any specialty a person decides to move towards. However, the effort needs to be put in to asking the question as well. Be crystal clear with what your goal for the question is, be polite, and make sure attempts to solve the issues were actually made before asking the question. Lastly make sure that if the issue falls on you that you own up to the mistake. Only then you will get reciprocated with a good answer. Until then, I believe that asking smarter questions will give you smarter answers.