For readers who are unfamiliar with it, StackExchange is a group of discussion boards whose novel approach of peer voting and meritocratic moderation has revitalised the forum as a source of interactive help on the internet. Having learnt how the community works (at StackOverflow, for programming questions) I’ve a few thoughts on how I think the site can be best used.
Feel free to offer feedback in the comments. Bear in mind that this is, of course, all IMO, and probably also slightly OCD. Lastly, do read the FAQ.
It should be obvious that you should look into your problem first yourself. If you are aware your question doesn’t demonstrate prior research, don’t just say “I’ve googled but I couldn’t find anything”; say instead what you did find, and why it didn’t solve the problem. You don’t have to write an essay here, but do try to show that you’ve made an real effort (if only to save your question from down-vote oblivion).
Make questions self-contained as much as you can. Hyperlink unusual references e.g. uncommon software. It is much better to trim examples down to the smallest case; if you must post large items they are better as a Gist or on a pasteboard, to avoid cluttering the question. Avoid linking to filesharing sites such as Rapidshare, since they are often a pain to download from, and may contain malicious payloads.
In general, don’t ask the same question in multiple places; this comes from standard netiquette about crossposting. Ask it on one site, and if it fails to get an answer after a reasonable period of time, ask it elsewhere; don’t carpet-bomb several forums in succession. In cases where you ask the same question on a different forum, always hyperlink to your previous question(s), so people can check if it is already answered. Say something like “I asked this on the Ubuntu forum (see <link>) but didn’t get a solution” in your question.
If you are asked for clarification in the comments, try to avoid too many, or lengthy, amendments in your own comments. It is much better to edit your question and to add the requested information there; you can then respond to the effect of “Thanks @helpfulperson, I’ve updated my question”. This helps ensure questions remain intelligible to new readers after you’ve stopped participating, and saves the need to read through pages of comments to understand the question. For the same reason, it is usually better to improve a post transparently, rather than appending several “Edit:” postscripts. Previous versions are all recorded, so users specifically wanting to see an old version may do so without you needing to clarify what has been added.
Don’t completely change the substance of your question, since this will be frustrating to people who are in the middle of answering it.
Spelling and phraseology
Never, ever, use the phrase “it doesn’t work”, either in your initial question, or in response to someone’s contribution. Always, without fail, explain what program output you expected, and what you got. If someone provides some help, try to use that as a hint for further research and experimentation, rather than something that can be used verbatim – remember that you’re the only person who knows your exact use-case.
Similarly, the phrase “Technology X doesn’t work” is best avoided; it carries with it the implication that you believe you’re not doing anything wrong, and X has never worked for anyone.
Sentences start with a capital, and finish with a full stop, question mark or exclamation. They are usually grouped into paragraphs of three or four sentences. Don’t use more than one consecutive query or exclamation mark, and don’t overuse the ellipsis dots (…), which are rarely necessary in well-written text. Indent your code/markup with the ‘code’ button, for readability.
Don’t add ‘help please’, ‘urgent’ or beg for answers. Try to ask your question in good time.
Try to use correct English spelling, and observe the correct case of proper nouns and acronyms as much as possible. Equally, native English speakers are encouraged not to fuss over minor spelling mistakes – so long as you appear to made an effort with your question. Avoid chat-style words (u, ur, sry, pls, thx, teh), though common acryonyms are generally accepted (imo, afaik, fwiw).
Don’t add code in comment boxes unless it’s a small snippet. Where you do, use a pair of backtick characters (`) to render it in a preformatted style.
It is preferable to update a question than to add significant details across a comments conversation. Updating the question as it should have been asked saves time for new readers, who won’t then have to wade through a conversation to determine the crux of the question.
If you have a small supplementary question, by all means ask it in the comments, but don’t overdo it. Respect the time of the people who help you: if you have a substantial additional query, consider asking a new one. If you like, ping someone who has helped you before with a link to the related question, since they may well be happy to assist you again.
On the Internet, it is considered poor form to ask for solutions to be sent to you via a channel other than the one you asked the question on. So, if you ask a query on StackOverflow, you should be willing to revisit the same to view any responses. Similarly, if you receive assistance from someone, don’t ask for their email/Skype/whatever, since it will look like you’re just wanting a free private support channel. (If you really need private or immediate support, then consider hiring a professional from a freelancer website).
Voting and reputation
Downvoting answers on questions you have asked yourself can come across as ingratitude. So, downvote on poor answers to other people’s questions by all means, but be very wary of doing so on your own. Be grateful that someone took the time to help you, even if it wasn’t quite what you were looking for. Downvote on these only in the rarest of situations.
The community really likes it when people contribute, and conversely is not impressed by people who only take help but never give it. Ergo, if you are new, try not to ask for excessive help from one contributor, especially on items that you could research yourself. Chat requests from beginners are fine, but bear in mind that these can be time-consuming.
If you have low reputation points, go easy on people for having a low accept rate. StackOverflow tries to be a meritocracy – you earn the right to criticise! And, always, do it nicely.
Talk to people who help you, if only to thank them. Don’t just tick a question and believe that exempts you from ordinary politeness – it doesn’t. Similarly, don’t abandon questions – always go back to them, either to encourage more responses, or to say you no longer need the assistance. Discuss solutions in the comments under each answer, as appropriate. However, don’t cut-n-paste responses to all respondents, since this looks like spam (so don’t add “Please can you explain more about that” to every answer – yes, some people do do this!).
If you’ve fixed it, add your solution as an answer, not as a comment or question edit. Adding an answer ensures that the question-answer format remains readable for people who read it in the future. If you received useful help from others, consider accepting a answer even if you solved it mostly yourself – this is good grace.
If you no longer need a response, add a comment. Don’t remove the question text, nor attempt to delete it – this can be extremely frustrating for people in the middle of writing an answer, since it renders their effort wasted. If someone answers the question, consider awarding ticks/points even if it is no longer useful to you; it may still be of use to someone else, and good effort deserves to be rewarded.
If you find that your question would be better asked on a different StackExchange site, flag it to the moderator. Do not re-post your question there, and again, don’t try to delete the original.
It is best to sign up with a distinctive username, rather than the default @userxxxxxx, since it is friendlier and less anonymous. A few biographical titbits and contact details are often appreciated too.
Be careful with accidental discrimination. Don’t assume that your interlocutors are male, unless it is clear from their profile (so, “hi guys” is probably best avoided, since it is not entirely gender non-specific, and salutations are discouraged anyway). Avoid making negative generalisations related to nationality, such as “the poor quality of ten-a-penny freelancers from Elbonia”.
That’s the brain dump for now – phew.
1 Mar 2013: added in a new paragraph regarding requests for offline interaction.