Eventually you will get stuck when trying to do something. This post is about how to get help with getting unstuck.
People love helping others. Below some tips on how to, in my experience, improve your chances of getting a good answer. The answers you get will depend very much on the way you ask your question. Most people like hard problems and thought-provoking questions. So give them an interesting question to chew on, and they will love it.
What are the hurdles to getting a good answer? People with knowledge and experience are in demand (a nice way of saying they are super busy). Everyone has at least some of: a family, hobbies, friends, pets, caring responsibility, stress at work, a commute, too many emails.
If you can make your question so that it can be answered from a mobile phone you are winning. Suddenly the person standing on the train home can read and reply to your question instead of the alternative scenario of reading it, thinking “need to do some research when I get home”, and then never replying because life intervened. If you can set a friendly tone and atmosphere the person stressed by other things in life taking a quick break will not instantly skip your question because it looks like more of the same. And so on.
The title/subject is the first thing people will see of your question. If it is not interesting, they will not read the rest. If you are struggling with a good title, write it last! Having written the rest of your post will give you a better idea of what the one sentence summary is.
Grammar and spelling. This is a no brainer. You want to make the impression of being someone who made an effort and values other people’s time. If you aren’t comfortable with writing in English, ask a friend to proof-read your email for you.
Mailing lists, forums, issue trackers, etc have a reputation for a hostile tone and an air of arrogance. In my experience people are hostile towards people who seem unwilling to think for themselves, don’t give back to the community or did not do their homework before asking their question. This hostility almost never manifests in rude words. In most cases it manifests through a lack of responses or responses with some details missing.
Questions asked with minimal context, some details but others missing or left for the question answerer to work out are more likely to get responses that have minimal context, some details in them but others missing or left out for the question asker to work out. This is to say that if you ask a question you have the unfair advantage of being able to set the tone and level of the conversation that ensues. You can set a high standard and a friendly tone.
Remember people are volunteering their time to help you. They have busy lives and there are a lot of questions. So they filter ruthlessly. Their goal is to get their inbox empty for the weekend, if your thread can be dealt with by classing it as “that annoying person who never even googles before asking” guess what people will do. Make sure your question is the most interesting one out there, and people will choose to help you.
No money is exchanged in this forum. However there is a different form of credit exchanged: Social credit. This is great because you can increase your social credit by helping others, asking good questions, contributing documentation, etc. However it also means you can reduce your credit with your actions or lack of action. Humans like other humans that are nice to interact with. Strangers and unpleasant people are less pleasant to interact with.
It is OK that you are not a technical subject matter expert. What you need to show is that you have the skills to become more competent: alert, thoughtful, observant, willing to be an active partner in developing a solution.
Before posting your question try:
- Searching the archives of the forum/mailing list/github issues
- Searching the web
- Finding the answer in a FAQ
- Finding the answer by experimenting
- Asking a skilled friend
- Or reading the code
When asking your question, mention which of these steps you have tried. It will help demonstrate that you are not lazy and put in some effort. If you learned something from trying this, mention it!
The beginning of your post should explain what you are trying to do and why, as well as where the problem occurs. Often it is useful to describe the big goal, and not just the particular step you are stuck with. This helps avoid https://en.wikipedia.org/wiki/XY_problem.
Help others reproduce your problem by including the necessary details. If the problem is with code you wrote, include it. However do not post “everything”. Try and make a minimal example that demonstrates the problem. Stack Overflow has a good guide on creating a minimal, complete, and verifiable example.
You have to be precise. Do not simply dump all possible information that might be relevant. Vague questions receive vague answers. Being precise is useful for at least three reasons. One: being seen to invest effort in simplifying the question makes it more likely you’ll get an answer, Two: simplifying the question makes it more likely you’ll get a useful answer. Three: In the process of refining your bug report, you may develop a fix or workaround yourself.
When people post replies or questions about your problem, follow them up. If you manage to solve your problem, tell the forum/mailing list/issue tracker. People from the future will love you for it.
Once the problem is solved post a final message saying that the problem is
solved and what the solution is or mark the answer which solved it as the answer.
Thanks for reading all the way to the end of this very long opinion piece!
A lot of the material in this topic was taken from the following, excellent
guides to asking good questions: