This article has benefited me a lot. It is worth reading. If everyone also thinks it is good, let's promote it together~~~
---------------------------------
In the hacker world, what kind of answer can you get when you raise a technical question? It depends on the difficulty of digging out the answer, and also on the way you ask the question. This guide is designed to help you improve your questioning skills to get the answer you want most.
First of all, you must understand that hackers only prefer tough tasks or good questions that can stimulate their thinking.
Otherwise, why are we here? If you have a good question that is worth our repeated pondering, we will be very grateful to you. A good question is an inspiration, a great gift, which can improve our understanding, and usually expose problems that we have never realized or thought about before. For hackers, "Well asked!" is a heartfelt great compliment.
Although hackers have a reputation for despising simple questions and being unfriendly, sometimes it seems that we are hostile to novices and those with poor knowledge, but that's not the case.
We don't want to hide our contempt for such people - those who are unwilling to think or don't do what they should do before asking questions. Such people will only kill time - they only want to take but never give, needlessly consuming our time, and we could have spent that time on more interesting questions or more worthy people to answer.
We call such people "losers" (for historical reasons, we sometimes spell it as "lusers").
We are largely volunteers, taking time out of our busy lives to answer questions, and are often overwhelmed with questions. So we ruthlessly filter out some topics, especially abandon those who seem like losers, in order to use time more efficiently to answer the questions of winners.
If you feel that our too arrogant attitude makes you unhappy and wronged, you might as well put yourself in our shoes. We didn't ask you to submit to us - in fact, most of us like fair trade the most. As long as you make a little effort to meet the minimum requirements, we will welcome you to join our culture. But it is meaningless to let us help those who are not willing to help themselves. If you can't accept this "discrimination", we suggest that you spend some money to find a commercial company to sign a technical support agreement. Don't beg hackers for help.
If you decide to ask us for help, of course you don't want to be regarded as a loser, and even less want to be a member of losers. The best way to get an effective answer immediately is to ask questions like a winner - smart, confident, with ideas for solving problems, just occasionally needing a little help on a specific question.
========
Before asking the question
========
Before raising a technical question via email, newsgroup, or chat room, check if you have done:
1. Read the manual carefully and try to find the answer by yourself.
2. Find the answer in the FAQ (a well-maintained FAQ can cover everything :).
3. Search on the Internet (personally recommend Google~~~).
4. Ask your friends who are proficient in this.
When you ask a question, first explain what you have done before; this will help establish your image: you are not a beggar who tries to get something for nothing and is not willing to waste others' time. We are more willing to answer the questions of those who can learn something from the answer.
Think carefully, prepare your question. Hasty questioning can only get hasty answers or no answers at all. The more you show the efforts you have made to solve the problem before seeking help, the more substantial help you will get.
Be careful not to ask the wrong question. If your question is based on a wrong assumption, an ordinary hacker (J. Random Hacker) will usually reply with a meaningless literal explanation, thinking "stupid question...", hoping that you will learn a lesson from the answer to the question (rather than the answer you want).
Never think that you are qualified to get an answer. You are not qualified. After all, you haven't paid any remuneration for this service. You have to "earn" an answer by asking an informative, interesting, and thought-provoking question - a question that has potential contributions to the community's experience, rather than just passively asking others for knowledge.
On the other hand, showing that you are willing to do something in the process of finding the answer is a very good start.
"Can anyone give some hints?" "What's missing in my example?" and "What should I check?" are easier to get a reply than "Please post the exact process". Because you seem to have the ability and determination to complete it as long as someone points out the right direction.
========
How to ask the question
========
------------
Choose the forum carefully
------------
Be careful to choose the occasion to ask the question. If it is described as follows, you are likely to be ignored or regarded as a loser:
1. Post your question in an irrelevant forum.
2. Post a very basic question in a forum discussing advanced skills; and vice versa.
3. Post in too many different newsgroups at the same time.
----------------------------
Use appropriate words, correct grammar, and correct spelling
----------------------------
We have found from experience that careless writers are usually also careless thinkers (I bet).
It is not worth answering the questions of careless people, and we would rather spend time elsewhere.
Correct spelling, punctuation, and capitalization are important.
More generally, if your question is written like a semi-literate, you are likely to be ignored.
If you are asking a question in a forum where the non-native language is used, you can make some small mistakes in spelling and grammar - but never be careless in thinking (yes, we can distinguish the two).
----------------------------
Use a meaningful and accurate title
----------------------------
In a mailing list or newsgroup, a subject title of about 50 words is the golden opportunity to catch the attention of senior experts. Don't waste this opportunity with wordy "Help me" (let alone offensive words like "Help!!!"). Don't try to move us with your pain level.
Don't use spaces instead of the description of the question, even if it is extremely short.
Stupid question:
Help! My laptop can't display normally!
Smart question:
Mouse cursor distorted under XFree86 4.1, display chip of Fooware MV1005.
If you raise a question in a reply, remember to modify the content title to indicate that there is a question in it. A question that looks like "Re: Test" or "Re: New bug" is difficult to get enough attention. In addition, quote and delete the previous content appropriately to leave clues for new readers.
------------------
Accurately describe and provide abundant information
------------------
1. Carefully and clearly describe the symptoms.
2. Provide the environment where the problem occurs (machine configuration, operating system, application program and anything else).
3. Explain how you studied and understood this problem before asking the question.
4. Explain what steps you took to solve it before asking the question.
5. List the recent hardware and software changes that may have an impact.
Try to imagine how a hacker would ask you a question in return, and pre-give him the answer when asking the question.
Simon Tatham has written an excellent short article titled "How to Report Bugs Effectively". It is strongly recommended that you also read it.
--------
Less is more
--------
You need to provide accurate and effective information. This does not require you to simply dump tons of error codes or data completely into your question. If you have a large and complex test condition, try to cut it as small as possible.
The usefulness of this is at least three points. First, it shows that you have made efforts to simplify the problem, which can increase your chance of getting an answer; second, simplifying the problem increases your chance of getting a useful answer; third, in the process of refining your bug report, you may find the problem or make corrections by yourself.
------------------
Only state the symptoms, not the guesses
------------------
It is not helpful to tell hackers how you think the problem is caused. (If your inference is so effective, do you still need to ask others for help?) Therefore, be sure to tell them the symptoms of the problem exactly, and do not add your own understanding and inferences. Let hackers diagnose it.
Stupid question:
I keep encountering SIG11 errors in kernel compilation. I suspect that a flying wire is touching the trace on the motherboard. What is the best way to check this situation?
Smart question:
My self-made K6/233 system, the motherboard is FIC-PA2007 (VIA Apollo VP2 chipset), 256MB Corsair PC133 SDRAM, frequently generates SIG11 errors during kernel compilation. This situation occurs after 20 minutes of booting, and never occurs within the first 20 minutes before booting. Restarting is not helpful, but shutting down for a night can work for 20 minutes again. All memories have been replaced, but there is no effect. The typical compilation record of the relevant part is as follows...
------------------
List the symptoms in chronological order
------------------
The most helpful clues for finding the problem are often a series of operations before the problem occurs. Therefore, your description should include the operation steps and the computer's reaction until the problem occurs.
If your description is long (more than four paragraphs), it will be helpful to briefly state the problem at the beginning, and then describe it in chronological order. In this way, hackers will know what to look for in your description.
--------------
Understand what you want to ask
--------------
Rambling questions are almost endless time black holes. The people who can give you useful answers are also the busiest people (they are busy because they have to do most of the work by themselves). Such people are not interested in unlimited time black holes, so it can be said that they are not interested in rambling questions.
If you clearly state what you need the answerer to do (provide advice, send a piece of code, check your patch or something else), you are most likely to get a useful answer. This will set an upper limit on time and energy, which is convenient for the answerer to focus on helping you, and this is very effective.
To understand the world of experts, imagine that professional skills are abundant resources, while the time for replies is scarce resources. The less time it takes to solve your problem, the more likely you can get an answer from a busy expert.
Therefore, optimizing the structure of the question and trying to minimize the time required for experts to solve it will be very helpful - this is usually different from simplifying the problem. Therefore, asking "I want to understand X better, can you give some hints?" is usually better than asking "Can you explain X to me?". If your code doesn't work, it is much wiser to ask what's wrong with it than to ask others to modify it for you.
------------------------
Don't ask questions that should be solved by yourself
------------------------
Hackers are always good at distinguishing which questions should be solved by yourself; because most of us have solved such questions by ourselves. Similarly, these questions have to be solved by you, and you will learn something from it.
You can ask for some hints, but don't ask for a complete solution.
----------------
Remove meaningless questions
----------------
Don't end the question with meaningless words, such as "Can anyone help me?" or "Is there an answer?".
First: If your description of the question is not very appropriate, asking like this is even more redundant. Second: Because asking like this is redundant, hackers will be bored with you - and usually will use logically correct answers to express their contempt, such as "Yes, someone can help you" or "No, there is no answer".
----------------------------
Modesty is never harmful and often helps a lot x
----------------------------
Be polite, use "please" and "thank you in advance" more. Let everyone know that you are grateful for their time and help.
However, if you have many problems that cannot be solved, politeness will increase your chance of getting a useful answer.
(We have noticed that since this guide was released, the only serious defect feedback from senior hackers is about the requirement to thank in advance. Some hackers feel that the implication of "thank you in advance" is that you will not thank anyone later. Our suggestion is: thank everyone.)
------------------------
After the problem is solved, add a brief explanation
------------------------
After the problem is solved, send an explanation to all those who helped you, let them know how the problem was solved, and thank them again. If the problem has attracted widespread attention in the newsgroup or mailing list, a supplementary explanation should be posted there.
The supplementary explanation doesn't need to be long or in-depth; a simple sentence like "Hello, it turned out to be a problem with the network cable! Thank you all - Bill" is better than saying nothing. In fact, unless the conclusion is really technically content-rich, a short and cute summary is better than a long academic paper. Explain how the problem was solved, but there is no need to repeat the process of solving the problem.
In addition to showing politeness and feedback information, this supplement helps others search for the complete solution that helped you in the mailing list/newsgroup/forum, which may also be useful to them.
Finally (at least?), this supplement helps all those who provided help to get a sense of satisfaction from it.
If you are not an old hand or a hacker yourself, then believe us, this feeling is very important to those mentors or experts you ask for help. Unresolved problems will be frustrating; hackers are eager to see problems solved. Good deeds have good rewards. Satisfy their desire, and you will benefit next time you post a new question.
----------
Still don't understand
----------
If you don't understand the answer very well, don't immediately ask the other party to explain. Just like you tried to solve the problem by yourself before (using the manual, FAQ, Internet, experts around you), try to understand it. If you really need the other party to explain, remember to show that you have learned something.
For example, if I answer you: "It seems that zEntry is blocked; you should clear it first." Then:
A very bad follow-up question: "What is zEntry?"
A smart way to ask is like this: "Oh~~~ I read the help but only the -z and -p parameters mention zEntry and there is no clear explanation in either of them. <Do you mean one of these two? Or did I miss something?>
==========
Think twice before asking
==========
The following are a few classic stupid questions, and what hackers think when refusing to answer:
Question: Where can I find the X program?
Question: My program/configuration/SQL statement is not working.
Question: I have a problem with Windows, can you help me?
Question: I have a problem with installing Linux (or X), can you help me?
Question: How can I crack the root account/steal OP privileges/read others' emails?
Question: Where can I find the X program?
Answer: Just where I found it, you fool - the other end of the search engine. Oh my god!
Is there anyone who doesn't know how to use Google?
Question: My program (configuration, SQL statement) is not working.
Answer: This is not a problem. I have no interest in finding out your real problem - if I have to ask you twenty questions to find it out - I have more interesting things to do.
When seeing this kind of question, my reaction is usually one of the following three:
1. Do you have anything else to add?
2. Really bad, I hope you can get it done.
3. What does this have to do with me?
Question: I have a problem with Windows, can you help me?
Answer: Yes, throw away the lousy garbage of Windows and switch to Linux.
Question: I have a problem with installing Linux (or X), can you help me?
Answer: No, I can only find out the problem by doing it on your computer in person.
Still go to your local Linux user group to seek hands-on guidance (you can find the list of user groups here).
Question: How can I crack the root account/steal OP privileges/read others' emails?
Answer: Wanting to do this shows that you are a despicable person; wanting to find a hacker to help you shows that you are an idiot!
==============
Good questions, bad questions
==============
Finally, I will give some examples to illustrate how to ask questions smartly; two ways of asking the same question are placed together, one is stupid, and the other is wise.
Stupid question: Where can I find information about Foonly Flurbamatic?
This way of asking is nothing but to get a reply like "STFW".
Smart question: I have searched Google for "Foonly Flurbamatic 2600", but didn't find useful results. Who knows where to find the information for programming this device?
This question has been STFW, and it seems that he really has encountered trouble.
Stupid question: The source code I got from the FOO project can't be compiled. Why is it so bad?
He thinks it's all someone else's fault, this arrogant guy.
Smart question: The code of the FOO project cannot be compiled under Nulix 6.2. I have read the FAQ, but it doesn't mention problems related to Nulix. This is the record of my compilation process. Is there anything I did wrong?
He explained the environment, read the FAQ, pointed out the error, and he didn't shift the responsibility of the problem to others. This guy is worth paying attention to.
Stupid question: There is a problem with my motherboard, who will help me?
The usual answer of an ordinary hacker to this kind of question is: "Okay, do you also want me to pat your back and change your diaper?" and then press the delete key.
Smart question: I have tried X, Y, and Z on the S2464 motherboard, but nothing works, and I have tried A, B, and C. Please pay attention to the strange phenomenon when I try C. Obviously, there is a contraction in the sideband transmission, but the result is unexpected. What are the usual causes of sideband leakage on a multi-processor motherboard?
Who has a good idea what tests I should do next to find out the problem?
From another perspective, this guy is worth answering. He shows the ability to solve the problem instead of waiting for the answer to fall from the sky.
In the last question, pay attention to the subtle but important difference between "Tell me the answer" and "Give me hints and point out what diagnostic work I should do next".
In fact, the latter question originated from a real question on the Linux kernel mailing list in August 2001. I (Eric) was the one who asked the question. I observed this unexplainable lock-up phenomenon on the Tyan S2464 motherboard, and the list members provided important information to solve that problem.
Through my questioning method, I gave everyone something worth pondering; I made it easy for people to participate and be attracted. I showed that I have the same ability as them and invited them to discuss with me. I told them the detours I have taken to avoid them wasting time again, which is a respect for the value of others' time.
Later, when I thanked everyone and appreciated that the program (referring to the discussion in the mailing list - translator's note) worked very well, a member of the Linux kernel mailing list (lkml) said that the problem was solved not because I was a "celebrity" in this list, but because I asked the question in the correct way.
We hackers are, to some extent, people with rich knowledge but lack of human touch; I believe he is right. If I asked the question like a beggar, no matter who I am, I would definitely annoy some people or be ignored by them. He suggested that I write down this matter and give some guidance to the person who wrote this guide.
================
What if you can't find the answer
================
If you still can't get an answer, please don't think that we think we can't help you. Sometimes it's just that the person who sees your question doesn't know the answer. No response doesn't mean you are ignored, although it is undeniable that this difference is difficult to distinguish.
In general, simply reposting the question is a very bad idea. This will be regarded as meaningless noise.
Noise.
You can get help through other channels, which are usually more suitable for the needs of beginners.
There are many online and local user groups, composed of enthusiastic software enthusiasts (even if they may never have written any software themselves). Usually, people form such groups to help each other and help novices.
In addition, you can seek help from many commercial companies, whether they are large or small (RedHat and LinuxCare are two of the most common examples). Don't be frustrated because you have to pay to get help! After all, if the cylinder seal ring of your car engine bursts - it is completely possible - you still have to send it to the repair shop and pay for the repair. Even if the software didn't cost you a penny, you can't demand that technical support is always free.
For popular software, like Linux, each developer has at least tens of thousands of users.
It is根本 impossible for one person to handle the help calls from tens of thousands of users. You know, even if you have to pay for help, what you pay is negligible compared to the need to buy the same software (usually the technical support cost of closed-source software is much higher than that of open-source software and the content is not so rich).
----------------
Thank you to those who have read this
----------------