http://www.perlmonks.org?node_id=646123

There was a post earlier today commenting on the dearth of documentation of how to use STDIN, as a simple program didn't do what he expected it to. (He tested for string equivalence with a single equal-sign, rather than what the inner C++ programmer wants (==) or what Perl wanted (eq).)

Several thoughtful people explained his error and how to correct it, or directed him to a CPAN package to better manage his I/O.

My question is: Are we helping people like this by providing the answer, or should we attempt to teach them to think like a programmer by asking a series of questions, leading the original questioner to find the solution on his own?

This is a concern for a very limited subset of posts. Questions about the fine points of a package, or how something could be designed better, etc. don't fall into the area I'm commenting on.

It just seems that there are people trying to program who don't try to be analytical when they encounter a problem. They don't write toy programs to address the question, they don't use the debugger or print statements, they don't Google or Super-search. They just say "Help!".

Are we doing them more harm than good by giving them the answers they ask for?

(I've been married to a High School teacher for 32 years; does it show? 8-) )

  • Comment on Should a Socratic Dialogue be attempted?

Replies are listed 'Best First'.
Re: Should a Socratic Dialogue be attempted?
by BrowserUk (Patriarch) on Oct 20, 2007 at 11:49 UTC

    For my part, I have no problem giving straight answers to clear questions, even if they are simple, newbie questions, because for the most part, all the newbies that come here asking newbie questions seem to rapidly evolve to asking better questions and answering other newbies. Real circle of knowledge stuff.

    There are exceptions of course, but in 5 years there are only two that come to mind that are still around after more than a few weeks apparently asking obvious questions. In truth, both are making progress, it's just slower than for others, and Socratic leading wouldn't help.


    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.
Re: Should a Socratic Dialogue be attempted?
by roboticus (Chancellor) on Oct 20, 2007 at 13:35 UTC
    apl:

    I, too, have wondered at the helpfulness of spoonfeeding answers to people. Lately, though, I don't worry about it so much. Even though most questions will get some "helpful" code, they nearly also come with some "hint" answers. I've come to the (tentative) conclusion that the current system works well.

    From the perspective of the questioner:

    (1) Some people are at the very start of their programming journey, and aren't used to thinking analytically and/or aren't familiar with the reference materials. This group will likely learn quickly from the hints, even though their immediate problem is solved.
    (2) Other people won't improve their skills using the hints, nor pay attention to them once they have their answers. So the answer isn't likely to hurt them any more than the hints would help.
    (3) People in the intermediate camp can easily learn from the answer and/or the hint.

    For all three groups, I think we have a net positive effect. As far as the person answering the question, it's often hard to come up with a really good hint (other than module references or RYFM), or you've got a code response in mind. At other times, the question just calls out for a bit of coding, so rather than providing a hint, the answerer goes off and codes for a little while for fun. Even the most socratic among us will drop a bit of code rather than a hint.

    Ultimately, PM is for the people who are here. If a question invites some coding and experimentation, that'll just improve the answerers skills. So even a code answer can easily raise the overall level of discourse. And with enough people answering, there are always going to be answers and hints.

    Finally, different people have different learning styles. So if we all answered with some hints, we'd only cultivate people who learn well with hints. I think our current spectrum of answers gives everyone the opportunity to learn in their favorite way. So even though I'd prefer more hints than answers, I'm happy with the status quo. (Yes, I'm aware of the fact that many of my own answers tend to be chunks of code, rather than hints!)

    So relax, and enjoy a nice glass of hemlockbeer!

    ...roboticus

      I concur with roboticus, In an ideal situation one would be able to look at previous posts from the Monk asking the question and tailor a answer to suit their particular learning style or needs.

      Habitual homework questions and those who want their work done for them aside.
      A pointer to a node or reference, a snippet of code or an example all have their place.
      It is not possible to take all into consideration as a matter of course and we tend to reply in the style that suits our own learning style.
      As this is a large community the various learning styles are well represented and so a variety of answers are posed which should then suit the questioners learning style of choice.
Re: Should a Socratic Dialogue be attempted?
by Krambambuli (Curate) on Oct 20, 2007 at 06:59 UTC
    Great question, speaking out what probably every monk here feels now and then.

    In earnest, The Importance of Being Socratic cannot be overvalued, IMO.

    But on the other side, how many of us do have the talent to be really Socratic without looking harsh, annoying or rude?

    It's a fine line there, and probably more often then not we do people less harm by giving them the fish and just telling them about the fishing rod then insisting on having them catch the fish by their own.

      Your choice of metaphors is apt. As I have all-too-often said:,
      Give a man a fish, and he'll eat for a day;
      Teach a man to fish, and he'll spend his life savings on fishing tackle.
      This is not necessarily a bad thing -- the Perlish equivalent might be:
      Give a man a snippet, and his program will run for a day;
      Teach a man to use PM, and he'll never get back to that code he was supposed to write.
      Seriously, though, I think that the need for Socratic learning is related to the kind of question being asked. A general "what method do I use" question needs multiple answers, per TMTOWTDI. But a specific "why is this code fragment broken" question probably deserves a more direct answer.

      Determining whether or not I actually provide direct responses when I should do so is left as an exercise to the reader.

        Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life. (Terry Pratchett)


        holli, /regexed monk/
