http://qs321.pair.com?node_id=245931

Greetings brothers and sisters,
I debated where to post this, or if to post at all. I am asking for advice on how to convince my co-workers to start learning and using Perl. This isn't a choice between languages, as we have previously only used KSH, awk, and sed. It isn't a question of superiority as they have all conceded the limitations and are elated when I can solve a problem for them using Perl.

This is also more than me just wanting to bring my co-workers from the dark side and make them all Perl converts. Since I started learning Perl about 9 months ago, we have slowly started to integrate projects that I have done into production. I do not believe in job security through obscurity. There is a very legitimate problem if I am the only engineer that can maintain these scripts. It is also a concern of mine that my code does not go through the same review process that everything else does. With KSH, we are on pretty level footing, so we provide checks and balances for each other.

I want to be clear that this isn't a problem of their abilities to code Perl or convincing anyone that it is the best tool around. I still do a great deal of tasks using nothing more than built in *nix commands. If I repeat the same sequence with any repetition, I throw them into a shell script.

This is a quest on how to convince my co-workers to learn the basics of "hello, world".

If you have encountered this obstacle in the past, how have you overcome it?
How do you convince someone that does not argue, but only smiles?
I am sure there is a great deal I have left out of this, but I believe the core of my problem has came through. If not, please let me know and I will provide more information.

Cheers - L~R

Replies are listed 'Best First'.
•Re: Convincing co-workers to learn Perl
by merlyn (Sage) on Mar 26, 2003 at 16:21 UTC
    I brought a lot of people into the Perl camp a dozen years ago by answering questions in comp.unix.questions with both a shell answer and a Perl answer. The Perl answer was almost always shorter and easier to read, and almost always faster as well.

    Perhaps you can do the same. Say "here's how to solve that in $LANGUAGE_X, but the Perl solution looks like this...". Do it enough times, they'll get the hint.

    These days, the big winner seems to be the CPAN. So if you're in some $LANGUAGE_X design meeting, and someone mentions some basic task, just mutter "you know, I bet there's a freely available CPAN module for that part of the problem". Even if there isn't, they'll eventually get the hint.

    -- Randal L. Schwartz, Perl hacker
    Be sure to read my standard disclaimer if this is a reply.

      Nice response..

      I was thinking something along the same lines, but closer to how the Llama introduced perl.. Something along the lines of

      Here is how you do X in Y
      Here is the same in vanilla Perl
      Here is the same in chocolate Perl
      Here is the same in a bananasplit with nuts, cherries, and hot fudge Perl

      This way they can grasp the basic flow, then you show them slight improvements on the algorithm in question, then move to builts ins, and using $_ or assuming you are working on $_, etc..

      Best of luck on your conversion process..

      /* And the Creator, against his better judgement, wrote man.c */
Re: Convincing co-workers to learn Perl
by abhishes (Friar) on Mar 26, 2003 at 15:14 UTC

    I face the same problem as well... quite recently one of my colleague was asked to write a program to set up our server environment. He started to do it in shell script and asked me couple of doubts in shell scripts. I inturn asked him to do this application in perl because it will be much better.

    I offered to help him in learning perl as well but he went ahead with his shell script giving lame excuses like 'perl is not a good choice because on some platforms perl is not available'. Well we use HP UX and I checked that perl was installed on both the development and production servers.)

    I only wish that I had more convincing abilities so that I can convince people to learn and do perl for applications where perl is most suitable.

    regards,
    Abhishek.

      I would have to concede the point your coworker brought up. Why would anyone want to limit themself by writing a utility script in Perl? He's right, it doesn't run on every platform: support on C64s is shaky at best, and I can't remember seeing a single port to the VIC-20. For true cross-platform compatibility it is much better to use Unix shell scripting.

      Next time, educate yourself before blindly insisting that Perl is the right tool for the job.

      Update: Jeez, I really didn't think I had to resort to <humour></humour> tags...

      LAI

      __END__
        Update: Jeez, I really didn't think I had to resort to <humour></humour> tags...

        Welcome to the Internet my friend. The man on your left is a communist grammar nazi with a loaded 9mm who is currently re-reading your post for the 8th time looking for typos. The man on your right is jaded programmer who has not slept in 72 hours, is trying to meet a deadline, consumed a near lethal dose of caffeine, and is about to be informed he's getting laid off. The man wearing the tin foil hat behind you thinks that you're a microsoft operative sent to kill him. The programmers who wrote the software you're currently using were all hooked on crack. Good luck!

        Some people say they fought in 'Nam. I say "so what, I posted on Perlmonks."

        Apologies to Denis Leary.

        >> Next time, educate yourself before blindly insisting that Perl is the right tool for the job.

        Our project is written in Java and I don't insist that it should be re-written in perl just because I think perl is better. I don't advocate to blindly use of any technology

        In this particular case, perl *is* the right tool for the job because we plan to support only HPUX or may be windows... and perl runs quite fine on them

        When I have more time, I will re-write the same program in perl and then demostrate it to my colleague on how much better the perl program is than his shell script. That is one way I hope to convince them.

        After reading this post I realize that I shouldn't have given the impression shell scripts suck...(When I saw if statements ending with a fi, I laughed and laughed)

        regards,
        Abhishek.
