Asking for help
This must be one of the most frequent blog post topics on the internet, but I find myself compelled to contribute to the pool anyway.
I spend a lot of time in IRC helping people. I do this for many reasons - people helped me and I owe the community, I learn by teaching, sometimes I get great ideas [ like django-sniplates! ], sometimes I even get work!
But some people just make it hard to help them solve their problem. I don't think it's a deliberate thing, more likely they're too focused on fixing their solution.
Now, there's some very specific wording in that last paragraph. And I use this wording to help show people why they're making it difficult to help them.
They're asking for help to fix their solution.
They really want help to solve their problem.
Too often by the time someone reaches out for help, they're already down the path of their chosen solution. And it's not working. So they come and ask others for HOW to do this, without ever explaining WHY.
And a lot of the time, the WHY is far more important in devising a good solution than the HOW. And quite often the WHY will let people propose a better HOW.
A couple of great quotes I've found that illustrate this are:
Or, in particularly bad cases:
One question I've developed over time is:
What are you trying to achieve?
As opposed to "what do you want to do?", which generally leads them to reiterate their original question, this tends to get people to give you a bigger picture view.
So, what should you do if you want to ask for help? Start with the WHY. Explain the general problem you're trying to solve first. Then explain the specifics of what you need to fix in your solution. Explain why you chose that solution, including any design constraints that lead you down that path.
Don't be surprised if people suggest alternative solutions. It doesn't always mean your solution is wrong -- sometimes it just means you didn't explain enough constraints for people to know why it's not for you.
Just remember. What you're trying to do is solve a problem. There will be multiple solutions, each with their own strengths and weaknesses, and the one you picked may not be tenable.