How To Ask Questions the Smart Way

Eric Steven Raymond

Thyrsus Enterprises


     <esr@thyrsus.com>
    

Rick Moen


    <respond-auto@linuxmafia.com>
    

Translations

Translations: Bahasa Indonesian Brazilian-Portuguese Chinese Czech Danish Estonian Finnish French German Hebrew Hungarian Italian Japanese Polish Russian Serbian Spanish Swedish Turkish . If you want to copy, mirror, translate, or excerpt this essay's master copy, please see Eric's copying policy (which I, Rick Moen, endorse — this local copy, used for pending revisions intended to be re-merged, and to indulge my preference for Commonwealth spelling and for sundry pedantic usages, exists pursuant to my copyright title to our joint work, and may not be mirrored).

There are quite a few authorised (i.e., compliant with the copying policy) translations and mirrors, as well as a large number of unauthorised mirrors (either altered, outdated, or both). The latter are not OK.

Disclaimer

Many project Web sites link to this document in their sections on how to get help. That's fine, it's the use we intended — but, if you're a webmaster creating such a link for your project page, please display prominently near the link a notice that we are not your project's help desk!

We've learned the hard way that, without such a notice, we will repeatedly be pestered by idiots who think having published this document makes it our job to solve all the world's technical problems.

If you're reading this document because you need help, and you walk away with the impression you can get it directly from the authors, you are one of those idiots. Don't ask us questions: We'll just ignore you. We're here to show you how to get help from people who actually know about the software or hardware you're dealing with — but, 99% of the time, that will not be us. Unless you're certain one of the authors is expert in what you're dealing with, leave us alone and everybody will be happier.

Introduction

In the world of hackers, the kind of answers you get to your technical questions depends as much on the way you ask the questions as on the difficulty of developing the answer. This guide will teach you how to ask questions in a way more likely to get you a satisfactory answer.

Now that use of open source has become widespread, you can often get as good answers from other, more experienced users as from hackers. This is a Good Thing; users tend to be just a little bit more tolerant of the kind of failures new users often have. Still, treating experienced users like hackers, in the ways we recommend here, will generally be the most effective way to get useful answers out of them, too.

The first thing to understand is that hackers actually like hard problems, and good, thought-provoking questions about them. If we didn't, we wouldn't be here. If you give us an interesting question to chew on, we'll be grateful to you; good questions are a stimulus and a gift. Good questions help us develop our understanding, and often reveal problems we might not have noticed or thought about otherwise. Among hackers, "Good question!" is a strong and sincere compliment.

Despite this, hackers have a reputation for meeting simple questions with what looks like hostility or arrogance. It sometimes looks like we're reflexively rude to new users and the ignorant. However, this isn't really true.

What we are, unapologetically, is hostile to people who seem to be unwilling to think or to do their own homework before asking questions. People like that are time sinks: They take without giving back, and they waste time we could have spent on another question more interesting and another person more worthy of an answer. We call people like this "losers" (and, for historical reasons, sometimes spell it "lusers").

We realise there are many people who just want to use the software we write, who have no interest in learning technical details. For most people, a computer is merely a tool, a means to an end; they have more important things to do and lives to live. We acknowledge that, and don't expect everyone to take an interest in the technical matters that fascinate us. Nevertheless, our style of answering questions is tuned for people who do take such an interest and are willing to be active participants in problem-solving. That's not going to change. Nor should it; if it did, we would become less effective at the things we do best.

We're (largely) volunteers. We take time out of busy lives to answer questions, and at times we're overwhelmed with them. So we filter, ruthlessly. In particular, we throw away questions from people who appear to be losers, in order to spend our question-answering time more efficiently, on winners.

If you find this attitude obnoxious, condescending, or arrogant, check your assumptions. We're not asking you to genuflect to us — in fact, most of us would love nothing more than to deal with you as an equal, and welcome you into our culture, if you put in the effort required to make that possible. It's simply not efficient for us to try to help people who're not willing to help themselves. It's OK to be ignorant; it's not OK to play stupid.

So, while it isn't necessary to already be technically competent, to get attention from us, it is necessary to demonstrate the kind of attitude that leads to competence — alert, thoughtful, observant, willing to be an active partner in developing a solution. If you can't live with this sort of discrimination, we suggest you pay somebody for a commercial support contract, instead of asking hackers to personally donate help to you.

If you decide to come to us for help, you don't want to be one of the losers. You don't want to seem like one, either. The best way to get a rapid and responsive answer is to ask it like a person with smarts, confidence, and clues who just happens to need help on one particular problem.

(Improvements to this guide are welcome. You can e-mail suggestions to esr@thyrsus.com or rick@linuxmafia.com. Note, however, that this document is not intended to be a general guide to netiquette, and we will generally reject suggestions not specifically related to eliciting useful answers in a technical forum.)

Before You Ask

Before asking a technical question by e-mail, or in a newsgroup, or on a Web site chat board, do the following:

  1. Try to find an answer by searching the Web.

  2. Try to find an answer by reading the manual.

  3. Try to find an answer by reading a FAQ.

  4. Try to find an answer by inspection or experimentation.

  5. Try to find an answer by asking a skilled friend.

  6. If you're a programmer, try to find an answer by reading the source code.

When you ask your question, mention having done these things first; this will help establish that you're not being a lazy sponge and wasting people's time. Better yet, display what you've learned from doing these things. We like answering questions for people who've demonstrated they can learn from the answers.

Use tactics like doing a Google search on the text of your error message (searching Google Groups, as well as Web pages). This might well take you straight to fix documentation or a mailing list thread answering your question. Even if it doesn't, saying "I googled on the following phrase but didn't get anything promising" is a good thing to include in e-mail or news posting requesting help.

Take your time. Do not expect to be able to solve a complicated problem with a few seconds of Googling. Read and understand the FAQs, sit back, relax, and give the problem some thought before approaching experts. Trust us, they will be able to tell from your questions how much reading and thinking you did, and will be more willing to help if you come prepared. Don't instantly fire your whole arsenal of questions, just because your first search turned up no answers (or too many).

Prepare your question. Think it through. Hasty-sounding questions get hasty answers, or none at all. The more you do to demonstrate having put thought and effort into solving your problem before seeking help, the more likely you are to actually get help.

Beware of asking the wrong question. If you ask one that is based on faulty assumptions, J. Random Hacker is quite likely to reply with a uselessly literal answer, while thinking "Stupid question...", and hoping the experience of getting what you asked for, rather than what you needed, will teach you a lesson.

Never assume you're entitled to an answer. You're not; you aren't, after all, paying for the service. You will earn an answer, if you earn it, by asking a substantial, interesting, and thought-provoking question — implicitly contributing to the experience of the community, rather than merely passively demanding knowledge from others.

On the other hand, making clear your ability and willingness to help the solution-de