Subject:      Re: TIP: How to post good questions
From: (Mark-Jason Dominus)
Date:         1998/06/28
Message-ID:   <6n67hm$7gb$>
Newsgroups:   comp.lang.perl.misc 

In article <>, I R A Aggie <> wrote:

    >Dominus wrote:
    >>``How do I use X to accomplish Y?'' There's nothing wrong with this,
    >>except that sometimes X is a chocolate-covered banana and Y is the
    >>integration of European currency systems.  

A less abominable example of this that comes up all the time is

	I have an array of strings.  How do I check whether the array
	contains a certain string?

Usually (not always, but usually) the best answer is to `unask the question':

    You should be using a hash, not an array.

I wish I had a convenient term for this kind of mistake. The general case is:

  1. Someone wants to accomplish task Y.
  2. They determine that a way to accomplish Y is to use facility X.
  3. There is a sub-task of Y, say Z, for which X is ill-suited.
  4. They come into the group and ask `how can I use X to accomplish Z?''

This is a problem for people here trying to answer the real question, which is:

	How can I accomplish Y?

But nobody can answer this question because the querent never mentioned Y at all, and so nobody knows that the real goal is to accomplish Y. Instead, they are likely to get a long list of more or less hacky ways to use X to accomplish Z, which is unfortunate.

A more experienced programmer would not have chosen to use X in the first place. A more experienced programmer would have determined that W, not X, was the appropriate facility for accomplishing task Y.

I like to try to guess Y, because I often feel that the best advice I can give is `use W instead of X', and that the world is full of other people who will suggest the hacky workarounds. Guessing Y is very diifficult and error-prone. Worse, it's personally risky. Even when I am right, people may suspect that I'm being facetious. (``The guy asked a perfectly clear question; why didn't you answer it?'') When I'm wrong, it's even worse, because I can't defend myself against charges of facetiousness by pointing out that my advice was good.

Of course, the environment we have here where people do make facetious answers is conducive to that sort of misunderstanding. I wish people wouldn't do that, because it makes the environment distrustful, and the risky answers that I like to give are unsafe in such a distrustful environment.

Return to: Why Questions go Unanswered | Universe of Discourse main page | What's new page | Perl Paraphernalia