Jun 10, 2009

How to not ask for help on online forums


Hi.

Well, you know, being a software developer automatically entitles you as your "family IT manager"; there's nothing we can do about it:). That's the way life is.
But if you are involved with an open source project chances are that you participate in that community either asking or answering questions (or both) in project's forums, mailing lists, etc. In the following lines I want to present some points I believe may make the difference between getting an effective answer or getting your question forgotten in some dirty corner in the internet.
  • Screaming for "help" like the good girls on movies is not effective.

  • Don't expect people to do your work. Don't get me wrong, but how many times, for whatever reason, we just cry for help without even trying to figure the problem out first?

  • A simple search in the internet before asking will at least allow you to be more precise or even eliminate the need to ask at all (chances are that someone else already faced the same problem/doubt we are facing). In the open source world there are lots of different places we can look for more information, for instance:
    • Project forums
    • Bug tracker / Issue system
    • Mailing lists
    • Source code (why not :)
    • etc.

  • Focus on what you are trying to achieve not in the problem: consider the possibility that you may be attacking the wrong problem.

  • Provide as much context as possible:
    • Calling your mechanic and saying: "You know what? may car isn't working" is a little bit vague and won't be that helpful. Probably saying: "I turn on the ignition but nothing happens" would be a little bit better (but not that much); providing more information, something like: "I checked it out and I can see that I am not out of gas; also I can see that the battery looks to be ok, but when I try to start the engine nothing happens other than the indication lights turning on" would be much better. I think that you got the idea :)

    • Environment (software version, etc)

    • If you have a stack trace, please, don't hide it from your buddy.

  • Be friendly (in general people is earning nothing, other than personal satisfaction, by helping you). Above anything, don't behave as if the person trying to help you had the obligation to provide you an answer/fix.

  • Reproducible behavior is a lot easier to debug / fix, so, if possible, prepare the smallest test case that triggers the problem. Even better, if you really want to rise the chances of people helping you, use the same test framework used in the project.
I do believe these "principles" apply equally well whenever you are about to submit a new bug/issue report to your favorite project bug/issue track system. I mean, I doubt that filling such systems with duplicated and/or misleading, inconsistent, etc. entries will help anyone in making a better project. 
So, next time we fell compelled to ask for help let's refrain ourselves and first try a little bit harder; I am a fierce believer that this is the best way to learn (trying to fix it ourselves instead of just asking); as a side benefit we'll not disturb other developers letting them to use their time to improve the project  instead of scanning / answering questions that was already answered before.

Last but not least, I don't want to give the false impression that I am against asking for help; I just think that we ought to keep this approach as our last resort, i.e, to situations where it's really not possible to figure out the problem alone (for instance, when a specific behavior/API/whatever is not documented and no information can be found, at least not easily found).

Of course this is not an exhaustive list, so, feel free to comment :)  

Best regards (and lets have fun !)

Adriano

1 comment:

programing-fun said...

My great friend Patrick just point me to this:

http://catb.org/esr/faqs/smart-questions.html

Looks interesting. I'll git it a read latter.

Before I post this comment he also showed me this one:

http://lmgtfy.com/?q=your-question- here

Really nice