Getting Answers to Your Technical Questions
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.
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.
This means that if you can write 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.
Set a friendly tone and atmosphere so that the person with other stress in their life will not instantly skip your question because it looks like more of the same.
The title or subject is the first thing people will see of your question. If it is not descriptive and interesting, they will not read the rest. If you are struggling with a good title, write it last! Having written the rest of your question 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 question 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. One of the best predictors for the level of detail in a response to a question is the level of detail in the question.
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. Use it to 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 on mailing lists or forums. 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. Your "social credit account" is tied to a particular community. This means that you will have to make deposits to it in each community you want to take part in. It helps to have a high social credit in a related community but it is not enough.
Humans like other humans that are nice to interact with. Strangers and unpleasant people are less pleasant to interact with. It is as simple as that. One way to help is to make it easy for people to find things out about you. A good way to do this is to use the same identity in all communities and maintaining a place that has some background information or context on you.
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.
Things to do before asking
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 any of these things, 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 the 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:
- being seen to invest effort in simplifying the question makes it more likely you'll get an answer,
- simplifying the question makes it more likely you'll get a useful answer, and
- 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. Maybe offer to write it up for the official documentation of the project.
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:
- How To Ask Questions The Smart Way by Eric Raymond
- Writing the perfect question by Jon Skeet
- How do I ask a good question? on Stack Overflow