This page has been robot translated, sorry for typos if any. Original content here.

How to ask questions correctly

(This is a cached copy, the original was on http://ln.ua/~openxs/articles/smart-questions-ru.html.) If you notice the aging of this copy, or restored the original source, please write to the webmaster of this site.)

Eric Steven Raymond Thyrsus Enterprises < esr@thyrsus.com >

Rick Moen < rick@linuxmafia.com >

Copyright © 2001 Eric S. Raymond

Translation into Russian: Copyright © 2002-2005 Valery Kravchuk

Version history:

  • Version 3.1 - October 28, 2004 (Added: 'Google is your friend!')
  • Version 3.0 - February 2, 2004 (Substantial addition of reasoning about the etiquette of communication in Web-forums.)

There are translations of this document into Chinese , Czech , Danish , Estonian , French , German , Hebrew , Hungarian , Italian , Japanese , Polish , Russian , Spanish , Swedish and Turkish . If you want to copy, mirror, translate or quote this document, please read my copying rules .

Disclaimer

On the websites of many projects in the sections on how to apply for help, links are given to this document. This is good, for this purpose it is intended, but if you are a webmaster going to add such a link on the page of your project, please indicate next to the link in a prominent place that we are not a support service for your project!

We learned with our own bitter experience that, in the absence of such a warning, we will constantly be pestered by idiots who believe that the publication of this document obliges us to solve all the technical problems in the world.

If you are reading this document because you need help, and in the end it seems that you can get it directly from the authors, then you are one of these idiots. Do not ask us any questions. We will simply ignore them. Our goal is to show you how to get help from those who understand the software or hardware you are working with, but in 99% of cases, we are not the ones who are versed. If you do not know for sure that one of the authors is an expert in what you are versed in, leave us alone and everything will be better for everyone.

Introduction

In the world of hackers , the style of answers that you get to the technical questions asked depends on the method of asking questions no less than on their complexity. This guide will teach you to ask questions in such a way as to increase the probability of obtaining a satisfactory answer.

Now that the open source software has become widespread, you can often get answers from other, more experienced users, not from hackers. It's good; Users are usually a bit more tolerant of the mistakes that beginners often make. But, if you refer to experienced users as hackers, in accordance with the recommendations presented here, this will be the most effective way to get useful answers from them.

First of all, it is necessary to understand that hackers actually like difficult problems and good, capable to stir up brains, questions about these problems. If we did not like it, we would not be hackers. If we ask an interesting question that requires a lot of reflection, we will be grateful for it; Good questions are an incentive and a gift. Good questions help to better understand the subject and often reveal problems that were not previously noticed or thought about. From the mouth of a hacker: "Good question!" - this is a big and sincere compliment.

Despite this, it is believed that hackers treat simple issues rather hostile or arrogant. Sometimes it seems that we are rude enough to beginners and ignore them. But actually it is not.

We are, undoubtedly, hostile to people who are presumably unwilling to think or learn before asking questions. Such people kill time - they take, without giving anything in return, they take away time, which we could devote to another question, more interesting, and to another person more worthy of an answer. We call these people "losers" (for historical reasons, this word is sometimes written as "lusers" - loser users).

We understand that many people just want to use the software we create, and they are not going to study the technical details at all. For most people, a computer is just an instrument, a means to an end; They have more interesting activities and other problems in life. We recognize this and do not expect that everyone will be interested in the technical nuances so attractive to us. Nevertheless, our style of answers to questions is suitable for people who are really interested in this and want to be active participants in the problem-solving process. It will not change. And it should not change; Otherwise, we can not effectively do what we are best at.

We (mostly) are volunteers. We devote time of our hard life to answering questions, and from time to time we do not cope with a flurry of questions. Therefore, we have to mercilessly "filter the market." In particular, to discard the issues of potential losers in order to spend the time allotted for answers more effectively, devoting it to the winners.

If this position seems ridiculous, arrogant or arrogant, you are mistaken. We do not ask you to pray for us - in fact, most of us would like to communicate with you on an equal footing and take you into your culture if you make the necessary efforts for this. But for us it is simply inefficient to try to help people who do not want to help themselves. Being rude is normal, but pretending to be an idiot is not.

So, although it does not necessarily have to be technically competent to receive our attention, it is necessary to demonstrate the qualities that make it possible to become competent - mindfulness, thoughtfulness, observation, and the desire to actively participate in the development of a solution. If you can not accept this kind of discrimination, it makes sense to pay someone for commercial support, rather than asking hackers to help you personally.

If you decide to contact us for help, do not become a loser. And do not act like a loser. The best way to get a quick and sensitive answer is to ask how a person is intelligent, confident and knowledgeable, who simply needed help in solving one particular problem.

(Additions to this guide are welcome, suggestions can be sent to esr@thyrsus.com .) Note, however, that this document was not created as a general guide to web etiquette , and I usually ignore proposals not directly related to obtaining useful replies in the technical forum .)

Before asking ...

Before asking a technical question by e-mail or discussion group, chat or on the forum, do the following:

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

  2. Try to find the answer in the manual.

  3. Try to find the answer in the list of frequently asked questions (FAQ).

  4. Try to find the answer by checking or experimenting.

  5. Ask an experienced friend.

  6. If you are a programmer, try to find the answer by analyzing the source code.

When asking a question, indicate from the very beginning that you have already done all this; This will help to understand that you are not some bummer who is wasting someone else's time. Even better, show what you learned as a result of your searches. We like to respond to people who have demonstrated their ability to perceive answers.

Use techniques such as search in Google for the text of the received error message (look also in the discussion groups - Google groups, and not just on Web pages). This can lead either directly to the documentation on how to fix this error, or to the discussion in the mailing list in which you can find the answer. Even if there is no answer, the phrase: "I searched Google for the next query, but did not find anything useful" would come in handy when I applied for help via email or a discussion group.

Prepare the question. Think it over. On superficial questions you will get superficial answers, or in general you will not get any answers. The more you do to demonstrate your thoughts and efforts to solve a problem before asking for help, the more likely that you will receive this help.

Do not ask the wrong questions. If the question is based on erroneous assumptions, any hacker (in the original - J. Random Hacker, editor's note ) will most likely give a useless literal answer, after thinking at the same time "Silly question ...", and hoping that getting one Than you asked, instead of what you really need, something will teach you.

Do not think that you have to answer. Nobody owes you anything; You, in the final analysis, did not pay for these services. You will receive an answer if you deserve it, asking a significant, interesting and suggestive question - a question that implicitly gives the community a new experience, and not just passively requiring others to share knowledge.

On the other hand, it's nice to immediately make it clear that you can and want to help in the process of developing a solution. To questions like "Can someone tell?", "What is not included in my example?" And "Is there a website that looks at this topic?" The answer is more likely to be received than the requirement to send an exact sequence of actions to solve the problem, since you have clearly shown that you will solve the problem yourself if someone indicates to you the correct course of action.

When you ask ...

Choose the right forum

Carefully consider where to ask the question. You are most likely to be ignored or spilled as a loser if you:

  • Will send a question to a forum that does not correspond to the topic (off topic)

  • Will send the most elementary question to the forum, where complex technical issues are discussed, or vice versa

  • Will send a cross-post to many different discussion groups

  • Send a private message by e-mail to a stranger who is not personally responsible for resolving your problems

Hackers ignore questions directed to the wrong address so as not to load their communication channels with irrelevant information. Do not get into this category of questions.

Therefore, first you need to find the appropriate forum. This will help you again with the Google search engine and other search tools on the Web. Use them to find the project page most closely associated with the hardware or software that you are experiencing difficulties with. Usually on this page there will be links to a list of frequently asked questions (FAQ, FAQ - Frequently Asked Questions), mailing lists of the project and their archives. That's where you need to ask for help, if your own efforts (including reading these, discovered by you, FAQ) have not been successful. The project page can also describe the procedure for informing about the error or a link to it is provided. In this case, use the recommended procedure.

Sending the same message to a person or to a forum that you are not familiar with is an enterprise that is at least risky. For example, do not think that the author of an informative web page wants to become your free consultant. Do not make optimistic assumptions that your question will be glad - if not sure, send it to another address or refuse its parcel at all.

When choosing a Web-forum, discussion group or mailing list, do not make a decision based only on the name; Read the list of frequently asked questions (FAQs) or rules to make sure that the question corresponds to the topic. Read the messages for a while before sending questions to feel how and what is being done here. In fact, before sending a question it does not hurt to search for keywords related to your problem in the archives of a discussion group or mailing list. As a result, you can find the answer, and if not, this search will help to formulate the question better.

Do not use all available help channels at the same time. It's like a cry and outrages people. Address them in turn.

Correctly define the topic! One of the classic mistakes is to ask a question about the Unix or Windows programming interface in a forum dedicated to a language, library, or tool running on both platforms. If you do not understand why this is a gross mistake, do not ask questions until you understand.

In general, the probability of getting answers to questions in a properly chosen public forum is higher than in a private forum. There are several reasons for this. One of them is the number of potential responders. Another is the size of the audience that will know the answer; Hackers with great pleasure answer questions that may interest many than questions that are useful only to units.

It is clear that experienced hackers and creators of popular programs already get much more irrelevant issues than they would like. By increasing this flow, in some cases you can become the last straw - sometimes participants in popular projects stop supporting them, because they do not endure any more attendant problems in the form of a stream of useless messages by e-mail to their personal addresses.

Web- and IRC-forums for beginners often allow you to get an answer as quickly as possible

Your local user group or your Linux distribution can support a Web-based forum or IRC channel designed to help beginners. (In non-English-speaking countries, forums for beginners are still most likely organized as mailing lists.) These are suitable places for the initial assignment of questions, especially if it is assumed that you are faced with a relatively simple or typical problem. The publicly advertised IRC channel is an explicit invitation to ask questions, and, often, the ability to receive real-time responses.

In fact, if the program you are having problems with is taken from the distribution (which is typical today), it may be better to ask the forum / mailing list for the appropriate distribution first before contacting the forum / mailing list. Hackers working on the project can simply answer: "Use our assembly".

Before asking a question in any Web-forum, check whether it is possible to search on it. And if it is, look for a couple of key words on a discussion of a problem like yours; this can help. If before that you performed a general search on the Web (what should be done), still look at the forum; Perhaps your search engine has not indexed this forum for a long time.

There is an interesting tendency to support project users through a Web-forum or IRC channel, leaving an e-mail for communication between developers. Therefore, if you need help with the project, please consult these sources of information first.

As a second step, use the mailing lists of projects

If the project has a mailing list for developers, send questions to this mailing list, rather than to individual developers, even if you are sure that you know who can best answer your question. Find the address of the mailing list of the project in the documentation or on the project website, and send a question to this address. There are several good reasons for doing this:

  • Any question, good enough to contact one developer with it, will be valuable for the whole group. On the contrary, if it seems that the question is too primitive for the mailing list, this is not a reason to fool them with the heads of individual developers.

  • If the question is specified in the mailing list, the load is distributed among all developers. The particular developer (especially if he is the project manager) may be too busy to answer your questions.

  • Most mailing lists are archived, and archives are indexed by search engines. Someone will be able to find your question and answers on the network, and will not ask it again in the mailing list.

  • If certain questions are asked often, developers can use this information to improve the documentation or the software product itself, so that they become more intelligible. But if these questions are asked in person, no one has a general picture - which is often asked.

If the project has separate mailing lists or Web forums for "users" and for "developers" (or "hackers"), and you do not deal with (hacking) the code, ask the question in the list / forum for "users". Do not count on a warm welcome on the mailing list for developers, where your question is likely to fall into the category of "noise" that interferes with the exchange of information about the development process.

However, if you are sure of the non-triviality of your question and have not received an answer in the mailing list / forum for "users" for several days, contact the developers. It makes sense to follow the appropriate mailing list or forum for several days before to learn its traditions (in fact, it makes sense to do this before contacting any private or semi-closed mailing list).

If you can not find the address of the mailing list of the project, but the address of the person who leads the project is known, send your question to the presenter. But in this case, do not think that there is no mailing list. In your message, indicate that you tried, but could not find the appropriate mailing list. Also mention that you are not against sending your message to other recipients. (Many people think that personal correspondence should remain personal, even if nothing is secret about it.) By allowing you to forward your message, you give people a choice.)

Ask meaningful, specific topics for messages

When sending a message to the mailing list or to a discussion group, the subject of the message is a great opportunity to attract the attention of qualified experts in a string of up to 50 characters. Do not spend them on babbling like "Help me, please" (not to mention the "PLEASE HELP ME !!!!" topics; messages with such themes are rejected reflexively). Do not try to impress us with the depth of your suffering; It is better to use the allotted space for the shortest possible description of the problem.

A good agreement on the design of message topics used by many technical support services is the use of the "object-deviation" template. The "object" part specifies what the problem was, and the "deviation" part describes the deviation from the expected behavior.

It's stupid:

HELP! The video card on my laptop is not working properly!

Reasonable:

Invalid mouse cursor shape in XFree86 4.1, video on the Fooware MV1005 chipset

Better:

XFree86 4.1 mouse cursor on the Fooware MV1005 chipset - the wrong shape

The process of writing a theme using the "object-deviation" template will help to understand the problem in more detail. What exactly is working wrong? Only the mouse cursor or with other graphics, too, have problems? The only problem is XFree86? Only in version 4.1? This problem occurs only on video cards with a Fooware chipset? Only in the model MV1005? Hacker, after receiving a message with a similar topic, will be able to, in general terms, understand what exactly you had a problem with and what kind of problem it is.

In general, imagine that you are browsing the list of questions in the archive, in which only the subject lines are represented. Make the subject line reflect the essence of the issue rather well and the next viewing archive in search of an answer to such a question could find a discussion leading to an answer rather than sending the question again.

If you ask a question in response, do not forget to change the subject line so that it is clear on it - a question is asked. A subject line like "Re: test" or "Re: new bug" will not attract enough attention. In addition, keep the quotes of previous messages to a minimum sufficient to enable new users to understand what was being said.

Do not just send a reply to the mailing list message if you are going to discuss a new topic (start a discussion thread). This will narrow the circle of respondents. Some mail readers, such as mutt , allow the user to sort messages by topic, and then hide messages on the topic, minimizing the thread of the discussion. Those who use this opportunity will never see your message.

It's not enough to change the subject. Mutt, and possibly other e-mail readers, take into account not only the subject line, but also other information in the message headers when binding them to the discussion thread. Create an entirely new message.

In Web forums, discussion rules differ slightly, because messages are usually more closely related to specific threads of discussion and are often invisible outside of these threads. Changing the topic when asking a question in the answer is not essential (not all forums even allow you to specify topics in the answers, and if they can be asked, almost nobody reads them). But, asking a counter question in return is in itself a dubious practice, since only those who follow the corresponding thread of the discussion will see this question. Therefore, if you are not sure that you want to address specifically to those who participate in the discussion of the topic, start a new topic.

Simplify the sending of an answer

Completion of the question with the phrase "An answer, please send to the address ..." makes the receipt of the answer very unlikely. If you do not have a couple of seconds to correctly set the Reply-To header in your email program, then we do not have a couple of seconds to think about your problem. If your email program does not allow you to do this - throw it out. If your operating system does not support email programs that allow you to do this, look for the operating system better.

Asking to respond by e-mail in Web forums is extremely impolite, unless you are sure that information can be confidential (and someone, for some unknown reason, will want to tell it to you personally, not the entire forum). If you want to receive a notification by mail that someone answered the topic in the forum, request this notification in the interface of the Web-forum; This feature is supported almost everywhere in the form of the options "watch this thread", "send email on answers", etc.)

Write in plain language, observing the rules of grammar and vocabulary

It has been experimentally established that people who write inattentively and carelessly are usually as inattentive and careless in the thoughts and code of the programs being created (at least, often enough to confidently state so). Answering the questions of people who are inattentive and careless in thinking is an ungrateful occupation; We will spend our time on something else.

Therefore, the clarity and correctness of the wording of the question matters. If you do not want to fool yourself with this head, we do not want to fool yourself, paying attention to such issues. Try to formulate the question in the right language. It should not be heavy and formal - in fact, in hacker culture, an informal, full of slang and humorous language is used, which is used correctly. But thoughts should be expressed clearly; It is necessary to demonstrate at least some signs of thoughtfulness and attention.

Observe the rules of syntax, punctuation and capitalization. Do not confuse it with it's, loose with lose or discrete with discreet. DO NOT WRITE ALL IN THE UPPER REGISTER, - this is perceived as a cry and is considered rude. (If everything is written in lowercase, it's not much better, because it's so hard to read.) Alan Cox says it's goodbye, but you do not.)

In general, if you write at the level of childish babbling or delirium crazy, your question is likely to be ignored. The scripture in the style of the young "Khatskers" (in the original - l33t script kiddie hax0r) is absolutely hopeless, and guarantees in return - silence (or, at best, a dose of neglect and sarcasm).

