Asking for and Giving Help

As you can probably imagine, I'm very used to giving help. Believe it or not, I ask for help quite a bit too. My years of development experience and asking for help have taught me quite a few lessons, lessons I'm dying to share with all of you. Here are my general thoughts on asking, giving help, as ways you can improve both sides of the process.

Asking for Help: Give Details!

There's absolutely nothing more infuriating than someone not providing enough detail about a given issue. Before you approach anyone for help, provide any or all of the following pieces of information:

What are you expecting to happen?

What are you seeing happening?

What are you seeing within the console? Any error messages firing?

What browser, browser version, and OS are you using?

What version of Moo / jQuery / or any external library are you using?

What's different between a working example and your test page?

What have you tried to adjust to fix the issue?

Is there a URL available so others can see the issue and debug it?

Where else have you searched for an answer? Google? IRC? Forms? Documentation? MDN?

These pieces of information are absolutely invaluable to anyone you'd like to help you.

Asking for Help: Research First!

How often have you had someone ask you a question which the first search result of Google could tell you? Consistently asking others a question that Google can answer in the first result will brand you as an annoyance. The urgency with which you ask a question is relative to the urgency of the situation, but if you can take the time to do research yourself, do it and a lot of it.

Echo: Don't Ask The Same Questions Twice

Asking the same questions repeatedly will make you invisible; i.e., no one will pay attention to your questions. One of the reasons I started this blog was to keep it as a reference for running into the same issues in the future. I'm not saying you need to start a blog, but I am saying that you need to find a method for archiving questions you've asked and answers to receive.

Giving Help: Be Patient

If every time you ask a question you act as though it's a "code red" situation, you'll again find yourself to be an annoyance. Also realize that doing so is unfair to your colleagues. If you can ask for help with plenty of time to spare, you're more likely to be greeted with a positive attitude from those you're asking to help you. Also realize that your colleagues have their own problems and they may not get back to you right away.

Give Back: You Get What You Give

Help should be very much like BitTorrent peers: the desired 1:1 ratio. Simply sponging off of others isn't acceptable; in order to receive help, you should also be actively helping others, be it you colleagues, IRC users, forum posters, etc. Building relationships in the community is the best way to build a consistent help pipeline.

THE GOLDEN F'IN RULE OF HELP!

Before you send the message asking for help, re-read your message and ask your self this: can the person I'm asking for help from respond with more questions? If they can, answer them before you send the message. Why? Because of this: the secret to effectively asking for help is giving the other person so much information about the problem and how you've tried to resolve it that they cannot possibly ask a question you could have answered before you sent the help request! Why? Because that's a wasted interaction, and wasted interactions increase the time in problem resolution for both parties.

Those are my rules and advice for asking for help. As you can probably imagine, I'm asked for help on IRC and email almost hourly. I've also led projects where many parties were involved, and knowing the golden f'in rule above has lead to quicker answers and less stress for everyone. If you have rules to add, please share them, as better help requesting and providing will make us all better developers!