Takes Smart Questions to Return Smart Answers

12 Sep 2019

The world of computer programing is one of problem solving. Whether they be big or small, simple or complex, so general they verge on abstract or so specific they require an extensive background knowledge to even comprehend; at the core of any programers’ trade is the ability to solve problems. Yet with hundreds of different programing languages each with their own unique set of advantages and disadvantages, use cases, abilities, and syntax that can be used for many different applications both literal and computer related, one must wonder how any one programer could get anything done without prior years of practice, experience, and study. The answer is of course, they do no such thing. Any programer worth their salt will tell you that they rely on the knowledge and skills of the collective programing community just as much as they do their own ability, often times even more. So if you plan on becoming a programer just know that you won’t get very far on your own, sooner rather than later you’ll have a question you need answered. However, not all questions are created equal, and if you want to get your questions answered at all, let alone quickly and with accurate, useful answers, you’ll need to understand how to communicate with the collective programing hive mind; you’ll need to learn how to ask smart questions.

What makes a Smart Question?

Smart Question example
Not-So-Smart Question example

Question Headers

Before even considering posting a question to a forum of choice, the first thing that should always be done is to search online for your exact question. Chances are someone else has already encountered your problem and someone else has answered it. One sure fire way of not getting a response at all is to ask a question that has already been answered. After searching for your question and finding no relevant answers, you’re ready to post your question, but how do you start? When other programers are browsing through a forum looking to do their good deed for the day and answer someone else’s question, the first thing they see at a glance is a questions’ header. Questions with headers that present a clear and concise problem are far more likely to be answered than headers that are unspecific. Taking a look at the Smart Question example, the header “Detecting that the browser has no mouse and is touch-only” clearly communicates that the poster wants their program to be able to tell if a user’s browser has no mouse and instead is being interacted with via touch screen. This gives enough information for someone potentially knowledgeable to already have an answer going through their head just waiting to be typed, thus making it a very easy question to answer. By contrast, the header from the Not-So-Smart Question example reads “What’s wrong with my button and the link isn’t working?”. This hardly communicates anything at all other than the poster’s button isn’t working. In what way? Nobody knows and nobody is going to put any more effort into finding out that the poster put in asking.

Problem description

So now you’ve caught the eye of an expert willing to help. The next step is to provide a more detailed description of the problem you have or context for the question you need answered. Your problem description should clearly and carefully build upon your header in communicating exactly what goal your program or code was trying to accomplish as well as in what way it deviated from that goal. Looking back at the Smart Question, we can see that the poster elaborated upon their header to give more information about their question including what type of environment their program will be running in as well as some failed solutions the poster attempted. This helps people reading the question get up to speed on where the poster is on solving the problem and avoids wasting time getting solutions they know will not work. Once again contrasting with the Not-So-Smart Question, their entire problem description verbatim is “It was working just fine but then…well… I don’t know what I did …”. The only thing this description provides is extra confusion. Just like the header, there was little to no effort put into the description, and anyone reading this would be insulted to think that this poster expected a serious answer.

The Code

The final thing you’ll want to make sure to include is the snippet of code relevant to your question or problem. Much like the problem description, the code snippet gives more information in the form of actual code any potential answerer could use and more importantly, pinpoints or at least narrows down the origin of the problem. One last glance at our Smart Question shows their code snippet with some functions that could potentially be used to solve the problem along with plenty of comments about the functions to help others understand what they do. Switching things up a little, the Not-So-Smart example actually does have relevant code. The poster clearly had some issue regarding their button and they have a code snippet with their HTML button element. If only anyone knew exactly what the problem with this button was, the code snippet would be very helpful in pinpointing the origin of the problem and exactly what to change in order to remedy it.

To The Forums

Hopefully now you can understand not only the importance of asking questions but the importance of asking smart questions when it comes to making it as a programer. If you’re still not convinced, however, the proof is in the pudding. Taking a quick look at the actual replies from the Smart Question, you’ll see an overwhelmingly positive response: the question itself received over 130 upvotes, making it more likely to be seen by even more people and had 24 responses. Of these responses, a majority had just as much detail, information, and thoughtfulness as the question post itself, complete with many different ideas, possible solutions, code snippets of their own design, and links to external resources that could be utilized. On the other hand, the Not-So-Smart Question has, quite frankly, the exact opposite reaction. the questions’ 15 downvotes is a big red flag for everyone to stay away, and a single actual answer could be found far below the lengthy “bad question” flag which cites the unusefulness of questions without a clear problem statement and desired behaviour in addition to a link for a guide on “how to ask a proper question”. Now that you know how to communicate effectively and efficiently with programers everywhere, it’s time to take your first step into successful career of programing and join a forum.