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

I originally composed this as a reply to a particular node authored by an unnamed "wizardly" monk, but decided that it might do well to be posted amongst the Meditations, that all might think about this a little bit.

Original comment as follows:
I just feel the need to say that this is the second time in less than a week that I've --'ed you for a harsh reply to a question.

Now of course I know you're a knowledgeable monk, but it doesn't take away from the fact that you seem to overlook the fact that PM is here to encourage and teach. The truth of the matter is that while the solution you criticized wasn't the most elegant or efficient, it does in fact work. Sure, it's clumsy, but it gets the job done.

Now if you had replied with a witty comeback but followed it up with some relevant discussion, such as advice about why you don't like that solution, why others are better, I'd have overlooked it and given you a ++ instead. But in both of these cases, you've simply slammed someone for their code and not offered corrections.

Had you offered corrections, you may have provided an opportunity to teach many people who were reading that node. But in criticizing so harshly that code, you surely discourage young monks from attempting to offer help, lest they get "whipped by the Perl master" should their code be less than perfect. Let us engage in encouragement, not assholery, okay?

Forgive the strong language, but I think it's an accurate depiction of what took place.

--Kozz

Update: The root-level node is here. Sorry if I'm overreacting, but this sort of behavior seems inappropriate.

Replies are listed 'Best First'.
Re: PM: A Place To Learn
by {NULE} (Hermit) on Apr 04, 2002 at 02:52 UTC
    Hi Monks,

    I'm normally the silent type, but I feel we are all friends here and I'd like to relate a bit my past eight months or so - including a trip through friar-dome and why exactly it is I'm so silent.

    First off ++ to Kozz for reminding us gentle encouragment is often more useful than a scholarly scolding to a willing student.

    Secondly ++ to merlyn who has been singled out many times for helping out a new monk even if it means answering the same question over and over again. Giving the same sagely advice, refering to same tried and true documents no matter how often the same easily searched for topic is broached. May we all show your same perseverance and patience.

    Before I delve any deeper I'd like to mention that I have not looked at the mentioned node (nor will I) and I neither know nor care what precise comment sparked this discussion.

    There are two reasons why I am not what you may call an overly active participant of this community. First is what I will call the personal baggage component. This is where personalities meet online to discuss a topic like Perl where we all have a common interest, but the discussion verges to topics where we differ. There is a certain home node under current contention that comes mind. We are here for our love (or hatred) of Perl but serious discussion at times must occur of god-awful things like politics and religion so that we may work out our differences and continue to be a vital community. I understand it, but do not feel comfortable in partaking of such discussions and hence the first cause of my relative silence - my shortcoming, not the community's.

    The second is because of exactly what Kozz is talking about. Despite the fact that I am comfortable with (and proud of) my Perl ability and aware of my own shortcomings and am resolved to learn more and improve - I am scared to post anything I write here. It is not as though a single town bully exists here to pummel the non-elite for any breach of Perl perfection. It is that so many of us are so good that many of us are capable of finding fault in even the best code. And more specifically that at any given moment one monk or another is inclined to do precisely that.

    Thankfully most of our wizardly brethren refrain - even when a topic has been discussed before, the same bad habits discouraged over and over again and the same good habits reinforced, and the mantra 'super search is your friend' has been uttered for the umpteenth time. But we must never forget that when you are an acolyte of the community the harsh words of one who is your senior (particularly with the reknown of some of our friends here) can be particularly damaging.

    I think we must also consider our actions when voting. A new member must have a tough hide indeed to have a first post -- into oblivion and still come back for more. Even if it is wildly obvious to us in our wisdom we must remember that there was a first time we learned that lesson too.

    So now I lapse into another period of my relative silence. I'll watch for the Tk and other posts I like answering. I'll keep hoping that my curses cb client will start working again one day soon, with or without my intervention. And I'll continue to be proud of being part of the best online community I have ever witnessed. May we keep it that way.
    {NULE}
    --
    http://www.nule.org

    P.S. ++ to Kozz also for adding to my vocabulary. I will use the phrase 'assholery' at absolutely the first opportunity I have for it.

    Update: I wanted to address demerphq's response out of respect for the poster. It is clear that you and I approach programming (and life in general I'm willing to bet) a great deal differently. Had I been criticized harshly here as a new monk I would have turned tail and run away from the monastery faster than you can say "python". I am overly sensitive I suppose but I think of programming as an "art" more than a "sport" (it is both, of course) and as such it hurts to have my art criticized - even when the critic is kind and right (another shortcoming of mine).

    We are probably going to have to agree to disagree on this topic. I try to understand the approach you take as an educator and I know that sometimes people need a beating to be enlightened. But any good teacher will tell you that not every student learns in the same way and I don't think a harsh approach will help everyone. I feel and I hope to convince others here that the lack of a tough hide shouldn't pose a barrier to entry into our ranks. After all when you've been here a while you get to know who is a prick - who is not and most importantly to take it all with a grain of salt. All I ask is that we keep this in mind, particularly when dealing with new members.

      . It is not as though a single town bully exists here to pummel the non-elite for any breach of Perl perfection. It is that so many of us are so good that many of us are capable of finding fault in even the best code. And more specifically that at any given moment one monk or another is inclined to do precisely that.

      First off, good point! {NULE}++

      I suppose in many ways I am the exact opposite of you. I often post, and I often reply, and I often spout off what I think is 'best practice' or whatever it is that I think is relevant. And sometimes I even do it in a harsh and judgemental way. And for this I have been abused and contradicted and criticised. And educated.

      For me the beauty of this place is that even when i'm right, (cause im _always_ right :-) someone smarter or more experienced is nice enough to come along and show that i'm wrong. Sometimes they do it by posting code, a benchmark or a documentation. Sometime they simply make a remark that points out the stupidity of what I said. But you know what, from those responses I learn. I learn what kind of remarks exact "witty" responses from the community, and usually they are the kind of things that had I thought about in more depth I would never have said.

      Thankfully most of our wizardly brethren refrain

      I disagree. There are times and places when the facts are simple, you said or did something dumb and you deserve to be told of it. This doesnt mean that you arent welcome in the Monastery, but rather should serve as an indication that a little bit of research, a little bit of analysis, a little bit of holistic thinking is needed before you say something stupid. Advice that applies to all walks of life and not just posting here.

      But we must never forget that when you are an acolyte of the community the harsh words of one who is your senior (particularly with the reknown of some of our friends here) can be particularly damaging.

      Damaging? Hmm. Not to be harsh but if you cant stand the heat stay out of the kitchen. Programming is an intellectual sport. If one of these old pros says you did something dumb (well, assuming the criticism is not malicious, and such comments dont usually last more than 5 seconds of consideration) then you have three choices, a) get even, prove em wrong or put up a damn good fight. b) get over it, and try to learn from the experience or lastly c) get lost, and never gain the fruits of knowledge that are in such abundance here.

      Now a last comment about the node in question. The solution was dumb. Im sorry but it was. Anybody with the slightest exposure to perl culture (and programming in general) should have been thinking "Theres got to be a better way to do this" and then done the basic research to find out what it was. But the poster in question didn't. And so merlyn quite rightfully took the piss out of him (in frankly not that harsh a way). Hopefully the poster has learned from this. I suspect a bunch of other people have.

      Yves / DeMerphq
      ---
      Writing a good benchmark isnt as easy as it might look.

      Thank you for the update. It has been a bit of an eye-opener especially as I've recently had similer discussions with colleagues at work.

      Had I been criticized harshly here as a new monk I would have turned tail and run away from the monastery faster than you can say "python".

      I think I'm going to have to try to be a touch more sensitive and maybe tone down the line where I consider something harsh. I certainly wouldnt want to be responsible for scaring someone away.

      as such it hurts to have my art criticized

      Very true. But knowing that your code could be dissed only makes positive feedback all the sweeter. Again however im going to keep this in mind. I normally consider myself to be of the "Programming is an Art" school, (a debate Im glad hasnt come up here even though it was almost invited in ;-) but I tend not to take the next step and think of code as a piece of art. But I suppose in enough ways it is, and that has a bearing on how I would criticize. For instance there are things I would say to my colleagues or programmer friends about their code that I would never think of saying about a picture they had drawn or a piece of music they had played.

      I feel and I hope to convince others here that the lack of a tough hide shouldn't pose a barrier to entry into our ranks.

      Yes this is true. And the next time I'm inclined to be harsh I'll think again, especially with a newcomer.

      Thanks alot,

      Yves / DeMerphq
      ---
      Writing a good benchmark isnt as easy as it might look.