Re: Should a Socratic Dialogue be attempted?
by educated_foo (Vicar) on Oct 20, 2007 at 15:50 UTC
    As a TA, I have often been faced with this dilemma: should I just give the student the answer, or try to make him come up with it himself? I think it helps to look at the bigger picture, and ask which approach will make the student's life better overall. Will the annoyance and time spent on being "Socratic" actually be paid for in later problem-solving? It also helps to compare how much time you spend answering the question with how much time they waste floundering around.

    Also, I think the discipline as a whole leans too far towards the "RTFM" approach. Anyone who has spent some time as a programmer has probably learned to exhaust all possible options before asking a human being even the smallest question. So it's probably best to err on the side of being helpful rather than didactic.

Re: Should a Socratic Dialogue be attempted?
by neniro (Priest) on Oct 20, 2007 at 09:54 UTC
    My question is: Are we helping people like this by providing the answer, or should we attempt to teach them to think like a programmer by asking a series of questions, leading the original questioner to find the solution on his own?

    Working myself as a teacher, I hate to say this, but quite often you will just anoy people by asking "teacher-questions".

      I am one of those people who are extremely annoyed by "teacher questions". So I won't ever do it myself.

      The approach I take as a "teacher", both here and in other forums, is first to look at how far off they are from a working solution. If I find they're pretty close, then I try to correct their problems, explaining why their solution doesn't work, and why mine does. It's my feeling that if they can learn just about the tiny details of what is wrong with their programs, then there's no need for them to come up with it for themselves. If there's too much wrong with it, then just this one teaching moment won't suffice.

      What I don't do is just offer a totally unrelated solution. I might offer one alternative solution in addition to fixing the problems in what they came up with.

      If they're too far off, the kind of people the OP was asking about in the root of this thread, then I just don't bother teaching. I might bother offering a working solution, but without bothering to explain much. In that case it's intended as much (or even more) as a solution to other people with the same kind of problem.

      Too true, sadly. But my wife says that we have to grab the "Teachable moment" whenever we can!.
    A reply falls below the community's threshold of quality. You may see it by logging in.
Re: Should a Socratic Dialogue be attempted?
by doom (Deacon) on Oct 20, 2007 at 18:47 UTC
    I would suggest the application of a simple principle: don't play games with people. You can call this an application of the Golden Rule, if you like.

    Also, I would make the point that we all have other things to do than hold someone's hand, trying to delicately lead them in a direction they don't (think they) want to go. Once you understand what someone's problem is, it's eaisier to just explain the answer, or give them a documentation pointer.

    On the other hand, there's no reason not to toss in some hints on how to figure things out along the way ("Did you try cutting and pasting that code snippet into a test script? I would think that if you'd had you would've immediately noticed, that...").

