Work Smarter, Not Harder

10 Sep 2024

A smart question, as described in Eric Steven Raymond’s essay entitled How to Ask Questions the Smart Way, is a question phrased in such a way that demonstrates respect and consideration for the responder’s time. In doing so, it is believed that you will be led to more efficient, effective, and respectful answers in return. When interacting with online forums or emailing lists to seek help from others, it is important to remember that many of the members in that community are offering their help voluntarily; thus, being able to ask questions in a smart way can be more beneficial for those answering the questions and be more helpful in receiving an answer from those asking. A smart question constitutes many factors, including but not limited to, using grammatically and correctly spelled language, showing courtesy in the way you phrase your question, being specific about your question, and putting in effort to show that you attempted to find a solution first, while an unsmart question is essentially the inverse. It is believed that a smart question will lead to smart answers, while an unsmart question may not provide the results the original poster was seeking out. In this essay, I will delve into a few examples I have found of both a smart and unsmart question and see how they compare between the way in which they were asked, and how well they were received by the community, which in this case is StackOverflow.

A Work in Progress

Let’s begin with an example of what can be constituted as a not so smart question. One user asks how they can send out 100,000 emails weekly using a library for PHP. A reason that this example could be viewed as a not smart question is due to the lack of research and effort the user attempted at solving this problem before asking. They did not share what they have attempted and report what worked versus what did not work. One could argue that they mention asking if there is a library for PHP that could make this possible, showing they might have done some research to consider a library as a possible solution. However, if the user wanted to make this question even smarter, they could specify which libraries they’ve tried to investigate to show an effort on their end was made to solve the problem. Another reason this question could be seen as a not smart question is because they are vague when addressing their concerns. One of the signs of a smart question includes being precise in what the issues are and what you want to find out. The user mentions that it is important that all the emails they send out need to be “…delivered, to the extent that is possible”. This statement does not provide a clear picture of what issue they are running into when it comes to having the emails be delivered to the full extent and what their definition of being fully delivered is. The lack of conciseness once again shows up their closing question of “Is there a library for PHP that makes this simpler?”. There are many ways that this problem could be simplified, and to be more specific in their question, they should ask if there is a PHP library that makes this problem simpler in a certain way which they specify. The lack of specification here also demonstrates not putting in effort to research the issue or attempting to solve the issue on their own.

Most of the answers mentioned that the user should outsource the emails to a company that specializes in this task, sometimes giving a specific company to reference. Aside from that, one responder mentioned that if they are certain they want to tackle this issue by themselves, they are in for a long road ahead. The responder then proceeds to list a mass number of issues the original poster will have to face if they decide to do anything other than outsourcing to another company. I would say that the question asked here was not the smartest question, yet was still able to elicit beneficial feedback, albeit, with a little sass from the responders. The fact that the user was able to get a helpful answer back shows that the question was not a total dud, however, the tone of the responders show that there is still room for improving this question to make it a truly smart question.

Start Smart

An example of a smart question comes from a user asking why processing a sorted array is faster than processing an unsorted array. The user inserts the piece of code they were working on when referring to this question and inserts it in a properly formatted way. The code is posted in a way that readers can copy and paste if they want to run it on their own, and the code is easy to distinguish from the other writing in the post. This organization demonstrated a mark of a smart question since it simplifies the reading for those who want to help. The poster reports that processing their array while sorted results in a significantly faster run time than when the array is unsorted, including the times they got when running the code. The inclusion of runtimes could be seen as the poster mentioning the ‘symptoms’ of the code which makes it easier for the hackers to diagnose what is happening. They then mention they try to investigate it more by rerunning the code in Java to see if they get a different result with a different language, once again providing the properly formatted code and their results. The poster provides what they think is wrong and a link to where they found the information which led them to believe this, showing that they did their own research and problem solving attempts prior to asking on StackOverflow. However, they recognize their theory must be incorrect and proceed to explain why, a trademark of smart questions according to Raymond. They conclude the post by asking the precise question of “Why is processing a sorted array faster than processing an unsorted array?” This question and the formatting leading up to it demonstrates the layout of a smart question, as identified by the effort and thought put into it before it was posted.

Since a smart question was asked, many smart answers were received. The top-voted answer begins by using a train analogy to explain the high-level thinking of the problem to the poster. They then proceed through the post by relating a snippet of code to the train analogy mentioned earlier. The responder flushes out their answer even more by including a visualization to the concept, steps the original poster can take if they want to further address the issue, and similar scenarios the responder ran on their own computer to further cement the concept and how it worked for them. That was just one response of many thorough explanations this one poster got. It is easy to see that the length, thoughtfulness, and thoroughness of the response reflects the quality of the original question, showing that both the question and answer exhibit smart characteristics.

Software and Smarts

Being a software engineer and computer scientist means being a learner and problem solver for as long as you stay in the field. There are times you may be faced with a problem you have solved a million times before, and others where you may be exposed to a new concept that feels completely alien to you. A benefit of the technology we have today is that communication of ideas and access to discussions are more accessible than ever. This includes being able to reach out for help and resources, which is the beauty of these online computer science communities, such as StackOverflow. Everyone who is a part of them can learn from and with each other. However, it is essential to note that this experience is not a scapegoat from problem solving and not a mechanism to hand off the work to someone else. It is important to demonstrate your own abilities and ambitions while learning and asking for help, so you are perceived as a learner who wants to better themselves. Smart questions are an easy way to distinguish between those who wish to grow versus those who want the easy answer and someone else to do the heavy lifting. To me, smart questions are essential for the software engineering community to uplift one another and improve the community.