If you ask questions in a forum where you do not use your native language, then some lexical and grammatical errors will be forgiven - but do not expect any forgiveness of elementary laziness (yes, we are usually able to understand the difference). In addition, if you do not know exactly which languages ​​for the addressee - native, write in English. Busy hackers usually just skip questions in languages ​​they do not understand, and English is the working language of the Internet. Asking a question in English, you reduce the likelihood that it will be missed without reading.

Send questions in all clear formats

If you artificially make it difficult to read the question, the probability increases that you will be answered instead of a question that is not difficult to read. Therefore:

  • Send a message in plain text, not HTML. ( Disabling HTML is not that difficult.)

  • MIME applications are usually completely valid, but only if they have real content (for example, the source code or patch file is attached), and not just automatically generated by the mail client (representing, for example, another copy of the message, but in HTML format).

  • Do not send messages in which the paragraphs are represented by a single line, visually transferred to the following lines on the client. (This complicates the response to the message part.) Based on the assumption that the recipients will read the messages on text terminals with 80-character lines, and adjust the insertion of hard line breaks accordingly, completing the line up to 80 positions.

  • However, do not split data into several lines at a fixed position (for example, log dumps or session records). The data must be included in the messages as they are, so that the addressees are sure that they see exactly what you saw.

  • Do not send messages in the MIME Quoted-Printable encoding to the English-language forum. This encoding may be needed when sending a message in a language not covered by ASCII encoding, but many user mail agents do not support it. To read the messages with the scattered control characters of the form = 20 is inconvenient and unpleasant.

  • Do not even think that hackers will be able to read documents in private, proprietary formats such as Microsoft Word or Excel. Most hackers react to them about the way you would react if you smeared the front door with pigs. Even when they can read them, the need to bother with these formats outrages them.

  • When sending messages from a Windows-based machine, disable Microsoft's debilitated support for "Smart Quotes". This will get rid of a lot of garbage characters scattered throughout the message.

  • In Web-forums do not abuse "emoticons" and the possibility of inserting "html" (if they are provided). One or two smileys are normally normal, but a colorful text makes people think that you are a lamer. Excessive use of emoticons, colors and fonts presents you as a laughable teenage girl, which does not make sense, unless of course you are interested in answers, not sex.

When using an email client with a graphical interface (for example, Netscape Messenger, MS Outlook and the like), remember that it can violate these rules when using standard settings. In most such clients, the menu has a command of the type "View Source". Check with her help on one of the sent messages that the normal text is sent, without excess garbage.

Describe in detail and in detail the problem

  • Carefully and clearly describe the symptoms of the problem or error.

  • Describe the environment in which it occurs (machine, OS, application, etc.) Specify the distribution and release (for example: "Fedora Core 2", "Slackware 9.1", etc.).

  • Describe the research you conducted when trying to understand the problem before asking a question.

  • Describe independently the steps you have taken to diagnose and isolate the problem before asking a question.

  • Describe the latest changes in the configuration of the computer or software that may be relevant.

Do the utmost to anticipate potential questions of a hacker and answer them in advance in your appeal for help.

Simon Tatham wrote a wonderful essay entitled How to effectively report errors . I highly recommend reading it.

The volume does not yet mean accuracy

Be accurate and informative. To do this, it is not enough simply to insert a large amount of code or data into the query. If there is a large, complex test case leading to an error in the program, try to minimize it as much as possible.

This is useful, at least, for three reasons. The first: the demonstrated efforts to simplify the issue increase the probability of receiving a response. The second: simplifying the question raises the probability of obtaining a useful answer. Third, during the clarification of the error message, you can find a solution or a method to work around the problem yourself.

Do not claim to have found an error

If you have any problems with this or that software, do not claim to have found an error unless absolutely sure about it. Tip: If you can not provide a source code fix that solves the problem or a test case for a previous version that shows incorrect behavior, you are probably not sure about your application.

Remember that many other users with this problem did not come across. Otherwise, you would have already learned about this when reading the documentation or when searching the Web (you did it before you make such statements, do you ?). This means that, most likely, it is you who are doing something wrong, not software.

The creators of software make great efforts to ensure that it works as well as possible. If you claim to have found a mistake, then, by the same token, they assume that they have done something wrong, and they almost certainly will not like it - even if you are right. Especially undiplomatic will write "bug" ("Error") in the subject line of the message.

When asking a question, it is better to describe the problem, based on the assumption that you are doing something wrong, even if you are personally absolutely sure that you have found a mistake. If this is really a mistake, you will read about it in the answer. Try to behave so that people who support the program want to apologize to you if a real error is found, and not that you have to apologize for your stupidity.

Public self-abolishment does not replace homework

Some, having understood that it is not necessary to behave rudely or arrogantly, extorting the answer, choose the opposite extreme - self-abasement. "I know, I'm a beginner, a loser and a full kettle, but ...". It distracts from the point and does not make sense. Especially in combination with the uncertainty in describing the actual problem.

Do not waste your time, and ours, hoping for pity. Imagine better the facts and your question as clearly as possible. So you declare yourself much better than by self-abasement.

Sometimes in Web-forums there are separate places for questions of beginners. If you feel that such a question can be asked only by a novice user, ask it there. But even there you do not have to humble yourself.

Describe the symptoms of the problem, not your assumptions

It's useless to tell your hackers your opinion about the causes of the problem. (If your diagnostic theories are so valuable, do you need to turn to others for help?) So make sure you report the actual symptoms of what is happening, not your interpretations and theories. Let the answerers take the interpretation and diagnosis.

It's stupid:

I constantly get SIG11 errors when compiling the kernel, and I suspect that the cause is a microcrack on the motherboard. What is the best way to verify this?

Reasonable:

