The Art of Asking Questions & Efficient Question Guide (Combined Edition)
This article is based on "The Art of Asking Questions (MaiMai Simplified Version)", "How to Ask Questions Efficiently", and "How to Avoid Yes/No Questions". It aims to provide you with comprehensive, practical guidance on asking questions.
At the Very Beginning
Throughout your question-asking process, please include your screenshots or logs, and they must be complete. This will help you get answers faster.
Declaration & Introduction
This guide was organized by AI based on the ryanhanwu/How-To-Ask-Questions-The-Smart-Way project.
"The Art of Asking Questions" doesn't directly provide solutions to practical problems, but it tells you how to solve problems and how to ask others for help when you can't solve them yourself. After all, it's better to teach someone to fish than to give them a fish.
Why Learn How to Ask Questions?
Thanks to the development of search engines and the activity of various communities and platforms, we can get good answers or solutions from other experts, which is a good thing. Generally speaking, most people are willing to show some tolerance towards beginners, but this tolerance doesn't mean unconditional, limitless help. After all, they're not your family.
Even family members, like those ubiquitous short videos showing "red-faced" scenes of teaching sons/daughters/younger siblings elementary school math, might be somewhat exaggerated, but the rising blood pressure is real.
Before Asking
Before you prepare to ask a question, please do the following:
- Try searching on the platform where you plan to ask to find an answer.
- Try using search engines to find an answer.
- Try reading official manuals, platforms, or customer service to find an answer.
- Try reading the FAQ (Frequently Asked Questions) to find an answer.
- Try checking or experimenting yourself to find an answer.
- Ask friends around you to find an answer.
It's unrealistic to expect others to spend time solving your problems when you're unwilling to spend time solving them yourself. So when asking questions, first indicate that you've made the above efforts. This shows you're not someone who expects something for nothing and wastes others' time. It's even better if you can explain what you learned during your efforts, because people often help those who can learn from answers.
Using certain strategies, like first searching for various error messages you encounter with a search engine, might directly lead to clues for solving the problem. Even if not, it's good to add "I searched the following phrases in search engines but didn't find anything useful" when asking questions, even if it just shows what search engines can't help with. Doing this (including the searched phrases) also helps others with similar problems find your question through search engines.
Don't rush, don't expect a few seconds of search engine searching to solve a complex problem. Before asking for help, read the FAQ again, relax, sit comfortably, and spend some time thinking about the problem. They can tell from your question how much reading and thinking you've done. If you're well-prepared, you're more likely to get a solution. Don't throw out all your questions at once just because one search didn't find an answer (or found too many answers) (those familiar with "TL;DR" series should understand this deeply).
Prepare your question, then think it through carefully, because hasty questions only get hasty answers, or no answers at all. The more you show the effort you put into solving the problem before seeking help, the more likely you are to get substantial help.
Never assume you deserve an answer, after all, you haven't paid for this service. Instead, you need to earn an answer by asking meaningful, interesting, thought-provoking questions—questions that have the potential to contribute to community experience, not just passively take knowledge from others.
On the other hand, showing you're willing to do something in the process of finding an answer is a very good start. "Can someone give a hint?", "What's missing in my example?", and "What should I check?" are more likely to get responses than "Please post the exact process I need." Because you show that as long as someone points you in the right direction, you have the ability and determination to complete it.
When Asking
Remove Meaningless Question Phrases
Avoid ending questions with meaningless phrases like "Can someone help me?" or "Is there an answer?".
- If your problem description isn't good, asking this is even more redundant.
- This annoys them, and they usually respond with logically correct but meaningless answers to show contempt, like: "Yes, someone can help you" or "No, there's no answer."
- Generally, avoid "yes or no", "right or wrong", "have or don't have" type questions, unless you really only need a yes or no answer.
Only Ask Yes/No Questions When You Want "Yes" or "No" as Answers
You're reading this section because you asked questions in the following forms:
- Does anyone know...?
- Can someone...?
- Is it possible that...?
And then were surprised to receive logical "yes" or "no" answers. This is a common response to such surprise.
Questioning Advice
Only ask questions that can be answered with "yes" or "no" when you want "yes" or "no" as answers. If you don't want "yes/no" as answers, then you should ask a different question.
- Don't ask "Does anyone know...?" questions unless you really want to know if anyone knows.
- Don't ask "Can someone...?" questions unless you really want to know if someone can.
If you want to know something else, ask the question you really want answered.
Why are "Does anyone know...?", "Can someone...?" etc. questions bad?
The answers to such questions can often only be "yes" or "no", which doesn't help you get actual information or solutions. For example:
- The answer to "Does anyone know where there are good restaurants nearby?" might just be "Someone knows" or "No one knows", but you don't get specific restaurant recommendations.
- The answer to "Can someone help me fix my computer?" might just be "Someone can" or "No one can", but you don't get computer repair methods or suggestions.
- The answer to "Does anyone know how to apply for a passport?" might just be "Someone knows" or "No one knows", but you don't get specific application procedures.
This questioning method forces respondents to give meaningless affirmations or negations, doesn't directly help you solve practical problems, and doesn't help others understand your real needs.
Examples
Here are some examples close to daily life:
- Don't ask: "Does anyone know where there are good restaurants nearby?"
Better: "Please recommend some good restaurants nearby?" - Don't ask: "Can someone help me fix my computer?"
Better: "My computer won't turn on, the specific situation is XXXX, what should I do?" - Don't ask: "Does anyone know how to apply for a passport?"
Better: "What materials and procedures are needed to apply for a passport?"
This makes it easier for others to understand your needs and give useful answers.
Describe the Problem, Not Your Guesses
Telling them what you think caused the problem isn't helpful. If your inference is so effective, why ask others for help?
Make sure they see something as consistent as possible with the symptoms you see, let them speculate and diagnose, not your explanations and theories.
- If you think stating your guesses is important, clearly indicate they're just your guesses, and describe why they don't work.
Clearly Express Your Needs
Vague questions are endless time black holes.
If professional skills can be imagined as abundant resources, then response time is a scarce resource. The less time you ask them to devote, the more likely you are to get answers from truly professional and busy people.
- Clearly stating what you need them to do (like providing guidance, sending a piece of code, checking your patch, etc.) is most likely to get useful answers.
- This sets an upper limit on time and effort, making it easier for them to focus on helping you.
Technique:
Define your problem to minimize the time they spend identifying your problem and answering, which is very helpful for getting useful answers.
For example: "I want to better understand X, could you point me to better documentation?" is usually better than "Can you explain X?"
If your program doesn't work, "Please help me see what's wrong" is wiser than "Please fix it for me."
Describe Goals, Not Processes
If you want to figure out how to do something, describe your goal at the beginning, then state the specific steps where you're stuck.
Sometimes your problem is caused by taking the wrong path or using the wrong tool.
About Attitude
Humility Doesn't Replace Your Question
Some people understand they shouldn't ask questions rudely or arrogantly and demand answers, but they choose the other extreme—humility: "I know I'm just a pathetic newbie, a loser, but..."
This is both annoying and useless, especially when accompanied by vague descriptions of actual problems.
Don't waste your and my time with primitive primate tricks. Instead, describe the background conditions and your problem situation as clearly as possible. This better positions you than humility. Sometimes web forums have special sections for beginner questions. If you really think you have a beginner's problem, go there, but still don't be so humble.
Politeness Never Hurts, and Sometimes Helps
Be polite, use "please" and "thank you for your attention" or "thank you for your concern." Let everyone know you appreciate them taking time to provide free help.
Frankly, this isn't more important than using clear, correct, precise, grammatical language and avoiding proprietary formats (nor can it replace them). They'd generally rather read somewhat abrupt but technically clear bug reports than polite but vague ones. (If this puzzles you, remember they evaluate questions by what they can teach them.)
However, if you have a series of problems to solve, politeness will definitely increase your chances of getting useful responses. Also, starting with "Thanks in advance" implies you don't need to thank anyone afterwards. Our suggestion is to either say "Thanks in advance" first, then thank respondents afterwards, or express gratitude differently, like with "Thank you for your attention" or "Thank you for your concern."
About Titles (Forums)
Clear and Meaningful Title Descriptions
Titles or problem descriptions within about 50 words are good opportunities to catch their attention.
Don't waste this opportunity with "Help please", "Begging on my knees", "Urgent" (let alone annoying phrases like "HELP!!!!").
Don't try to move them with your level of suffering. Instead, use extremely simple, concise descriptions in this space.
Good title examples use "Goal — Difference" descriptions:
- The goal part indicates which thing or group of things has a problem
- The difference part describes what's inconsistent with expected behavior
Stupid Question:
Help! My laptop display isn't working properly!
Smart Question:
X.org 6.8.1 mouse pointer deforms, Brand X graphics card MV1005 chipset.
Even Smarter Question:
X.org 6.8.1 mouse pointer, under Brand X graphics card MV1005 chipset environment - deforms.
The process of writing "Goal — Difference" descriptions helps you think carefully about the problem.
What's affected? Just the mouse pointer or other graphics too? Only appears in X.org's X version? Or only in version 6.8.1? Specific to Brand X graphics card chipset? Or just the MV1005 model?
In summary, imagine you're searching in a platform that only displays titles. Using titles that reflect specific problems helps people with similar problems notice the question instead of asking again. Perhaps one of your problems will also be solved by others' approaches.
Even If You're in a Hurry, Don't Write "Urgent" in the Title
This is your problem, not theirs.
Claiming "urgent" is very likely to backfire: most people directly delete rude and selfish attempts to get immediate attention. More seriously, the word "urgent" (or other attention-seeking titles) is usually filtered by spam filters—people you hope will see your question might never see it.
There's a half-exception: if you're in some high-profile place that would excite them, it might be worth doing. In this case, if you have time pressure, mention it politely, and people might be interested in answering faster.
Of course, this is risky because what excites them might differ from what excites you. For example, posting such a title from NASA's International Space Station is fine, but posting with self-satisfied charitable behavior or political reasons definitely isn't. In fact, posting something like "URGENT: Help me save this furry little seal!" will definitely get you ignored or annoyed by hackers, even if they think furry little seals are important.
If you find this incredible, better read the rest of this guide several more times until you understand it before posting.
About Questions
How to Precisely Describe Problems
- Carefully, clearly describe your problem.
- Describe the environment where the problem occurs (like machine configuration, operating system, application, and related information), and provide software distribution and version numbers (like: QQ 11, Slackware 9.1, etc.).
- Explain how you researched and understood this problem before asking.
- Explain diagnostic steps taken to identify the problem before asking.
- Describe recent hardware or software changes that might be relevant.
- Provide a method to reproduce the problem in a controlled environment as much as possible.
- Try to anticipate what might be asked back, and answer possible questions in advance before asking.
Tip:
When problems involve code, a reproducible environment is especially important. This greatly improves your chances and speed of getting effective answers.
Recommended Reading:
Simon Tatham's "How to Report Bugs Effectively" is an excellent article, strongly recommended for you to read too.
Summarize Problem Information to Some Extent (If Any)
You need to provide precise and substantive information. This doesn't mean simply pasting all error codes or error messages. If there's a lot of output information, try to trim it as small as possible.
This has three benefits:
- Shows you made efforts to simplify the problem, increasing your chances of getting answers;
- Simplifying problems makes you more likely to get useful answers;
- In the process of refining your bug report, you might find solutions or workarounds yourself.
List Problems and Related Symptoms in Chronological Order (If Any)
The series of operations before a problem occurs is often the most helpful clue for finding the problem. Your description should include operation steps, and machine and software responses, until the problem occurs.
- For command-line processing, providing an operation log (like generated by running script tools), and referencing relevant lines (like 20 lines) of records is very helpful.
- If the program has diagnostic options (like
-vverbose switch), try selecting options that add debugging information to records. Remember, more isn't better; choose appropriate debugging levels to provide useful information rather than drowning readers in garbage. - If your description is long (like over four paragraphs), summarizing the problem at the beginning, then detailing chronologically helps, so they know what to pay attention to when reading your records.
Screenshots and Logs
When encountering errors or problems, screenshots are most intuitive. Screenshots should be clear, complete, especially the last line of errors. Don't use phone photos of screens, use computer screenshots directly.
Screenshot Tutorial
- Windows system official screenshot key—Shift+Win+S
- QQ screenshot shortcut Ctrl+Alt+A, screen recording shortcut Ctrl+Alt+S
- After taking a screenshot, you can directly paste the screenshot into the chat bar and send it
- Ensure screenshots are clear and complete, better to capture too much than too little
- The bottom line of errors is the most important line, don't neglect the essential
- Please don't use phone photos of screens, protect others' eyes
- If operating on a remote desktop, you can minimize the remote desktop window and use your local computer's screenshot method
If You Don't Get Answers
If you still don't get answers, don't assume they think they can't help you. Sometimes people who see your question just don't know the answer. No response doesn't mean you're ignored, although admittedly this distinction is hard to make.
Overall, simply reposting questions is a very bad idea. This is seen as meaningless noise. Be patient; people who know your answer might live in different time zones, might be sleeping, or your question might not have been well-organized from the start.
You can get help through other channels, which are often more suitable for beginners' needs.
- There are many online and local user groups composed of enthusiastic software enthusiasts (even if they might never have written any software themselves). People usually form such groups to help each other and help beginners.
- Additionally, you can seek help from many commercial companies, whether large or small. Don't be frustrated about having to pay for help! After all, if your car engine cylinder seal bursts—entirely possible—you still have to take it to a repair shop and pay for repairs. Even if software didn't cost you a penny, you can't demand technical support is always free.
For popular software like Linux, each developer corresponds to at least tens of thousands of users. It's impossible for one person to handle help calls from tens of thousands of users. Know that even if you pay for this assistance, what you pay is negligible compared to similar software you purchase (usually closed-source software technical support costs are much higher than open-source software, and content isn't as rich).
How to Interpret Answers
RTFM and STFW: How to Know You've Completely Messed Up
There's an ancient and sacred tradition: if you receive an RTFM (Read The Fucking Manual) response, it means the respondent thinks you should read the fucking manual. Of course, basically they're right, you should read it.
RTFM has a young relative: STFW (Search The Fucking Web). If you receive an STFW response, it means the other person thinks you should fucking search the web. That person is probably right too, go search. (A gentler version is Bing is your friend!)
In forums, you might also be asked to browse old posts. In fact, someone might even kindly provide previous discussion threads that solved this problem. But don't rely on this consideration; you should search old posts before asking.
Usually, people who respond with one of these two phrases will give you a manual containing what you need or a URL, and they're reading it while typing these words. These responses mean the respondent thinks:
- The information you need is very easy to obtain;
- You'll learn more by searching for this information yourself than by being told directly.
You shouldn't be upset about this; by expert standards, they've shown you a certain level of attention rather than ignoring your request.
If You Still Don't Understand
If you don't understand a response, don't immediately ask for explanation. Like when you tried to solve problems yourself before (using manuals, FAQ, internet, experts around you), first try to understand their response. If you really need explanation, remember to show you've learned something from it.
Examples:
Bad follow-up:
What is zentry?
Better follow-up:
Oh~~~ I read the documentation but only the -z and -p parameters mention zentries, and neither clearly explains how to clear it. Do you mean one of these two? Or did I miss something?
Handling Rude Responses
Some seemingly rude behavior might not be intentionally offensive. Instead, it's a straightforward, to-the-point communication style that focuses more on solving problems than making people feel comfortable but vague.
If you feel offended, try to react calmly. If someone really does something outrageous, someone will probably call them out. If this doesn't happen and you get angry, then the language of the person you're angry at might seem normal in the community, and you'll be seen as the wrong party, which will hurt your chances of getting information or help.
On the other hand, you occasionally encounter truly rude and boring behavior. Contrary to the above, it's acceptable to strike hard against real offenders, refuting them thoroughly with sharp language. However, be very, very sure before acting. Correcting rude remarks is only a thin line away from starting a meaningless flame war, and they themselves recklessly cross this line not infrequently. Don't get involved in flame wars, it's best to ignore most flame wars—of course, this is after you verify they're just flame wars and don't point out where you messed up, nor cleverly hide the real answer to the problem behind them (which is also possible). If you're a beginner or outsider, your chances of avoiding this recklessness aren't high. If what you want is information, not killing time, it's best not to risk putting your hands on the keyboard at this time.
How to Better Answer Questions
Be a Bit Kinder
Problem pressure often makes people seem rude or stupid, which they're actually not.
Reply Privately to First-time Offenders
There's no need to publicly humiliate those who admit mistakes honestly. A true beginner might not even know how to search or where to find FAQs.
If You're Not Sure, Say So!
An authoritative-sounding wrong answer is worse than none. Don't give wrong directions just because it's fun to sound like an expert. Be humble and honest, set a good example for questioners and peers.
If You Can't Help, Don't Hinder
Don't joke about actual steps; that might ruin the questioner's setup—some poor fool will take it as real instructions.
Tentative Counter-questions to Elicit More Details
If you do it well, questioners can learn something—you can too. Try turning stupid questions into good questions. Don't forget they were all beginners once.
Provide Documentation or Search Suggestions
Although complaining RTFM to lazy people is justified, providing documentation links (even just suggesting Google search keywords) is better.
If You Decide to Answer, Give Good Answers
When others are using wrong tools or methods, don't suggest clumsy workarounds; recommend better tools, redefine the problem.
Answer Questions Positively!
If the questioner has already researched deeply and shown they've tried X, Y, Z, A, B, C but got no results, answering "Try A or B" or "Try X, Y, Z, A, B, C with a link" is useless.
Help Your Community Learn from Questions
When answering a good question, ask yourself "How to modify related documents or FAQ to avoid answering the same question again?", then send a patch to document maintainers.
Show Your Skills, Don't Just Serve Results
If you answer after some research, show your skills rather than just giving results. After all, it's better to teach someone to fish than to give them a fish.
Good Questions and Stupid Questions
Finally, through some examples, illustrate how to ask questions smartly. Two ways of asking the same question are placed together, one stupid, the other wise.
Stupid Question:
Where can I find information about Foonly Flurbamatic?
This question just wants an STFW response.
Smart Question:
I searched Google for "Foonly Flurbamatic 2600" but didn't find useful results. Who knows where to find programming information for this device?
This question has already STFW'd, looks like they really have trouble.
Stupid Question:
Source code I got from the foo project won't compile. Why is it so bad?
They think it's all others' fault, this arrogant questioner.
Smart Question:
Foo project code won't compile under Nulix 6.2. I read the FAQ, but it doesn't mention Nulix-related issues. Here's my compilation process record, what am I doing wrong?
The questioner specified the environment, read the FAQ, listed errors, and didn't blame others. Their question deserves attention.
Stupid Question:
My motherboard has problems, who can help me?
A hacker's typical response to such questions is: "Okay, do you also need back patting and diaper changing?", then press delete.
Smart Question:
I tried X, Y, and Z on S2464 motherboard but nothing worked. I also tried A, B, and C. Note the strange phenomenon when I tried C. Obviously florbish is grommicking, but results are unexpected. What usually causes grommicking on Athlon MP motherboards? Does anyone know what tests I should do next to find the problem?
This guy, from another perspective, deserves answering. He demonstrated problem-solving ability, not waiting for answers to fall from the sky.
In the last question, note the subtle but important difference between "tell me the answer" and "give me enlightenment, point out what diagnostic work I should still do."
In fact, the latter question originated from a real question on the Linux kernel mailing list (lkml) in August 2001. I (Eric) was the one who asked that question. I observed this unexplainable locking phenomenon on Tyan S2464 motherboard, and list members provided important information to solve this problem.
Through my questioning method, I gave others something to chew on; I managed to make it easy for people to participate and get drawn in. I showed I had ability equal to theirs, and invited them to explore with me. By telling them the detours I took to avoid them wasting time, I also showed respect for their valuable time.
Afterwards, when I thanked everyone and praised this good discussion experience, a Linux kernel mailing list member said he thought my problem got solved not because I was famous in this list, but because I asked in the right way.
Hackers are, from a certain perspective, guys with rich knowledge but lacking human touch; I believe he was right. If I asked like a beggar, regardless of who I am, I'd definitely annoy or be ignored by some people. He suggested I record this, which directly led to this guide's creation.
After Problem Resolution, Add a Brief Follow-up
After problems are solved, send a note to everyone who helped you, letting them know how the problem was solved, and thank them again. If the problem attracted wide attention, posting a note there is appropriate.
The ideal way is to reply to the original question thread, with titles containing obvious markers like "Fixed", "Resolved", or other equivalent meanings. In busy mailing lists, potential respondents seeing discussion threads "Problem X" and "Problem X - Resolved" know not to waste time (unless they personally find Problem X interesting), so they can use this time to solve other problems.
Follow-ups don't need to be long or deep; a simple "Hello, turns out it was a network cable problem! Thanks everyone – Bill" is better than nothing. In fact, unless conclusions are really technical, short summaries are better than long discourses. Explain how the problem was solved, but no need to repeat the entire problem-solving process.
For deep problems, posting debugging record summaries is helpful. Describe the problem's final state, explain what solved the problem, then point out avoidable pitfalls. The avoidable pitfalls part should be after correct solutions and other summary materials, not making this information into detective fiction. Listing names of those who helped you will make you more friends.
Besides being polite and substantive, this type of follow-up also helps others search for solutions that actually solve your problems in mailing lists/newsgroups/forums, benefiting them too.
At minimum, this follow-up helps everyone who assisted feel satisfaction from problem resolution. If you're not a technical expert or hacker yourself, trust them; this feeling is very important for masters or experts you ask for help. Unsolved problems are discouraging; they long to see problems solved. Good people get good returns; satisfy their longing, you'll benefit next time you ask.
Think about how to prevent others from encountering similar problems in the future, ask yourself if writing a document or adding an FAQ would help. If so, send them to maintainers.
In questioning, this good follow-up action is actually more important than traditional etiquette, and is how you build reputation by treating others well, which is a very valuable asset.
Good Questions and Bad Questions
A question's answer quality largely depends on the problem's difficulty and questioning method. This guide provides several better questioning methods that make it easier for you to get satisfactory answers.
They like new, challenging good questions (if not, they probably aren't who you want to ask). Because these are usually questions they haven't been aware of or thought about before, increasing their experience.
They despise those unwilling to think, or who don't do what they should before asking. Such people are just time killers—only wanting to take without understanding giving, only wasting time that could be used for more interesting problems or more deserving people.
How to Become a Popular Questioner?
Most people are very willing to communicate equally. As long as you're willing to make efforts to meet basic requirements, you'll be welcomed. But helping those unwilling to help themselves is inefficient.
- Not understanding is okay, but pretending not to understand is not.
- This doesn't require great technical achievements from you, but you should show some traits:
- Cleverness
- Thoughtfulness
- Observational skills
- Willingness to actively participate in problem-solving
If you can't do these things, suggest paying for commercial services to solve problems, not waiting here for "freebies".