Re: Should a Socratic Dialogue be attempted?
by syphilis (Archbishop) on Oct 21, 2007 at 12:20 UTC
    Are we doing them more harm than good by giving them the answers they ask for?

    I don't presume to know what is good for people - I've not been trained as a High School teacher :-)
    Consequently I usually just (try to) answer the question. I guess a more altruistic person might stop to consider the excellent points raised in apl's post, but I'm not an altruist - nor am I qualified to be one.

    Replying to posts is (generally speaking), for me, an act of self-indulgence. It's all about solving a puzzle that *I* find interesting, or showing off something that *I've* picked up somewhere along the way ... or maybe it's something *I'm* doing as a learning exercise or as an exercise in clear thinking. It's all good and fine if the OP derives some benefit from my reply - but that's generally a secondary concern.

    I also find it particularly annoying when I get a "teacher reply" to questions that I've asked. In fact, I usually interpret such responses as smug, smartarse "I'm better than you cos I know something you don't" responses. Thankfully, I (usually) manage to conceal my displeasure :-)

    By some strange coincidence, I happened to read this article by Maryann Wolf in Saturday's (Melbourne) Herald Sun newspaper. I rarely read that paper - which makes it an even stranger coincidence. (The article is not related specifically to this discussion, but it also refers to Socrates and it's along similar lines to apl's post.)

    Cheers,
    Rob
      I don't presume to know what is good for people - I've not been trained as a High School teacher :-)

      ROFL! Most teachers I know wouldn't presume to know what's better for people. Politicians, OTOH ... 8-)

      That's another good point. People coming here with questions are (by definition) seeking answers. Some may be interested in learning, but first they want the damn thing to work!

      Replying to posts is (generally speaking), for me, an act of self-indulgence.

      That's interesting. A lot of people I read answers from may be like that -- they have speciailized knowledge others don't, and reading their answers is itself a form of education. I come here to learn, because my skills are more ground-level. You make me realize that some people post precisely for people like me.

      I also find it particularly annoying when I get a "teacher reply" to questions that I've asked. In fact, I usually interpret such responses as smug, smartarse "I'm better than you cos I know something you don't" responses.

      Another reason to principly provide answers. This forum is a great resource, and it'd be a crime to drive away someone who could really need it.

      By some strange coincidence, I happened to read this article by Maryann Wolf in Saturday's (Melbourne) Herald Sun newspaper.

      The teacher in my life got a hoot from the article. She said the researcher in the artticle didn't get into the classroom much. It's not a question of "Might it be true students don't learn" to "How many don't learn."

      In the U.S., with the No Child Left Behind Act, schools now teach how to pass the test. They no longer teach the material the test would have been on.

        That's interesting. A lot of people I read answers from may be like that -- they have speciailized knowledge others don't, and reading their answers is itself a form of education. I come here to learn, because my skills are more ground-level. You make me realize that some people post precisely for people like me.

        The general assumption is that QA forums (usenet groups, mailing lists, web forums, etc) provide a service for people who have questions that require answers. My view is that the *real* value of these forums, in fact, is that they provide a service for people who like to *answer* questions (for whatever reason).

        Well ... that might be taking it a little too far. Let's just say that "it works both ways" ...

        I *do* know that I've learnt much more from answering questions, than I have from asking questions :-)

        Cheers,
        Rob
Re: Should a Socratic Dialogue be attempted?
by talexb (Chancellor) on Oct 24, 2007 at 17:16 UTC

    I'm coming to this one late -- but it's a fascinating question.

    The short answer is, give them the answer, but also try to engage them into a discussion about what the answer means, and perhaps also into a meta-discussion about how they should be looking for answers.

    Tangent: It reminds me of what someone told me once was the difference between (?:vocational) college and university: In college they teach you how to do something, and in university they teach you how to learn.

    One of the things I love about going to Perlmongers meetings is that the level of brain activity in the room is really, really high -- I love it. Yes, someone's giving a talk about something technical, but the questions and comments that fly about are really brilliant -- you can tell there's something really interesting going on, and that's there's lots of brainpower in the room.

    I hope that the people that are attracted to programming are the ones who want to tinker, explore, find stuff out and get their task done. And I hope that means they'll want the answer, but they'll also be interested in the background, and also want to know how to ask question in the future. And that means discussion. So that's a vote for the Socratic method.

    Software Engineering is not a one-off job -- to me it's a career -- and that means keeping the relationship fresh, and always be learning.

    Alex / talexb / Toronto

    "Groklaw is the open-source mentality applied to legal research" ~ Linus Torvalds

      The short answer is, give them the answer, but also try to engage them into a discussion about what the answer means, and perhaps also into a meta-discussion about how they should be looking for answers.

      On other fora (not necessarily PM, yay), I've seen people get more annoyed with meta-discussion and think they're even more superior/preachy/etc. than "teacher questions" - although I tend towards "The answer to your question is X; Y reference would have told you the same", and have had decent results.

      One of the things I love about going to Perlmongers meetings

      You lucky sod, to have Perlmongers meetings to go to! :)

      I hope that the people that are attracted to programming are the ones who want to tinker, explore, find stuff out and get their task done. And I hope that means they'll want the answer, but they'll also be interested in the background, and also want to know how to ask question in the future. And that means discussion. So that's a vote for the Socratic method.

      Absolutely concurred - although there are enough people who are concerned firstly with "getting task done" that they'd be annoyed by discussion before answers. Oh well.

      dwu
Re: Should a Socratic Dialogue be attempted?
by dk (Chaplain) on Oct 23, 2007 at 09:05 UTC
    My question is: Are we helping people like this by providing the answer, or should we attempt to teach them to think like a programmer by asking a series of questions, leading the original questioner to find the solution on his own?

    That would be a valid dichotomy if you'd be sure that the answers or teachings you would be giving are totally complete and truthful, which might not always be so. Therefore, the answer is simple - try to answer a question with the best of your knowledge, and let them choose to either discard, mindlessly copy-paste, or do their own research and be critical of your answer. Same as with good and bad students, really.