Re: Convincing co-workers to learn Perl
by adrianh (Chancellor) on Mar 26, 2003 at 15:16 UTC

    I'd just sit down with your co-workers, explain all the above (which makes sense), and agree to start a study group (and ask management to give you time for said study).

    Have your co-workers raised objections to learning perl? If so what? From the description you've given of your work situation lack of time would seem the only sensible excuse...

      adrianh,
      Thank you for that piece of sagely advice. There is no direct objection. Time is a factor. I honestly believe that management would allow for such a study group, but while in the office - there is always something hot. I am afraid that if they are not willing to give up their lunch break or stay after hours, this just isn't going to work. I am willing to make those sacrifices, how can I convince them to do the same?

      Cheers - L~R

        I doubt that you can (or necessarily should) convince your colleagues to give up their unpaid hours to learning perl to benefit the company, though it might be possible you could convince some to do so to benefit themselves - for the sake of having perl on their resume, or just to become a more effective programmer, or for the fun of it. But the people who would be swayed by such arguments would likely already be twisting your arm for a study group.

        Talking to management is probably not the best first step (though this depends on the company), since it may result in management imposing your suggestions on reluctant colleagues, who are unlikely to thank you for it.

        So I'd start by talking to your colleagues: do they see the lack of peer review of your code as a problem? Would they be happy to learn perl by going on a course? Would they be happy to learn from you inside work hours? Having learnt perl, could they imagine using it in the future, in another job? The answers to questions such as these would help clarify what to suggest to the management, or may convince you that you should do nothing.

        Another approach is to teach by stealth: if you ever do code walkthroughs, try walking through some examples of your perl code, pointing out bugs and explaining how to fix them, and just describing what the language is doing as you go.

        Good luck. :)

        Hugo

        If you're management isn't going to allow some personal development time they're shooting themselves in the foot. They'll be heading towards higher staff turnover or poor quality employees in the longer term.

        Giving up lunch breaks and staying after hours is a sacrifice. Personally I like to use them for eating lunch, seeing my partner and walking the dogs :-) Unless somebody is interested in perl for its own sake they are not going to sacrifice personal time. I don't think you can win that one.

        I realise that this can be a hard problem to solve, but I think that your time will be better spent lobbying your management than your coworkers - that's where the problem is. You may be surprised. Asking works more often than you would expect, especially if you have sensible arguments for how the improved skills will help the company (as you do).

        Go to work at a non-profit or social-justice organization. Those people stay after and work extra without getting paid. Everyone else just goes home or eats lunch.

