Dotnet Zen: Learning to Wipe Your Own Ass.

"The greatest challenge to any thinker is stating the problem in a way that will allow a solution." -Bertrand Russell.

I try to be patient, really I do. But the "poor little me" pattern just keeps coming up in all these newsgroup posts and forum messages. Let me explain; basically it works like this:

1) Post to a forum or newsgroup. Typical Subject, "Need help, SelectedIndexChanged Event of a combo box".

2) User posts some sample code. First thing you see is that they haven't a clue whats going wrong or where it may be happening. It doesn't look like they've even tried.
(Sometimes they don't even post any sample code; they expect you to be telepathic - I just reply asking them for Jon Skeet's quintessential "Short But Complete" code sample.). I'm a big fan of fellow MVP Skeet's work, he is pedantic to a fault, but that serves a valuable purpose for clarity, and I commend him for it.

3) User usually says something like "Please help" or even "URGENT". (When you see the "URGENT" or "Email me the answer right away", this is usually disingenuous and I feel no remorse about ignoring the post completely at that point).

4) Now you look at their code and ONE THING jumps out at you, usually IMMEDIATELY:

There is no evidence of the keywords TRY CATCH or EXCEPTION anywhere in their code sample.


So the response (at least from me, I have seen that others get suckered into this little game and invariably end up going around in circles with the OP):

Dear OP:

You need to show that you have set breakpoints to test your code and that you know how to wire up your methods with Try / Catch Exception blocks so that you can get an idea on your own what may be going wrong.
if you need help on how to do this visit here (url of good resource on the basics).

Now this is the quality approach. It's like putting the old Chinese proverb about "teaching a man to fish" into action. When I was a C# "Baby" (probably around early 2002) I once posted to the MS C# newsgroup that I couldn't override a constructor for a ServicedComponent. It was Tomas Restrepo who responded explaining simply that :

"The problem is not in the override, it's that you maked Construct public, while it is protected in ServicedComponent. Just change the line above to: protected override void Construct(string s) "

The moral of this little history lesson is that I suddenly learned everything I needed to know about how to override a method in a base class and why I needed to pay attention to the base class's access modifier.

The REASON why I learned this lesson, and why Tomas was able to kindly respond so quickly and effortlessly to help me, was that I had learned the basics of how to post a newsgroup question with sufficient information to allow (and encourage) an appropriate answer.

I had already learned to post sufficient information to get a quality response. You can still look at the original thread courtesy of google groups if you like.

Now the moral of this story is very simple although it may be painful to some:

When you gently but firmly teach others how to wipe their own asses, instead of handing it to them on a silver platter, everyone is enriched. The User, because they are being encouraged to discover the ground rules - that at least a modicum of effort and self-sufficiency is requred to get noticed with a problem. You, because you conserve your energy as a potential "guru". And everybody else who reads it, because they get the same message. The Zen Masters are masters because they've been taught to study hard and mightily and to condition themselves to be able to endure pain in the quest of self-knowledge. They pass these teachings on to their disciples, their students who would be Zen Masters.

The Zen student knows better than to ask "Hey, make me a Zen Master, it's urgent, email me the answer right away."

There is a lesson for the user also -- the person who needs the help:
1) Learn good communications skils when you need to post to a forum asking a question. The clearer and more complete your post, the more likely you'll have a good response. Often, if you don't provide sufficient information in your original question, many people won't even bother to respond to tell you that they need more information! And so, you won't get much out of it.
2) You need to take a certain level of responsibility to show that you have at least tried - on your own - to equip yourself with the tools to solve your own problems. In other words, if your ComboBox's SelectedIndexChanged event "doesn't work", but you haven't even bothered to put a Try-Catch block in there to see if the SelectedValue is null, then don't expect sympathy!

Take my advice, be gentle, yet firm, in insisting that others learn to wipe their own asses as you have learned to wipe yours, or you do them a grave disservice.

Political pundits might opine that this is the "difference between Conservatives and Liberals". I don't think the lines are that clear personally, but the message certainly is.