Re: Should a Socratic Dialogue be attempted?
by Aim9b (Monk) on Oct 25, 2007 at 14:06 UTC
    Speaking as a real noobie, I prefer the answer, the why it works, AND the pointer to the doc/posts/articles/etc. I'll most always try several pieces of code first, & will include it in the question if relevant, but if I'm given ONLY the RTFM answer, I'll find another place to ask.
    At this site, that's never been the case. I usually get several of each, & I appreciate it more than you know. At most times, I too learn by reading other posts. It's a fantastic tool, & I'd hate to see it fade away.

    Usually, I'm reading 4-5 good answers by the time I even get to trying to answer the question. I use these to 'test' the validity of my own answer. Sometimes, I'm right on, other times, well... but if by some minor miracle, I get to a point where I can answer some other persons post, I'll consider it an honor to be among the knowledgeable people here at the monestary.

    So, my vote (?) would be - Do BOTH, & let the recipient decide.

    1. You get the issue resolved & possibly gain a long term perl advocate.
    2. The ones that don't stay, wouldn't anyway.
    3. You probably helped me & folks like me, without even realizing it.

    RE: the CB, It scrolls off too fast, & I'd feel I was missing a lot if usable information.
Re: Should a Socratic Dialogue be attempted?
by naikonta (Curate) on Oct 23, 2007 at 02:28 UTC
    We already have chatterbox sidebar. I have seen many questions were answered that way. Once a monk asks questions, there are not just series of questions, but some paralels of questions from other monks, or answers. I think that CB is the best place to accommodate the situation you describe. The only downside (if it's considered a downside) is only registered monks can participate.

    Update: I was thinking about proposing to add lines around the textbox about the poster to consider CB to ask his/her question instead of firing a node.


    Open source softwares? Share and enjoy. Make profit from them if you can. Yet, share and enjoy!

Re: Should a Socratic Dialogue be attempted?
by LighthouseJ (Sexton) on Oct 25, 2007 at 12:59 UTC
    Often times I find myself working on regular bourne shell (not bash) which only has single-equals to compare strings. I had to inform a coworker that using double-equals is undefined when he tried to use it.

    Back on topic... If we were to reverse course and only say reply back with "run `perldoc perlsyn`, you'll find your answer", pretty soon people will get turned off. PerlMonks ultimately is a completely voluntary resource (save for the fine folks who are responsible for and run this great site) which is unlike school where kids are meant to learn. The philosophies under which we exchange ideas are very different so it's hard to ply the same questions to both areas.

    With that being said, to me I try to answer posts in which the poster has provided some effort on their own. Posts like "I need to parse this data file, here's what it looks like, now by my code monkeys and do my homework assignment" get ignored. Other posts like "I'm trying to parse this file with this format. I wrote this perl script here but it doesn't do X or how can I make it more efficient" get a second look and possibly a response.

    Their demonstrated effort goes a long way in soliciting a response from me, at least. I like to help people that help themselves, but if you aren't going to try, then neither am I.

    "The three principal virtues of a programmer are Laziness, Impatience, and Hubris. See the Camel Book for why." -- `man perl`
Re: Should a Socratic Dialogue be attempted?
by davies (Prior) on Oct 15, 2009 at 16:51 UTC
    A late follow-up, but one based on recent, relevant experience. Helping me in the chatterbox earlier this week, Moritz (++) gave me both the quick answer and a link to a page of documentation. Coincidentally, I already had that page open. I needed help because I couldn't understand what I had read there and elsewhere, but once I had the solution to put alongside the docs and the reading I had done, I understood what the docs meant. But I didn't feel the chatterbox was an appropriate place for a detailed analysis of my woes and failings. :-) I wouldn't know how to distinguish between the issue you describe and my situation, which I like to feel is different.

    See the happy moron
    He doesn't give a damn
    I wish I was a moron
    My God! Perhaps I am!

    Regards,

    John Davies
      (Sorry for the late response.)
      wouldn't know how to distinguish between the issue you describe and my situation, which I like to feel is different.

      Moritz answered in the ideal fashion, and you were already acting as the ideal student, continuing to research on your own.

      My question (was it really two years ago?) was more for the case of the OP who just doesn't want to think about the problem he's trying to solve. You're like the person trying to learn how to fish in order to feed himself, as opposed to the baby bird who just tilts his head back waiting to be fed by Mama. We often provide the pre-masticated food, rather than teaching how to bait the hook.

Re: Should a Socratic Dialogue be attempted?
by ForgotPasswordAgain (Priest) on Oct 25, 2007 at 17:27 UTC
    I find all the responses to your question saying you shouldn't provide an answer absolutely hilarious. Clearly you should figure out the answer yourself.