How to overcome problems effectively

09 Sep 2021

Learning any new skill, or becoming a master at the craft, is always enjoyable, but can be quite intimidating (if it is unenjoyable, maybe it is not worth investing your precious time. However, take value in the things you have learned as these can help once you find something that is truly enjoyable to do). Along the way, questions about concepts that are difficult for one to comprehend are bound to arise. It is most common for people to ask someone more knowledgeable people to answer their questions, whether it be a private conversation or public question in a forum. However, before asking a question, one must be able to properly identify the problem. The people who look to answer questions can only help with information given to them, so the more information provided can help with reader comprehension of the issue to overcome. To identify the fundamental issues around the problem, one must take a step back and think about why they are having trouble understanding, or executing, the subject matter. There are various reasons for this, but the questioner must ask an effective question to receive an effective solution.

How to create an effective question

Ignorance is nothing to be ashamed of, as every expert had to start at the beginning, but lack of effort is something one must aim to avoid. Before asking a question to a group or person directly, one must try to find if the problem is a common issue among people learning the subject. Doing an online search, reading the FAQs (frequently asked questions), and reading a user manual or informational text on the subject are all great places to start when trying to solve a problem. Having someone directly explain the answer is great, but solving the problem without someone providing the answer is incredibly rewarding. This can also help to identify the root of the problem, and helps the respondent provide an effective and accurate answer.

If all known resources have been exhaustively searched to no avail, one should have sufficient information to formulate their question. When looking to forums to ask questions, one must identify the level of skills which the experts have, and the difficulty of the problem. If the problem is within the general level of other questions already established, take a little time to search keywords regarding your problem. The question you have may have not shown up in online searches, but it may have already been asked and answered in the forum. This can save both the questioner and responders time since the post must still be created, and the responders can help others with unique issues.

The title of the question is the most important component, as this is the first impression to others looking to help. The title should explain the subject matter, along with a brief description of the problem or error that occurs. Within the main body of the post, one should express the efforts already applied. This will help expedite an accurate response as the respondents will know what has not worked thus far. This will also show that, while one is still learning, the asker has applied effort into finding a solution prior to asking others for help. After explaining attempts at finding a solution to the problem, a thorough explanation of the issue should be stated. This explanation should provide background of the overall task, when or where the problem occurs, and the problem itself. If there is an end goal in mind, explain what it is, and what would follow if the problem is solved. This can both provide an effective solution, and may garner further help if the person creating a solution sees potential problems after the question at hand has been answered.

The full explanation of the problem should be comprehensive and easily reproducible. This helps both the responder understand the problem, and people in the future find solutions to their own problems. If the question is in regards to program code, a link to the full program, along with any programs implemented should be provided and easily accessible. If the program should remain private, a simplified program should be created that directly expresses the problem, or pseudocode that sufficiently exhibits the issue.

Examples from StackOverflow

Here are two examples, the first one showcases an effective question title with a detailed explanation of the problem, and what outcomes the developer expects, Javascript: deep walk/iterate through object keys. The second example is from someone who had a relatively sophisticated problem, but delivered it in a poor manner and only received one attempt at a solution, Timedelta is automatically converting to ‘days’, why?. In the first example, the developer asking the question states the end goal, to index a variety of JSON objects, and also provides the error which he gets with his current code. He continues with a simplified version of an object, and states the root of his problem, wanting to iterate through an object, and if the object contains nested objects, iterate through those parameters as well. There are two answers given, and both give a detailed answer to try and help the developer overcome his problem. The top answer even gives testable input and function calls to display the program functions as specified.

In the second example, the developer’s title does not describe the problem sufficiently, and leaves an impression that did not sit well with others. The developer first states the output expected, but does not state the process it is being used in, nor why the output should be expected. The developer injects a snippet of the code that functions differently than they expect, but it does not contain detail on the reason why the function exists nor the utility it is meant to have. There is one answer, however, the solution has no real description, and has a couple of flaws when converting the time. It takes the change over time and converts it to seconds, then assigns seconds to hours and “seconds % 3600” to minutes. The assignment to hours has no prior conversions, and this would allow minutes to contain “:60” which should become “1:00”. The low-effort question was met with a low-effort answer.

Conclusion

While the first example is not perfect, the question is enough to be thought provoking, spark discussion, and obtain well delivered answers with explanations. The second example may not be the worst in StackOverflow, but it contains little information as to what is being accomplished and the reason for it. As such, the given answer mirrors the question provided which is incomplete and lacks effort. Lastly, it should be understood that anyone who has an account can answer questions on StackOverflow, and even though an answer is posted, does not mean that answer is the most effective or efficient solution, nor that the answer is even correct. However, a suboptimal answer, or one that is incorrect, should not be ignored, as it may only be missing a small component which can be solved with critical thinking.