I get and send bad questions. To avoid this, I write my questions in my editor, review and then copy them to the platform e.g. slack, email. My questions are better, which makes me wonder if there are other changes that could further improve my questions.
A lot of great resources exist online, and here's a checklist I've made for my questions.
Before I consider asking a question, ask:
- What do I want? Avoid thinking that the solution in mind is the problem. I can tack on the failed solution to the question if need be. This prevents the XY problem when I'm making the question.
- Am I forcing my experience, knowledge or the technology I know to the problem (i.e. einstellung?
- Spend time making the question before reaching out to someone. This prevents sending a hello with no context, since I have the question to add after the greeting.
- Do my research, and note down all the findings I've got. This helps when adding details to the question.
For example, I built an image on a server, but failed severally because the server ran out of memory. I spent a lot of time trying to figure out how to limit docker memory, but this wasn't the goal. Following the above process could have helped.
- What did I want? I wanted a custom image on the server.
- Am I forcing the technology I know or the solution I've thought out? Yes I was. The server ran out of memory severally and I tried to find ways to limit the memory while building the image. I didn't even stop to consider that there would be another option to get this image in.
- Spend time making the question before reaching out to someone. At this point I realized that I was solving the wrong problem, and decided to find other options for what I wanted.
- Do my research and note down all findings. While researching the original problem, I found that I can load up a locally build image to a server by using docker load, which solve the problem, hence no need to ask.
Once I've done the above and the problem persists, I make and refine the question by:
- Having meaningful subject headers.
- Starting with the goal, then the steps I've taken, hence I ensure others will know if my steps were wrong or if there were other options I didn't consider.
- Editing the question to be short but informative. I can include:
- the environment this occurred (if relevant)
- the symptoms in chronological order
- the research done
- a way to reproduce the error (if possible).
- screenshots if its a UI bug
- Trimming down code snippets and test cases to the smallest bug-demonstrating version.
- Avoiding open-ended questions by being explicit in what I want. The less effort my request needs the likelier I'll get a response e.g. 'Can someone explain X?' forces someone to create a detailed explanation while 'Can someone provide a pointer to a good explanation of X' means they only send you to a relevant blog post.
- Writing in clear, grammatical and well spelled language.
- Avoiding yes or no questions.
Once you have the question, then:
- Look for a relevant public channel. Avoid private ones or personal messages since public ones ensure more people see the question and learn from it.
- Follow up with a brief note on the solution to the thread. Upvote helpful answers and accept any that solved the problem.
- Don't ask questions in ongoing threads since those not following the thread will not see it.
- Be courteous, use please and 'thanks for your attention', etc.