Re: Convincing co-workers to learn Perl
by Nkuvu (Priest) on Mar 26, 2003 at 15:20 UTC

    I'm in a similar situation, without the system commands. We're running on Windows (not by my choice, but that's a topic for somewhere else) and the most intensive system call I do is pretty trivial.

    I attempted to get people who know Perl to review my code, but it seems that I am the one with the most Perl knowledge on site right now. Or at least, no one else who knows Perl can be torn away from their tasks to review my code. My approach has been to make it as clear as possible what I am doing (especially since one of my tasks was to update a script written by someone who liked the "job security through obscurity" approach (and of course has since left)).

    My code is most likely something that can be optimized to run more efficiently, and most definitely in a more Perlish mannner. But even where I do use concise code I comment the heck out of it. I have one particular script that is about 60% comments. This seems drastic, but it is very clear to people who don't know Perl what the script is doing or trying to do.

    I have at least one advantage, from the sounds of it -- everyone who is reviewing my code is also a software engineer, so they are familiar with C/C++ at least, and reading Perl (well, my Perl, anyway) isn't a great stretch. If your co-workers are not programmers, then I think it might be more trouble than it is worth to try to get them up to speed on general programming practices. If/when you leave, and they need to fix the script, it might be better for them to hire on a contractor to do it for them.

    My two copper-plated zinc bits.

Re: Convincing co-workers to learn Perl
by petesmiley (Friar) on Mar 26, 2003 at 17:54 UTC
    Well, here are a couple of things I've done that have made a difference where I work. Mind you, they only work if the person shows interest.... ie. they continuously ask you questions about perl.

    This only works on about 1 in 10 people, because most aren't really interested in spending their time learning something new.

    1. Give them a book.... I just gave my 2nd ed. Camel Book to someone who has continuously showed interest. He's just started learning perl. I loaned a camel book to another programmer who learned a moderate level of perl in 2 months. (he familiarized himself with CPAN quickly) If they don't use it, you can always ask for the book back.
    2. Teach them during work anytime you have a few minutes. I've been asked to do a few 10 line projects for work in the past. When I get them, I scratch out the code on a dry erase board and let someone else punch it in and run it. Even though they didn't come up with the code themselves they got some enjoyment out of making it happen. They generally would come back later and ask questions about how the code works.
    Smiles
    and remember, you can only teach someone if they want to learn
Re: Convincing co-workers to learn Perl
by Anonymous Monk on Mar 27, 2003 at 01:42 UTC
    First off stop looking at it as a battle to win.

    If you push, people push back. Try to convince them that their existing tools suck, and every argument that they lose leaves them with a bad taste in their mouth. Plus every argument that they just walk away from will look to you like they conceded, but they won't think of it that way. (Anyone who "only smiles" probably is just trying to avoid what they see as a pointless argument - no matter how accurate your argument is you have lost it before you open your mouth.)

    What you have to do is stop pushing. Rather it is more a question of being friendly and helpful, showing that you respect their skills and abilities, and seeking opportunities to work with them on problems in Perl. If you are about to solve a problem in Perl for someone, sit that person down and scan through your answer with them and ask them if that does what they want. Or deliberately write a script which needs to be edited to be configured, and show that person how to do the necessary editing.

    Once you create a safe environment to learn, and convince the person that it will be easy to learn (and that the whole thing won't be an exercise in your demonstrating your own intelligence), people will be willing to accept what you have to offer. And in the process of creating that environment you will undoubtably find yourself learning things of unexpected value from your co-workers. Which, honestly, will be of more value to you in the long run than teaching them all to use Perl.

      Good points. One thing to also consider is what would your response be if you s/Perl/Java/g;'d the root post. Do you complain about Java people trying to get you to use Java for everything? Not as simple as it seems, is it?

Re: Convincing co-workers to learn Perl
by Rex(Wrecks) (Curate) on Mar 26, 2003 at 19:34 UTC
    One method that has brought me some sucess in the initial "kick-start" phases of getting co-workers to use different tools (and languages) is to provide them with a base functionality tool, and tell them to keep modifying it to suit thier needs (ie: a script that does substitution with hard coded variables to substitute, show them which hard coded parts to change for each new file or substitution they want to do). It is my experience that if the tool is useful to them they will start to tweak it, the day they come to your desk and say "Why didn't you just use @ARGV to read the substitution vars from the command line?" is the day you have tham hooked :)

    This approach doesn't work for all, it usually works on the more inquisitive, the ones who are apt to think "I can make this easier...there has to be something he was missing".

    Disclaimer: the example is exactly that, an example, and should in no way be construed as a good real life scenario suggestion.

    "Nothing is sure but death and taxes" I say combine the two and its death to all taxes!
Re: Convincing co-workers to learn Perl
by grantm (Parson) on Mar 26, 2003 at 21:57 UTC

    A former boss of mine instituted the 'Monday morning tech session'. Every week, one person from the team would talk about something technical. It might be something they were passionate about, something they recently had some training on, some project that they've finished that colleagues will end up supporting, a tool that everyone used that they knew more about (vi tips anyone?). Sometimes we'd get a 'guest speaker' in - perhaps a rep from a vendor, perhaps even a customer to talk about what they used our system for.

    Having it every week is (I believe) a key to its success - if people have to wonder "are we doing it this week?" then it will fizzle out (indeed it has more than once). Keeping it informal and short (max of a hour) is also important. Scheduling it first thing in the morning was a good idea because it meant people were less likely to get sucked into something else - unfortunately if everyone doesn't start at about the same time it might not work so well. If the company were to provide coffee and donuts that might help :-)

Re: Convincing co-workers to learn Perl
by perrin (Chancellor) on Mar 26, 2003 at 16:43 UTC
    They haven't learned it because they haven't needed it. Next time they need it, instead of doing the work for them, help them learn how to do it themselves.

      I think it might be hard to convince them to do this if they are under a tight time constraint. It would be faster and more reliable to have Limbic~Region do the script rather than try to teach them Perl to do a script. At least, that's how I would think that they would look at it...

        Of course they would rather just have him do it. And that's when you go from being just another guy on the tech team to an incredibly useful employee and mentor by saying "Why don't I come over to your desk and we'll work on it together in Perl?" or "You can do this in Perl with a hash and a foreach loop. Take a look at this example in Learning Perl. Why don't you give it a try?" That's how I learned Perl.
Re: Convincing co-workers to learn Perl
by Limbic~Region (Chancellor) on Mar 27, 2003 at 22:44 UTC
    Everyone,
    I want to thank you all for mostly constructive comments. I have been monitoring the thread, but stopped replying as I didn't think it was appropriate to say "thanks for the advice" to every single node. I would like to share with you a new line (future pun intended) that I am using with my co-workers now. It is based off merlyn's post.

    When ever there is a question that arises concerning a shell script that needs to have functionality added, or doesn't run fast enough, or has not evolved with the system - my reply is simply # lines, where # is the number of lines I wrote the equivalent script in Perl that does more faster.

    I think I may have mislead some of you when I said that they do not argue but only smile. This is an old saying that I heard about the only way to guarantee you will win an arguement. What it meant in this case is that they do not put up a fight - they agree with everything that I say about Perl, but still choose not to put forth the effort to learn it.

    Since we have a good working relationship and they are not anti-Perl, just telling them the number of lines has piqued there interest in seeing just how this is done. We still are crazy insane busy and do not have much time to "play", but "hello, world" is now in their toolbelts.

    Thanks again to everyone who contributed (even the ones that weren't so constructive).

    Cheers - L~R

Re: Convincing co-workers to learn Perl
by newrisedesigns (Curate) on Mar 27, 2003 at 02:21 UTC

    They seem like smart people.

    A smart person is an economically efficient person.

    Don't try to convince them to use Perl. Convince them to use The Best Tool for the Job™. Usually, (though not often) it's Perl. :)

    Good luck with your evangelical endeavor.

    John J Reiser
    newrisedesigns.com

      I have to concur on what John says.

      If there is one thing I learned in the last 35 years, it must be: "never tell people what to do".
      Let them decide for themselves.

      On the other hand, there's absolutely no harm in showing them the "path of enlightenment"...<GRIN>

      Cheers,
      MichaelD

Re: Convincing co-workers to learn Perl
by bart (Canon) on Mar 27, 2003 at 12:23 UTC
    If your coworkers can't even get a few (paid) hours off to learn the basics... well, forget it then. After all, it's all for the benefit of the job, in the end.

    Seen the price some employers pay for even basic courses, that's a disgrace, really.

Re: Convincing co-workers to learn Perl
by tbone1 (Monsignor) on Mar 27, 2003 at 13:48 UTC
    I did this recently, and I made a point of inviting several IT-type groups who could (potentially) be interested. There were representatives from ... five different groups. People from the other four have come to me with scripts that they are writing with help, so that's good. No one in my group has yet, so you might need to look beyond your immediate group.

    Admittedly, we are a mid-size company, with about 70 people total. I don't know that this would work with a company that is much smaller, and of course big companies have a completely different dynamic. So you might have to tailor a strategy based on the size and structure of your company.

    --
    tbone1
    Ain't enough 'O's in 'stoopid' to describe that guy.
    - Dave "the King" Wilson