•Re: PM: A Place To Learn
by merlyn (Sage) on Apr 03, 2002 at 18:06 UTC
    Would you feel happier if I had included the words "A more correct solution has already been given elsewhere in this thread."?

    If so, isn't that always a given? Why should I have to repeat a "given"?

    I don't randomly flame. If I flame, it's because a distracting or broken solution is given. If there's no correct solution yet, it's always my intention to point outward to a real solution. However, since the real solution was already posted (and voted up quite a bit, if I recall), do I personally need to also point that out?

    {sigh}

    -- Randal L. Schwartz, Perl hacker

      I think you should have added a note about the solution already given. Had you linked to it or named its author, it would be even better. Your reaction to the root node was "Did you and Matt Wright go to school together?". You know the code that that Matt writes, and I do too. But some people have never heard of this scary script archive. A very simple explanation could have cleared up a lot.

      You chose not to tell anything about the efficiency of the reply, not to link, and not mention the better approach at all (either through mentioning the solution itself (it's only 20 characters), or refering to another post), leaving only the harsh bit.

      I agree: the iterating solution is inefficient and clumsy (although at 133k/s (Athlon 900), the efficiency loss is not even notable in non-benchmarking scripts), and there is a better solution to it. I also think the author should have been told about it. I like your sarcastic approach, but it should be complemented with something else. The something else could have been a small reference to the "right WTDI", or an explanation of why the code is so much like Matt Wright's code and why that is bad.

      Probably, some remember similar harsh posts from me, and I admit I have often been wrong in the same way. I will not retract those rude unhelping posts, but I will try to avoid them in the future. I hope you will too.

      U28geW91IGNhbiBhbGwgcm90MTMgY
      W5kIHBhY2soKS4gQnV0IGRvIHlvdS
      ByZWNvZ25pc2UgQmFzZTY0IHdoZW4
      geW91IHNlZSBpdD8gIC0tIEp1ZXJk
      

(shockme) Re: PM: A Place To Learn
by shockme (Chaplain) on Apr 03, 2002 at 17:53 UTC
    Frankly, I don't see anything wrong with the thread. Sure, merlyn could have responded differently. So could have Juerd or crazyinsomniac. But, everyone did as they are expected to do in life: they were themselves.

    Once you strip the noise from the thread, there is actually the beginnings of a good discussion on effeciency. Both Juerd and belg4mit had some good comments. And all of this was started by merlyn's comment. If you check the thread closely, had it not been for merlyn's comment, the effeciency discussion probably would not have happened.

    All in all, I think crazyinsomniac's response sums it up best. Yes, PM is a place to learn. But, we all have different styles of teaching, different styles of learning, different styles of coding, and different styles of expressing ourselves. It's the merging and colliding of these differences that makes this the Monastery. Not to wax philosophical, but it takes an abrasive to polish a diamond.

    Can merlyn be a jerk? Hell yes. But so can you, and so can I. Again, referring to crazyinsomniac's response: Grow som' brains and grow som' brass. Once you cut through the noise, there's an amazing amount of knowledge to be had.

    If things get any worse, I'll have to ask you to stop helping me.

Re: PM: A Place To Learn
by ignatz (Vicar) on Apr 03, 2002 at 19:11 UTC
    Monasteries are not know for being touchie feelie institutions. They are known for being harsh places where people go to learn through honesty, discipline and hard work.

    PM, much like the language on which it is based, is a meritocracy. I, for one, am most grateful to have one of the people who "wrote the book" posting here on a regular basis, especially with what some may consider his more entertaining comments.

    I've only dared to post code here a few times and on both occasions I was bummed that I didn't get a stern warning about some failing from our beloved Wizard. That didn't stop me from imagining what he might say: This is cargo cult coding at its worst. Why are you trying to reinvent the wheel? Use Parse::RecDescent. *sigh* Maybe someday.

    ()-()
     \"/
      `                                                   ` 
    
Re: PM: A Place To Learn
by cjf (Parson) on Apr 03, 2002 at 16:56 UTC
    Forgive the strong language, but I think it's an accurate depiction of what took place.

    This is hard for us to evaluate this seeing as it's a root node in meditations and not a reply to the post in question.

    ... in both of these cases, you've simply slammed someone for their code and not offered corrections.

    I agree with you that it's better to, at the very least, give the monk an idea what they did wrong and point them in the right direction. See Should I write your code ? for opinions on how far to help new monks along.

    That said, I don't see a huge problem with a flame or two, all forums have them and there are measures in place here to deal with them. Downvote the node, possibly consider it for reaping, and move along. If someone gets a flame along with the typical five or more excellent replies to their question I don't think it will turn them off Perl or this site.

Re: PM: A Place To Learn
by thelenm (Vicar) on Apr 03, 2002 at 16:57 UTC
    I don't think I saw the original post, so I don't know who posted it, and I hope I'm not jumping blind into a discussion that seems to have gotten heated...

    From what I read solely in this post, the comment seems pretty on-target. I'm relatively new here and haven't posted too much, preferring to lurk for a while to see how things generally work. If I feel I have something to contribute (including code), I am open to fair criticism and correction but I'm also a bit hesitant to post if I think my post might be seen as foolish or ignorant.

    In general, I haven't seen too much of the criticism described in your post, but occasionally I have seen it, so it makes me think a little more if I were inclined to shoot from the hip with code, questions, or advice. That's good because we could all stand to think a little more before speaking, but it's also bad because it scares new people off and gives them a bad feeling about Perl Monks and about Perl in general.

    So anyway, I think criticism is fair, but put-downs are not.

Re: PM: A Place To Learn
by shotgunefx (Parson) on Apr 04, 2002 at 12:10 UTC
    I thought the reply was harsh. I could almost hear the belittling tone as I read it. The sentiment could have been expressed without the slap. These types of responses were the reason I didn't answer questions for the first few months I was here.

    I think in general, sometimes when you know something so well, you forget there was a time you were clueless as everyone else.

    -Lee

    "To be civilized is to deny one's nature."
      > These types of responses were the reason I didn't answer questions for the first few months I was here.

      I've been a member of PM for over 2 months (and frequented the premises for a while before joining). I've been (seriously) learning perl for over 6 months, and messing about with scripts for over a year.
      However, I've never yet answered anybody's code question, because for even those questions that I know the answer, I know I'm not yet knowledgeable enough to give a "good" and correct answer.
      I'm continually learning better, more efficient or safer ways of doing things.

      While the rebuked answer was "correct", most people seem to be of the opinion that it wasn't a very good answer.

      Of course, I'm appreciative of any answers people will give me, and I certainly don't want a "select few" to be left answering all the questions,
      but I don't want PM to be a case of "the blind leading the blind" - and having to try out code from peoples replies that either doesn't work, or is very inefficient.

      Basically: don't give out answers unless it's a good one.
        Basically: don't give out answers unless it's a good one.

        I really hope not many people agree with you. Some of the best threads here were started off by someone posting a non-optimal (in some respect or another) answer, to which a bunch of the more experienced types ended up discusing and dissecting and generally educating the rest of us....

        I think maybe a better approach would be "Dont give an answer as being definitive unless you know it is, but also don't hesitate to offer an honest attempt cause you'll probably end up learning from it."

        Yves / DeMerphq
        ---
        Writing a good benchmark isnt as easy as it might look.

        How do you know it's a good answer? I agree to an extent about "the blind leading the blind" but that even happens now. There are quite a few monks that I can be pretty sure that their code works and works fairly well no matter how quick it was cobbled together, ( tye,merlyn, tilly, dws, crazyinsomniac, japhy, juerd ) to name just a few. If I thought about it, I could probably come up with a 50 or 60 more. I think when you hang around enough you get a good feeling for who knows what they're doing. If you're not sure you test the answer.

        But on the other hand, people giving answers (even inefficient or broken ones) is an even better way to learn as almost always someone will point out flaws in their answer to the asker and the answerer. Now they both know and will probably code better for it.

        -Lee

        "To be civilized is to deny one's nature."
        o.k., you've both made some good points there, and I agree with the principle of learning from mistakes that you both mention.
        I think then, that the only course of action is to repay the help and courtesy shown me by others, by being more willing to answer questions myself.
        (uh, wasn't that the point of it all?)

        You've sure done it, be prepared to see more of me now...
        ;)
Re: PM: A Place To Learn
by Rex(Wrecks) (Curate) on Apr 04, 2002 at 01:25 UTC
    Hmmm, I agree and try not to flame (note it is TRY NOT TO). However IMHO I would much rather read and be subjected to Flame (and I have been) than loose precious resources like merlyn from the monastary cuz they get tired of gryping like this. Hell, it usually starts a pretty good discusion, and if not I still think they are entitled their opinions. Most flames I have ever received have made me aware of a lack in skill, this allows me to repair the lack and I still come out ahead.

    I don't condone flame, I just grease my back and let the sh%@ slide off, hopfully picking out the kernel of corn on the way down.

    "Nothing is sure but death and taxes" I say combine the two and its death to all taxes!