On my computer K6 / 233 on the motherboard FIC-PA2007 (VIA Apollo VP2 chipset) with 256MB of Corsair PC133 SDRAM memory, SIG11 errors often begin to occur about 20 minutes after the power is turned on, during kernel compilation, but they do not occur in the first 20 Minutes. Reboot to nothing leads, but the trip for the night helps. Replacing all the memory did not help. The corresponding part of the results of a typical compilation is attached.

Describe the symptoms of the problem in chronological order

The most important information for finding out the reasons for what is happening is often related to events immediately preceding this situation. Therefore, it is necessary to accurately describe what you did and what the machine did until the problem occurred. In the case of working with the command-line interface, session recording (for example, using the script utility) can help a lot and include a couple of dozens of corresponding lines in the message.

If the program in which the failure occurred has diagnostic options (for example, -v - detailed information), try to pick options that add useful debugging information to the "transcript" of the session.

If the record is long enough (more than a page), it makes sense to formulate the problem in advance, and then specify the chronological sequence of actions leading to it. In this case, hackers will know what to look for when reading the session.

Describe the goal, not a separate step

If you are trying to figure out how to do something (and do not report an error), start with a description of the goal. And only then describe a concrete step on the way to it that you could not fulfill.

Often people who need technical assistance have a high-level goal on their mind and are attached to one of the possible ways, in their opinion, of achieving it. They ask for help to take one step, not realizing that they have chosen the wrong way. To understand this, it can take a lot of effort.

It's stupid:

How do I get the color picker dialog in FooDraw to accept a hexadecimal RGB value?

Reasonable:

I'm trying to replace the table of colors in the image with the values ​​I need. Now I see only one way to do this - editing each slot in the table, but I can not specify a hexadecimal RGB value in the FooDraw color selection dialog.

The second version of the question is reasonable. It allows you to get a response in which you will be offered a tool more suitable for solving the problem.

Do not ask to respond to your personal email address

Hackers believe that solving problems must be a public, transparent process, during which the first attempt to find an answer can and should be corrected if someone more knowledgeable will notice that this answer is incomplete or incorrect. In addition, the respondents are partly rewarded by the fact that their competence and knowledge will be noticed by their colleagues.

When you ask for a personal response, you are hampering both the decision-making process and the remuneration. Do not do this. To answer in person is the choice of the respondent , and if he does, it is usually because he considers the question too unsuccessfully formulated or obvious to be interesting to others.

There is one small exception to this rule. If you assume that you will receive a lot of similar answers to your question, do not forget the magic words "send the answer to me, and I summarize the answers received in the article for the discussion group." Trying to keep a discussion group or mailing list away from a stream of, in fact, identical messages is very kind, but you must keep your promise and send a summary summary.

Ask clear and clear questions

Unlimited questions usually require unlimited time for an answer. People, most likely able to give you a useful answer, are also the busiest people (also because they do most of their work themselves). Such people are jealous of their time, and therefore often do not take unlimited questions.

The probability of getting a useful answer is increased if you make it clear what you are getting from the responders (provide links, send code, check your decision, etc.). This will concentrate the efforts of the respondents and implicitly set the time and effort limitation that the respondent will have to spend to help you. It's good.

To understand in which world experts live, one must treat the experts' knowledge as a resource abundant, and by their time - as a resource very limited. The less time you implicitly require, the more likely it is to receive a response from a really good and busy expert.

Therefore, it makes sense to limit the issue in order to minimize the time necessary for an expert to solve it. But often this is not the same as simplifying the question. So, for example, the question: "Can you give me a link to a good description of X?" - Usually much wiser than a request: "Explain to me X, please." If you have a problem with the idle code, it is wiser to ask you to explain what's wrong with it, and not ask you to fix the errors.

Do not ask questions from homework

Hackers are good at answering questions from homework - most of us did it on our own. These questions are asked to work for you so that you can learn from your own experience. You can ask for a hint, but not about a complete solution.

If you suspect that you have a question from your homework, but still can not give an answer to it, try asking a question in the forum of the user group or (in extreme cases) in the "custom" mailing list / forum of the corresponding project. Although hackers recognize it, some of the advanced users can at least give you a hint.

Avoid meaningless requests

Do not be tempted to end your request with meaningless questions like: "Will someone help me?" Or "Is there any answer at all?" First, if you have anyhow professionally described your problem, such additional questions, at least, are superfluous. Secondly, because they are superfluous, they seem annoying to hackers - and, in response, they are so inclined to write a logically irreproachable copy of the type: "Yes, you can help" or "No, you can not help".

In general, questions with answers yes-no better not ask, unless you want to get a yes-or-no answer .

Do not mark your question as "Urgent", even if for you it is such

This is your problem, not ours. The mention of urgency is often counterproductive: most hackers simply remove such messages as harsh and selfish attempts to immediately attract special attention.

There is one partial exception to this rule. The mention of urgency can make sense if you use the program in a serious organization that may be of interest to hackers; In that case, if you do not have enough time and you report it politely, people may be sufficiently interested in answering more quickly.

So doing, however, is extremely risky, because the hacker's view of gravity and his interests probably differ from yours. The question from the international space station, for example, will provoke interest, but the question on behalf of a prosperous charitable foundation or political party is almost certain - no. In fact, the question with the theme "Urgent: Help me save the fluffy seal!" Will be ignored or viciously commented even by those hackers who believe that the life of fluffy seals is important to them.

If this surprises you, reread the rest of the document until you understand, and before that, refrain from sending questions at all.

Politeness never hurts, and sometimes helps

Be polite. Use the phrases "Please" and "Thankful in advance". Make it clear that you are grateful to the people who devote their time to you free of charge.

