Thursday 3 July 2014

How to Ask a Question So You Get the Help You Need

Before asking a technical question by e-mail, or in a newsgroup, or on a website chat board, do the following:
  1. Try to find an answer by searching the archives of the forum you plan to post to.
  2. Try to find an answer by searching the Web.
  3. Try to find an answer by reading the manual.
  4. Try to find an answer by reading a FAQ.
  5. Try to find an answer by inspection or experimentation.
  6. Try to find an answer by asking a skilled friend.
Be sensitive in choosing where you ask your question. You are likely to be ignored, or written off as a loser, if you:
  • post your question to a forum where it's off topic
  • post a very elementary question to a forum where advanced technical questions are expected, or vice-versa
  • cross-post to too many different newsgroups
  • post a personal e-mail to somebody who is neither an acquaintance of yours nor personally responsible for solving your problem
The first step, therefore, is to find the right forum. Again, Google and other Web-searching methods are your friend. Use them to find the project webpage most closely associated with the hardware or software giving you difficulties. Usually it will have links to a FAQ (Frequently Asked Questions) list, and to project mailing lists and their archives. These mailing lists are the final places to go for help, if your own efforts (including reading those FAQs you found) do not find you a solution. The project page may also describe a bug-reporting procedure, or have a link to one; if so, follow it.

On mailing lists, newsgroups or Web forums, the subject header is your golden opportunity to attract qualified experts' attention in around 50 characters or fewer. Don't waste it on babble like Please help me (let alone PLEASE HELP ME!!!!; messages with subjects like that get discarded by reflex). Don't try to impress us with the depth of your anguish; use the space for a super-concise problem description instead.
One good convention for subject headers, used by many tech support organizations, is object - deviation. The object part specifies what thing or group of things is having a problem, and the deviationpart describes the deviation from expected behavior.
Stupid:
HELP! Video doesn't work properly on my laptop!
Smart:
X.org 6.8.1 misshapen mouse cursor, Fooware MV1005 vid. chipset
Smarter:
X.org 6.8.1 mouse cursor on Fooware MV1005 vid. chipset - is misshapen

More generally, imagine looking at the index of an archive of questions, with just the subject lines showing. Make your subject line reflect your question well enough that the next guy searching the archive with a question similar to yours will be able to follow the thread to an answer rather than posting the question again.

Out of courtesy, do not hijack someone else's thread. Start your own. You may think you have the same problem but you might not. Keep your question separate from others. 

Write in clear, grammatical, correctly-spelled language

We've found by experience that people who are careless and sloppy writers are usually also careless and sloppy at thinking and coding (often enough to bet on, anyway). Answering questions for careless and sloppy thinkers is not rewarding; we'd rather spend our time elsewhere.
So expressing your question clearly and well is important. If you can't be bothered to do that, we can't be bothered to pay attention. Spend the extra effort to polish your language. It doesn't have to be stiff or formal — in fact, hacker culture values informal, slangy and humorous language used with precision. But it has to be precise; there has to be some indication that you're thinking and paying attention.
Spell, punctuate, and capitalize correctly. Don't confuse its with it'sloose with lose, or discrete with discreet. Don't TYPE IN ALL CAPS; this is read as shouting and considered rude.

If you are asking questions in a forum that does not use your native language, you will get a limited amount of slack for spelling and grammar errors — but no extra slack at all for laziness (and yes, we can usually spot that difference). Also, unless you know what your respondent's languages are, write in English. Busy hackers tend to simply flush questions in languages they don't understand, and English is the working language of the Internet. By writing in English you minimize your chances that your question will be discarded unread.
If you are writing in English but it is a second language for you, it is good form to alert potential respondents to potential language difficulties and options for getting around them. Examples:
  • English is not my native language; please excuse typing errors.
  • If you speak $LANGUAGE, please email/PM me; I may need assistance translating my question.
  • I am familiar with the technical terms, but some slang expressions and idioms are difficult for me.
  • I've posted my question in $LANGUAGE and English. I'll be glad to translate responses, if you only use one or the other.

Be precise and informative about your problem

  • Describe the symptoms of your problem or bug carefully and clearly.
  • Describe the environment in which it occurs (machine, OS, application, whatever). Provide your vendor's distribution and release level (e.g.: Fedora Core 7Slackware 9.1, Windows 7 Home or Windows 7 Professional, etc.).
  • Describe the research you did to try and understand the problem before you asked the question.
  • Describe the diagnostic steps you took to try and pin down the problem yourself before you asked the question.
  • Describe any possibly relevant recent changes in your computer or software configuration.
  • If at all possible, provide a way to reproduce the problem in a controlled environment.
Do the best you can to anticipate the questions the person answering will ask, and answer them in advance in your request for help. Don't ignore their questions, don't make them go back and forth with questions to try and figure out your problem. 

If you are asked a direct question, don't ignore it. Please give a concise answer. People are very quick to dump a question when they don't get straight answers. 

Remember to describe your problem with details, try to anticipate any questions, be clear and concise, spelling counts, and use good manners.