As a member of a multitude of programming communities during the past 10-12 years, I've always been frustrated and somewhat intrigued by people who jump onto a board or a Facebook group asking for someone to contact them in order to explain "a thing or two" about technology X or feature Y instead of simply asking the question there and then.

The Xs and Ys are usually so broad that there's no clear indication on whether it's some low-level kernel-layer issue the person is having, or a trivial 30-second CSS problem. So I'd like to stress out a very important, yet neglected part of a developer's toolbox:

You Really, Really Need to Know How to Ask the Right Question

When you're asking a question online, you're more-or-less expecting someone to drop whatever they're doing and spend a certain amount of time to come up with a piece of information, very likely to your significant benefit. Thus, it's almost crucial to make the job as easy as possible for that person.

By spending some time and thoroughly researching a question, and formulating it in a clear, non-ambiguous way, you're not only showing respect towards the person who's about to give you an answer, you're also making sure the right person gives you the answer.

Vague Questions Give Vague Answers

When I see a well-formulated question, it's immediately obvious whether I can answer it constructively. The clearer that is, the more likely I am to write an answer. The less vague the question, the less time needs to be spent on hunting for additional information possibly crucial for a correct answer.

Hunting for details or further explanations of the problem in order to answer someone's question for free isn't a favorite passtime activity of many. The amount of hunting and the degree of triviality of the details are directly correlated with the chances of someone simply giving up and spending their time on something more productive.

Asking the Right Question Is Half Of The Answer

By taking the time to formulate a question, you'll need to explain a lot of the nitty gritty details to yourself before outsourcing that to a random stranger. This is not only a brilliant learning experience in itself, it's also a great opportunity to make sure you're not missing something very obvious.

You'll need to make sure you understand every step of the way up to the point of encountering the problem, and very often that's the key step towards solving the problem on your own. I've spent a lot of time carefully writing forum posts and StackOverflow questions just to get to that "AHA!" moment, resolving the issue by myself.

A Little Effort Goes a Long Way

People wrote entire essays and HOWTOs on the subject. One of my favorites is Eric S. Raymond's How To Ask Questions The Smart Way which should be required reading for anyone asking questions in any shape or form, ever. It's a lengthy, but excellent summary of things to keep in mind when asking for help.

Ultimately, by investing some time into a proper inquiry, you'll not only help yourself by making sure your question gets answered quickly and precisely — you'll also help your fellow programmers in distress by making it easier to find the very likely answer using search engines when they encounter a similar problem.

This is the key non-technical tool in your arsenal: use it well, and everyone benefits; use it badly, and you'll be ignored, get a low quality answer, or be called out for lack of respect towards fellow community members.