To be honest, this is not so important as the absence of errors in the text of the question, the clarity, accuracy and detail of the description, the use of open formats, etc. (And does not replace all of the above); Hackers, in the general case, would prefer to receive rough, but technically accurate error messages, than polite verbiage. (If it surprises you, remember that we appreciate the question for what he teaches us.)

However, at the normal technical level of the question, courtesy really increases the chance of getting a useful answer.

(It should be noted that the only serious objection received on this document from the veterans of the hacker movement is related to the recommendation to use the phrase "Thankful in advance." Some hackers see in it the reluctance to thank anyone after the problem is solved. To thank in advance and after receiving an answer, or to express their gratitude differently, say, the phrase "Thank you for attention" or "Thank you for your consideration.")

Send a brief description of the solution

After the problem is solved, send a message to everyone who helped you; Let them know how it ended, and thank again for your help. If the problem caused a general interest in the mailing list or the discussion group, it makes sense to send such a message there.

It will be optimal to answer in the thread of the discussion started with the original question by adding the note 'FIXED', 'RESOLVED', 'SOLUTION' or other equally obvious sign of the solution in the subject line. In mailing lists with a large number of messages, the potential answerer when looking at the thread of the discussion "Problem X", ending with the message "Problem X - SOLUTION" understands that he does not need to waste time even reading the messages (if he personally does not consider Problem X interesting) , And therefore can spend time solving another problem.

Such a message need not necessarily be long and detailed; Simple: "Hello, the problem was connected with a break in the network cable! Thank you all." Bill "- is better than nothing. In fact, a brief and polite resume is better than a long dissertation, unless the decision does not affect serious technical aspects. Write what actions allowed to solve the problem, but the entire sequence of the solution search should not be described again.

For serious enough problems, you can send a resume with a history of finding their reasons. Describe the final statement of the problem. Describe what the solution turned out to be, and indicate dead-end paths that should be avoided. Name everyone who helped you: so you will find friends.

In addition to showing courtesy and information, this kind of summary message will help others to find out exactly what decision helped you, and therefore help them, when searching the archive of a mailing list / discussion group / forum.

Last but not least, this kind of message helps all those involved in the discussion get a sense of satisfaction from the fact that the problem is closed. If you yourself are not a technical expert or a hacker, just trust us that this feeling is very important for the guru and the experts to whom you applied for help. Descriptions of problems, as a result and not solved - this is a complete disappointment; Hackers are eager to see them resolved. The good karma that occurs when you satisfy this thirst will help you a lot when asking the question the next time.

Think about how you can prevent other users from experiencing the same problem in the future. Ask yourself if the change in documentation or the FAQ list will help, and if so, send the appropriate change to those who support these documents.

Among hackers, this behavior, in fact, is considered more important than ordinary courtesy. This is how they earn the reputation of a good team player, which is a very valuable quality.

How to interpret the answers

RTFM and STFW: how to understand that you are seriously screwed up

There is an ancient and sacred tradition: if you get the answer " RTFM ", then the respondent thinks you should read the manual ( Read The Fucking Manual ). He is almost certainly right. Read.

The answer RTFM has a younger analogue. If you get the answer " STFW ", then the respondent thinks that you should search the answer in the network (Search The Fucking Web). He is almost certainly right. Search.

In Web-forums you can also search in the archives of the forum. In fact, the respondent can be so polite that he will give a link to the previous discussion, in which this problem was solved. But do not rely on it; Look in the archives yourself before asking.

Часто тот, кто посылает один из подобных ответов, имеет под рукой руководство или web-страницу с необходимой вам информацией, и смотрит на нее, когда набирает ответ. Эти ответы означают, что, по его мнению, во-первых, необходимую вам информацию легко найти и, во-вторых, вы большему научитесь при поиске информации, чем если вам ее преподнесут под нос на тарелочке.

You should not be indignant at this; On hacker standards, he has given you sufficient respect already by not ignoring the question. Вы должны поблагодарить ответившего за его отеческую доброту.

Если вы не поняли...

Если вы не поняли ответ, не шлите тут же требование его объяснить. Используйте те же источники информации, что и при поиске ответа на исходный вопрос (руководства, ЧаВО, Web, опытные коллеги), чтобы понять ответ. Если и после этого вам необходимы разъяснения, покажите, что вы узнали сами.

Например, предположим, я вам ответил: "Похоже, у вас завис zentry; надо проверить". Тогда плохим уточняющим вопросом будет: "А что такое zentry"? А хорошим : "OK, я прочитал страницу справочного руководства, и про zentry там упомянуто только в опциях -z и -p. Ни в одной из них не сказано, как сбросить зависший zentry. Надо ли использовать одну из этих опций, или я что-то неправильно понял?"

Реакция на грубость

Большая часть того, что может показаться грубостью, в хакерских кругах используется не для оскорбления. Это, скорее, следствие непосредственного, без обиняков, стиля общения, естественного для людей, старающихся решать проблемы, а не казаться другим мягкими и пушистыми.

Когда встречаетесь с грубостью, постарайтесь реагировать спокойно. Если кто-то действительно выходит за рамки допустимого, вполне вероятно, что ведущий списка рассылки, дискуссионной группы или форума поставит его на место. Если этого не произошло и вы выйдете из себя, вполне вероятно, что ставшее причиной этого лицо ведет себя в рамках норм хакерского сообщества, и все будут считать, что именно вы не правы. Это существенно снизит шансы получения необходимой информации или помощи.

С другой стороны, иногда можно встретиться с грубостью и вызовом, не имеющими никаких видимых оснований. Обратная сторона этой медали в том, что такая реакция является вполне приемлемой формой постановки на место действительных грубиянов, - мы отсекаем их недостойное поведение остро отточенным словесным скальпелем. Однако вы должны быть очень уверены в своей позиции, прежде чем пытаться этим заняться. Грань между указанием на невежливость и началом бессмысленного "базара" (в оригинале - flamewar - прим. переводчика ) настолько тонкая, что и сами хакеры нередко ее переходят. Если вы - новичок или просто случайный читатель, шансов избежать такой грубой ошибки немного. Если вас интересует информация, а не развлечение, лучше уберите руки с клавиатуры и не рискуйте вступать в подобные дискуссии.

