I've spent more time than I would like to admit on various Q&A sites and forums related to development, where I have answered thousands of questions. Generally, the questions stay within the confines of such forums, however, after waking up to my personal inbox being flooded with a string of questions, I thought I would take some time to blog about it.

These e-mails and messages generally come from folks that I have never interacted with before, but they simply know that I "answer questions or solve problems". They generally look something like this.

These are actual complete e-mails that I have received.

I don't have a problem with people asking for help, that's why I participate in such communities. My problem is that there are a lot of wrong ways to ask for help, specifically bad questions.

This post is going to cover a few of the reasons why such direct queries go unanswered, how to go about getting your question answered, and introducing a few steps that you should take before asking a potentially bad question.

Getting your question answered

There are a lot of unanswered questions out there across various forums and sites like Stack Overflow, and the primary reason - most of them are just plain bad questions.

If you want to go about asking a question, consider reviewing over the following checklist to hopefully reduce this risk of your question joining the unanswered ether.

Asking the (right) question

Alright, so you've scoured the web. You've performed countless searches on every combination of search terms and synonyms imaginable, and still nothing.

It may be time to ask a question. Let's consider a few things that you should be mindful of when doing this.

Have a few hours gone by as you've sat there constantly refreshing the screen and still nothing? If you have a deadline quickly approaching, you might come to the realization that is the focus of the next paragraph: your problem is not their problem.

Your problem is not my problem

I know it might sound crass, but it's true.

All too often, questions and requests are riddled with urgency. An upcoming deadline hours away, a project that is due in a few hours, etc. As much as I would love to help you, there simply isn't enough time in the day. I have my own deadlines, projects, and time outside of the development realm that I value more than anything.

Avoid any terms related to urgency within your questions such as "HELP!", "URGENT", or any other phrases that would match this regular expression: [A-Z!]+.

As you probably remember from school, procrastination can be a terrible thing, and the same holds true in software. This is why getting a start early can provide ample time to get any major issues that you encounter resolved (either on your own or through an external site).

This is a lesson that everyone needs to learn at some point or another, but being in a hurry will generally not get your issue resolved any faster. Take the necessary amount of time to form a well-understood question and ask it in the appropriate venue, ensuring that there is enough time for folks to see it before you have to actually get the problem resolved.

Be a professional (not an ass)

Deadlines and urgency can create a great deal of stress, anyone that has developed software professionally knows this can be a huge understatement.

Stress is not an excuse to be an ass though. I cannot count the number of times I have seen the poster of an answer simply blasting someone that is trying to help them solve their problem. Shouting "that didn't work" in all-caps, or "that's a stupid answer" isn't going to win you any favors, and it certainly isn't going to lure anyone to stepping in the ring to provide you any more help.

Remember that these folks that are helping you are volunteering to do so. They are spending their own time and effort just to help you get through a tough spot, so keep that in mind before you go caps-lock on them.

Folks are taking their own time to answer your question, for at most a few imaginary internet points, so just keep this in consideration during the entire process.

This can be especially bad when you get a hold of someone's e-mail and decide to stop posting on websites and to start e-mailing folks directly.

Getting (Too) Personal

Let me preface this with saying, I don't mind getting emailed when people need help. I'll gladly set aside some time and get back with you if you do so - politely.

The most common e-mails that I receive generally point to an already posted problem on a forum or on Stack Overflow asking for help. And generally, once I have visited the link, there's usually already a solution present, so no big deal. If not, I'll take a bit of time and try to help out if I can.

It's the other set of e-mails that aren't as fun to answer, and seldom warrant a response. This is because they don't follow any of the rules I defined earlier on asking questions.

This changes quite a bit when you are reaching out to someone directly. Some things stay the same, but this has its own bullet points,

I don't want to dissuade anyone from reaching out to an individual if you need help, but please, please ensure that you have adequately exhausted your other resources first. The last thing I want is to see another e-mail as to "why jQuery isn't working".

Summary

I hope this post didn't come off as me just ranting about your questions, nor do I want you to think that this was specifically targeted at any one individual. The post was about just some of the steps that you can take to avoid asking a bad question, which will inevitably lead to bad answers, or more likely, no responses at all.

Being resourceful is one of the most important abilities that you can have as a developer, and if you can find your own answers or solve your own problems, then you'll likely spend more time getting things done than wondering why they aren't working.

If you do encounter a problem that passes the Google test again and again, and a solution continues to elude you, then you should ask a question. Just ensure that you have given it plenty of thought and actually taken the time to make the question worth answering.

And the question better not be "why isn't jQuery working".