Save the Embarrassment

25 Jan 2018

No matter what field you are in, there is no way for someone to know absolutely everything about anything. Programmers and software engineers are no exception to this. Sometimes, we get stumped on an error, and we stare at the same line of code for hours without making any progress. Sometimes, you are trying to set-up your environment, and it feels as if you have angered the programming gods. Sometimes, we get a little curious, and start researching and testing things out just for fun. In these situations, how do we get the answers we are looking for? By asking questions the smart way. This week in ICS 314, we are learning how to ask meaningful questions that, in return, get meaningful answers. We can turn to our classmates and co-workers, and they may be able to provide us with a solution to our problem; When they cannot provide a satisfactory answer, the numerous forums and mailing lists have communities with the knowledge to give some insight and suggestions that may lead us to the answer. In “How to Ask Questions the Smart Way”, the authors extensively explain what makes one question better than another.

What Makes a Question “Smart”?

In the article, the authors point out some very compelling strategies for asking good, smart questions. One important aspect to asking a good question is to make it informative rather than just asking for an answer. No body wants to waste their time solving someone else’s homework, or giving an answer to someone unwilling to learn or discuss their problem. By posing our problem in a way that is interesting and a learning-experience for all those involved, people are more willing to give an answer that may help us through our problems. Although we can be shy at times and just want answers to our questions, other people who stumble upon our old posts years after our problems have been solved may be having the same troubles that we were facing when we posted the question. This is not only a good reason as to why the post should be informative, but also why questions should be asked publicly for the everyone to see. Asking good questions is one way we can give back to the community, even if we cannot answer questions actively or directly. It prevents the need for the same people to answer the same questions repeatedly for different audiences. Smart questions also include details about your previous attempts to solve the problem and what the results were. Although this may seem like a no-brainer, may people fail to do this in their posts. These details prevent replies from suggesting things that you have already tried. Also, it helps the people trying to answer your question replicate your situation so that they can actively work through your problem.

How to Look Like a Fool

Among the thousands of questions that are posted on StackExchange, there are many examples of bad questions. For instance, “How do I fibonaci squence under 1000?”. The poster is needs help with code for a Fibonacci sequence. There are many things wrong with this post. First, the title has grammatical errors. Not only is Fibonacci spelt wrong, but the user is also missing words like a do between “How” and “I”. Additionally, the title is unclear as to what the user’s goal is. Is he trying to solve the the sequence for all numbers under 1000 or the first 1000 numbers. In the body of the post, he adds no more information about his problem other than his block of code and a “I’m so confused?? :(“. In the replies to the question, you can blatantly see that this is a bad question. They are asking if the poster even understands the Fibonacci sequence, and tell him to explain more. Additionally, creating a function that prints the Fibonacci sequence is a very common coding problem. There are probably other posts that have asked the same question, but in a way that was more clear and concise. This user simply decided to ignore everything that makes up a smart question.

Contributing to the Community

Here’s one smart question that received hundreds of thousands of views, thousands of upvotes, and more than just a handful of answers. The poster is not trying to solve a problem, per se, but is curious as to “Why is using ‘namespace std’ considered bad practice?” The title of this post is not super detailed like the examples that the article provides, but it does show technical knowledge such as the use of “std” namespace being bad practice. In the body of the post, the poster gives background as to why this question has arose and alternative questions that further advance this discussion. When you look at the replies, there are possibly hundreds of other users answering the questions, expanding on other replies, and giving examples. This question not only created a large-scale discussion about the topic, but also generated responses that future viewers will see and be able to comprehend the answers.

Don’t Be the Fool

Obviously, the same question can be asked many different ways, and the way we ask them changes what kind of answer we get back. Ask a bad question, and you may not get what you are looking for. Ask a smart question, and you may receive more insight than you expected. When asking questions on forums, discussions, and mailing lists, we are dealing with other people who are familiar with the problems, technology, and topics that are being asked about. There is not as much need for layman’s terms; get technical, discuss your problem, be informative. Whenever we start to struggle with bugs and errors, we quickly take to Google to search for the answer. When the answer is not what we were looking for or non-existent, that might mean that it is our turn to ask the questions. Just make sure to ask them the smart way.