(Some insist that many hackers suffer from a mild form of autism, or Asperger's syndrome , and they simply do not have enough of that part of the brain that is responsible for "normal" social interaction between people.It may be true or not.If you are - Not a hacker, the idea of ​​hackers as sick on the head can help you to reconcile with our oddities. Think what you want, we do not care, we like to be just like that, and we treat healthy diagnoses with healthy skepticism.)

In the next section, we'll talk about another problem; About a kind of "rudeness", with which you can meet when exactly you are wrong.

Do not react like a loser

It is likely that you have already screwed up several times in hacker forums - as described in this article, or similarly. And you have already explained how you fucked up, possibly in paint. With all honest people.

When this happens, the most unsuccessful reaction is to complain about what happened, to consider yourself insulted verbally, to demand an apology, to yell, to gasp for anger, to sue in court, to complain to employers of offenders, not to lower the toilet seat, etc. Instead of all this, you need to do the following:

To accept. This is normal. In fact, it is good and expedient.

Public norms do not support themselves - they are supported by people, actively, openly, publicly, these norms apply. Do not think that criticism should only be in personal correspondence - this is not so. It does not make sense to take as someone's insult someone's comment that one of your statements is wrong, or that he has a different opinion. This is how losers act.

There were hacker forums where, based on misunderstood hypertrophied politeness, participants were forbidden to send messages about errors in other people's messages. They were told: "If you do not want to help the user, be silent." The outflow of knowledgeable participants to other forums led to their degeneration into meaningless chatter and to complete uselessness from a technical point of view.

Choose: exaggerated "friendliness" (of this kind) or utility.

Remember: when this hacker writes that you have screwed up, and (no matter how grossly) he asks you not to do this any more, he does it, taking care, first, of you, and secondly, about his community. It would be much easier for him to ignore and strike out of his life. If you do not have enough for gratitude, keep dignity - do not complain, and do not think that you will be treated like a fragile doll just because you are a beginner with a theatrically hypersensitive soul and illusions about your own worth.

Sometimes people will go to the person, enter into a dirty controversy for no apparent reason, etc., even if you did not fuck up (or fucked up only in their imagination). To be outraged in this case is the way to really screw up.

These "scandalists" are either lamers who do not understand anything, but consider themselves experts, or potential psychologists who check whether you are screwed or not. Other readers will either ignore them, or find ways to deal with them independently. The behavior of the brawlers creates problems for themselves, which should not bother you.

Do not let yourself be dragged into a useless "bazaar." It is better to ignore such discussions, having figured out beforehand that this is really useless "bazaar", and not hints at why you really screwed up, and not subtly ciphered answers to your actual questions (this also happens).

Questions that you do not need to ask

Here are a number of classic stupid questions and what hackers think about when they are not answered.

Question:

Where can I find the program or resource X?

Answer:

In the same place where I took it, moron, - find it on the Internet. God, do not everyone know how to use Google ?

Question:

How can I do Y with X?

Answer:

If you want to do Y, you need to ask this question without assuming the use of a method that might not be suitable at all. Questions of this kind are often asked by those who not only do not know anything about X, but are confused by the solved problem Y and are too focused on the details of their particular situation. It is usually better to ignore such people until they formulate their problem better.

Question:

How do I configure the shell prompt?

Answer:

If you are smart enough to become interested in this, you will have the intelligence and the independent search for an answer.

Question:

Can I convert an AcmeCorp document to a TeX file using the Bass-o-matic file conversion program?

Answer:

Try and find out. So you, firstly, will know the answer, and, secondly, stop wasting my time.

Question:

My {program, configuration, my SQL statement} does not work

Answer:

This is not a question at all, and I'm not going to ask a dozen more guiding questions to find out what your problem really is - I have more interesting things to do. When I see such questions, I usually send one of the following answers:

  • Do you have nothing more to add to this?

  • Oh, that's too bad. I hope you have already fixed it.

  • And what does this have to do with me personally?

Question:

I'm having problems with the Windows machine. Could you help me?

Answer:

Yes. Eject this Microsoft garbage and put yourself an open source operating system, such as Linux or BSD.

Note: you can ask questions related to Windows machines if they belong to a program that has an official version for Windows, or that interacts with Windows machines (for example, Samba). Just do not be surprised at the answer that the problem is in Windows, and not in the program itself, because Windows is so "crooked" in general, which is often the case.

Question:

My program does not work. I think the problem is in the system component X.

Answer:

Although it is possible that you were the first to find an obvious error in system calls and libraries, which are intensively used by hundreds or thousands of developers, but it is much more likely that you simply did not understand. Serious statements require serious evidence; If you make such statements, they must be backed up with a clear and exhaustive description of the situation in which the failure occurs.

Question:

I'm having problems installing Linux (or X). Could you help me?

Answer:

No. To solve this problem, I need immediate access to your machine. Ask a local Linux user group who can help in person. (A list of user groups can be found here .)

Note: questions about installing Linux may be relevant in the forum or mailing list dedicated to a specific distribution if the problem is related to this distribution, or in forums of local user groups. In this case, do not forget to accurately describe the details of the failure. But first, look carefully on the Web, specifying the keywords "linux" and all suspicious hardware components.

Question:

How do I crack a root user's password / get extended privileges / read someone else's email?

Answer:

You're just a vulgar, if you want to do this, and an idiot, if you ask a hacker to help you.

Good and bad questions

Finally, I'm going to show examples of how to ask questions correctly. I will present a couple of questions about the same problem, one - presumed stupid, and the second - right.

Silly: Where can I find information about Foonly Flurbamatic?

This question simply begs for the answer "STFW" .

That's right: I tried to search the Web with Google using "Foonly Flurbamatic 2600", but I did not get any useful links. Does anyone know where to find information about programming this device?

This questioner already searched the Web and, it seems, he has a real problem.

Silly: I can not compile the foo project code. Why is it incorrect?

He thinks that someone else has screwed up. Self-confident type.

Correct: The foo project code is not compiled in Nulix OS version 6.2. I read the FAQ, but there's nothing about problems with Nulix. Here is the recording of the compilation session; What did I do wrong?

He pointed out the medium, read the frequently asked questions, showed an error message, and he does not think that the cause of his problem is in the error of someone else. This guy can be given a little attention.

Silly: I'm having problems with the motherboard. Could anyone help?

Any hacker will answer this question in his mind, most likely: "Well, maybe you can also help regurgitate and change the diaper?", And press the Delete key.

That's right: I tried X, Y and Z on the S2464 motherboard. When it did not work, I tried A, B and C. Note the strange symptom when trying to make C. Obviously, this garbage does not fool, but the results turn out to be unpredictable. What usually leads to the fact that multiprocessor motherboards with Athlon do not? Do you have any ideas for additional tests that will help to isolate the problem?

This comrade, on the contrary, seems to be worthy of an answer. He demonstrated the ability to solve problems, and not just waiting for the answer to fall from the sky.

In the last question, pay attention to the small but important difference between "Give me an answer" and "Please help me figure out what additional diagnostic actions can be performed to clarify the situation."

In fact, the form of the last question is very similar to that used in August 2001 in the linux-kernel mailing list. I (Eric) then asked this question. I've seen strange hangs on the Tyan S2464 motherboard. The members of the mailing list provided valuable information, which enabled me to get rid of these hangs.

Asking a question the way I did, you give people food for thought; I have made their participation in solving the problem simple and attractive. I showed respect for the abilities of colleagues and invited them to discuss on an equal footing. I also demonstrated that I appreciate their time, describing what deadlocks I have already passed.

In the end, when I thanked everyone and stressed how well the process of solving the problem went well, one of the participants of the mailing list drew attention to the fact that, in his opinion, everything turned out not because I was a "famous person" in this list, But because of the correct form of the question.

Hackers, in a certain respect, very cruel intellectual elite (in the original - meritocracy . I am sure that he is right, and if I screwed up , I would be criticized or ignored, regardless of previous merit. His proposal to describe the situation as an instruction for all others was the immediate reason for the compilation of this manual.

If no response is received

If you have not received an answer, do not take it personally, as our refusal to help you personally. Sometimes the forum participants simply do not know the answer. The lack of an answer is not equivalent to ignoring, although it is difficult to notice the difference from outside.

In the general case, re-sending a question is not a good idea. This will be perceived as meaningless annoyance.

There are other sources of help, which can be accessed, and often more adapted to the needs of beginners.

There are many groups of users in the network and in the field, enthusiastically engaged in software, although many of their participants in life have not written a single serious program. These groups are often formed in order for participants to help each other and new users.

There are also a lot of commercial companies with which you can contract for support, both large and small (some of the most famous are Red Hat and Linuxcare, but there are many others). Do not be intimidated by the idea of ​​paying for support! In the end, if you need a major overhaul of the car engine, you will give it to the workshop and pay for the repairs. Even if the software costs nothing, you can not expect that it will always be supported for free.

Popular software, like Linux, has at least 10,000 users per developer. One person simply can not cope with the support of 10,000 users. Remember that even if you have to pay for the support, it's still much cheaper than when you have to buy the software itself (and the support of private software is usually more expensive and performed by less competent specialists than in the case of open source software Code).

How to give good answers

Be generous. Stress-related stress can make impolite or stupid people who are not.

On the first error, specify in private. There is no need to publicly humiliate a person who, perhaps, is honestly mistaken. A novice user may not know how to search the archives or where the list of frequently asked questions is located or published.

If you are not sure, say so! An erroneous but authoritative sounding answer is worse than an absence of an answer. Do not direct people on the wrong path simply because you are pleased to be in the role of an expert. Be humble and honest; Show a good example for asking and colleagues.

If you can not help, do not interfere. Do not joke about the procedures that can destroy the user's environment - this dolt can take your jokes as a guide to action.

Ask additional questions to get more information. If this is done correctly, the person who asks something will learn, and so will you. Try to turn a bad question into a good one; Remember - we were all beginners.

Although a simple RTFM response is justified when given simply by idler, a link to the documentation (even if it's a set of keywords for Google search) is still better.

If you answer the question, let's answer in essence. Do not suggest hastily invented workarounds if you are using in principle not the tool or the wrong approach. Offer good money. Reformulate the question.

Help the public to benefit from the issue. When meeting a good question, ask yourself: "How do I change the relevant documentation or the FAQ list so that no one asks this question?". Then send the appropriate supplement to those who support these documents.

If you had to conduct a study to answer the question, share your experience, and do not write as if the answer fell on you from the sky. To answer one good question is how to feed the hungry one time, but to set out the research method by example, is to teach you how to get food for life.

Additional sources of information

If you need information on the basics of the operation of personal computers, Unix OS and the Internet, see The Unix and Internet Fundamentals HOWTO .

When creating software or issuing patches for programs, try to follow the principles outlined in the Software Release Practice HOWTO manual.

Thanks

Evelyn Mitchell (Evelyn Mitchell) offered to comment on a number of stupid questions and inspired to write the section "How to give good answers." Mikhail Ramendik gave a number of valuable proposals for improving the document.

Translator's notes

The original article is taken from here .