On various Q & A sites and forums related to development, I spent more time than I would like to admit. There I answered thousands of questions. As a rule, questions remain within the boundaries of such forums. But after the questions started pouring into my personal inbox, I thought I should write about it.
These emails and messages usually come from people I have never communicated with before - they all just know that I "answer questions or solve problems." It usually looks something like this:
- I wrote a question on the link {here}. Could you fix the error?
- Hi, please help here {link}.
- I have a serious homework with a deadline today at 5 pm, and I can not cope with it. Could you download it here {link} and make it work by that time?
These are full texts of real emails that I often receive.
')
I have nothing against people asking for help, that's why I participate in question and answer communities. The fact is that there are many wrong ways to ask for help, in particular - bad questions.
Here I will point out several reasons why such direct requests remain unanswered, write how to act to get an answer to a question, and present several steps that you must take before sending the question so that it does not turn out to be bad.
How to get answers
There are
many unanswered questions in various forums and sites such as Stack Overflow. The main reason: most of these questions are just bad.
If you wish to ask a question, try to go through the list below, so that your question does not go into an irresponsible oblivion:
- Did you google your question? Seriously. Just copy the exact message about your mistake and spend a few minutes reading the results of the issue. This will solve 90% + of all problems you face.
- Good, Google did not help. What's next? I do not believe you. Look for more, try to change some of the search terms and delete everything specific to your particular case (for example, the name of the project, etc.).
- Maybe ask a colleague? If you work in a team, ask for help. Two heads are often better than one, and usually finding the answer by sitting next to someone is easier than using the Internet.
- No colleagues? How about a duckling? I know that this may seem silly, but often the duckling method helps to look at problems from the side or even solve them. Just try to voice exactly your problem to someone (or something) and see if something clicks in you. I know it sounds silly, but you wonder how effective the result can be.
- Consider testing at niche points. If applicable, consider testing the GitHub repository for a specific problem or issue. Or use the search function on some “niche” forums or websites (for example, “sending email to MVC” on ASP.NET forums). By the way, these sites may not be indexed, so they are more difficult to find in the search engine results.
- Still, nothing. What to do? If you are still unlucky, then it’s probably time to ask a question somewhere. Again - most likely, a similar problem was solved before you, but you will find it only later.
How to ask a (correct) question
So, you have viewed the entire Network. You have completed countless searches for each combination of search terms and synonyms that you can imagine, and still nothing.
Perhaps it is time to ask a question. Let's look at a few things you need to remember in this process:
- The headline is everything! The descriptive and informative title of your question is of utmost importance. The header should convey the main problem (for example, “Null Reference Exception in ASP.NET Telerik GridView when paginated” instead of “Help! GridView does not work”). If your headline is sufficiently descriptive, then it will be read, and the more people read it, the more chances to get an answer.
- Do not throw the net too wide. No need to describe your entire application and its general purpose. Keep it simple and focus on just one problem or one use case. The higher the focus, the higher the likelihood that you will get results.
- More specifically. Be as specific as you can. Do not simply say, "something does not work." Specify exactly what you are trying to accomplish, what you have tried and what results you expect to get.
- ... But not too much. Although it is important to include details, do not overdo it. No need to insert huge chunks of HTML, CSS, Javascript, SQL and other code, scrolling through which you can earn carpal tunnel syndrome - this is scaring. Again - briefly and only the necessary details.
- Do not guess with errors. If your question is related to errors, try to include the exact error message from the system, and not use: "It seems that something happened or output it." Specificity matters; sometimes a compilation error and a runtime error are things that are completely different, so let your possible readers know what happens when.
- Is it reproduced? Then reproduce the problem. If your problem can be easily reproduced and, importantly, share it, then try to do it. Either briefly explain the steps necessary to reveal the problem, or consider using an online code exchange tool. For example, try JSBin or Stack Overflow snippets to create an example similar to yours.
- Read your question - twice. Before pressing the submit button, most likely, green, read the question. Then read it again. If something looks wrong or wrong, try redoing it. Basically, focus on determining whether your question is understandable, and remember that it should be understandable for a completely unfamiliar person.
- All the steps behind, and the problem is there? Then ask your question and hope for the best. As you discuss your problem, you will quickly find out that it was you who explained well, which is not enough; just follow the answers and edit as necessary.
Spent a few hours, constantly updating the screen, and still nothing? If you have a fast approaching deadline, then you can come to the realization that the focus is in the next section: your problem is not their problem.
Your problem is not my problem.
I know it may sound rude, but the way it is.
Too often, questions and requests are replete with urgency: the deadline is in a few hours, the project must be handed over in the near future, etc. No matter how much I want to help you, but there are just too few hours in a day. I have my own deadlines and projects. And I also have a life outside of development, which I value most in the world.
Avoid any expressions related to urgency in your questions, such as “HELP!”, “URGENT” or any other phrases that correspond to this regular expression: [A-Z-!]+
.
Perhaps the educational system has taught you that postponing “for later” is a terrible affair. The same is true in programming. That is why a timely start of work can give enough time to solve any serious problems that you will encounter (independently or with outside help).
This lesson should be learned by everyone at a certain moment: haste, as a rule, does not speed up the solution of the problem. Ask a distinct question for an adequate amount of time and place it in the appropriate section so that the reader has time to familiarize with the question and answer it.
Be professional (not dumb)
Deadline and urgency can cause serious stress. Anyone who has professionally developed software knows that the statement above is a big understatement.
However, stress is no excuse for acting like a dumbass. I saw nemeryanno questioning, simply destroying the one who tried to help. The cry "it did not work" in capital letters or "this is a stupid answer" will not bring you any advantages and, of course, will not entice anyone on the battlefield to help a stranger.
Remember that helping people do this completely voluntarily. They spend their time and energy to help you overcome a difficult situation. Do not forget about this when you are going to switch to the upper case keyboard in the answer.
People spend their time to answer your question, receiving only a few dubious Internet points, so just keep this in mind during the whole process.
It is especially bad when the questioner finds someone's email address and decides to storm people directly instead of asking on the forums.
(Too) personal communication
I’ll say to begin with: I don’t mind emails when someone needs help. I will gladly tear myself away from my affairs and write to you if you address - but politely.
Most often I send links to already published questions on the forums or Stack Overflow. Usually, when I click on the link, the solution is already there. If not, I will take some time and try to help if I can.
There is another family of letters to which answers are not so pleasant and which rarely deserve an answer. This is because they do not follow any of the rules that I formulated above.
The situation is a bit different when you contact someone directly. Some approaches remain the same, but here are their own key points:
- Once again - what did you do? If I don’t see any hints from you on trying to solve my problem, then I also don’t see any reason to solve it (see above “Your problem is not my problem”).
- Is that the man? Make sure that the one you contact is able to help you.
- Do not be angry. Facing a problem can be discouraging, believe me, I understand that. The difficulty arises when you decide to give yourself a way out by sending me an email, as if I'm the person who created the problem. So it is very easy not to get an answer.
- Be patient. As in the case of the forum, if you send me a question, I will not stop all my affairs to answer it. When I get a chance to take a look at it, I’ll do it - but please, don't get my email updated every five minutes with updates.
I don't want to discourage anyone from asking for help directly. But please make sure that you have sufficiently exhausted other resources first. I absolutely do not want to read another letter "why jQuery does not work."
Results
Hope this post doesn't look like grumbling about your questions. I also do not want anyone to think that it is specifically about him. This post is just about some actions that will help not to ask bad questions, which, in turn, will lead to bad answers or their absence.
Resource is one of the most important abilities of a developer. If a developer can find answers and solve problems on his own, then most likely, he will spend more time on completing tasks, rather than thinking why they are not obtained.
If you encounter a problem that is not again and again in the search engine, and the solution continues to elude you, then you should ask a question. Just make sure you have thought it over and really tried to make your question worth answering.
And it is better that the question is not "why jQuery does not work."