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

ropey has asked for the wisdom of the Perl Monks concerning the following question:

I have been allocated a complete newbie to perl (and development by first impressions) to my remote (offshore) team

He is keen, bright but lacking in development knowledge, he can quote the syntax of perl (and probably other languages) but has no practical understanding of how to implement it. My tact so far has been to set him some tasks in perl (build a login, MD5 the password. etc)

He seems to be struggling with staying in control of his programs, I dont have time to spend much time (I have vnc'd and try and explain), and the rest of the team is busy on high priority tasks but willing to support. What I would like is to set him some tasks to just get on with, see what he can do... hes not getting paid so hes here to learn.. Should I just bite the bullet and say I just dont have time ? or does anyone have a better way of dealing with the situation ?

If I had the time I would love to train a bright person how to do things the way I learnt the hard way... but when your under pressure to deliver what do you do ?

Can fellow monks suggest some low maintence learning problems I can set him ?

Replies are listed 'Best First'.
Re: Learning Exercises
by tlm (Prior) on Apr 14, 2005 at 11:26 UTC

    If he wants to learn, tell him to study the llama book, and do all the exercises there. If he gets through that, then put him on to the alpaca book.

    And tell him to become a monk!

    the lowliest monk

      The main problem with telling him to become a monk is then you can't share your negative experiences here anymore. ;-)

      Rest of this node removed for political reasons -ed

      Problem is that he doesnt have access to books as such, I agree the learning perl book is the bible... but thats not a possibility, without me forking out for it myself...

        No access to such books? Then that's the biggest obstacle right there. I don't know about other monks, but it would have taken me ten times as long to learn Perl if I hadn't had access to some key books.

        the lowliest monk

        Should I just bite the bullet and say I just dont have time ?

        ...learning perl book is the bible... but thats not a possibility, without me forking out for it myself...

        I don't mean to offend, but it sounds like your heart is not into the task of training this person. If your time is worth more than and you are unable to train him, perhaps the less expensive solution would be to buy him the book. Second-hand previous releases can be had from amazon vendors from $3 to $10.

        Or he could just ask Google for "Perl Oreilly" and he can read any of the Perl books. I'm not condoning it, but if he's not going to get the books, it's out there.

        HTH

        PS: if he doesn't have the programming mentality, I don't think the perl books are going to be a very good start. He's going to need some way to be introduced to these concepts as well.

        Consider the economics of the situation. He needs this information from somewhere and you've offered two possibilities.

        1. Teach him yourself
        2. Buy the books for him

        Even if you're a very low-end developer, you're making at least $10/hour. Now suppose it takes at least 8 hours (assuming he is the most astute student the world has ever seen) to learn everything you could teach him. That's $80 out of someone's pocket plus whatever they'd have made from your productivity on a paying project because you had to take time out of your day to get a team member up to speed. On the other hand, suppose you pick up the books used for $15 a piece, mail them to him (I know, international shipping's fairly expensive, but not $50 expensive), and let him get up to speed. I'm certain if you bring that to whatever manager you have (if you aren't the manager), he'll accept the latter. Afterall, a machine doesn't work properly if one of the gears is missing half its teeth.

Re: Learning Exercises
by tphyahoo (Vicar) on Apr 14, 2005 at 11:39 UTC
    By all means tell him to become a monk.

    I consider the perl community such an important aspect of working with perl, that I would advise him a 50/50 split between reading the perl books and learning the perl community, including perlmonks and cpan. Of course there's a symbiosis here, since when the books aren't clear you can ask on cb or sopw -- something that, if he's not used to the perl community, he may not realize how incredibly useful this is, or how fast he will get answers.

    Tell him to lurk on newest nodes, answer what he can, and learn from the answers of others.

    Also, from my own experience of learning perl, mastering regular expressions was key. If he doesn't know pcre regexes, have the newbie manipulate some data with regex coach (free) and/or editpad pro (not free), work up from there to perl one line data munging. That should also give him the tools to actually help those greener than him on newest nodes.

    This was my learning trajectory at any rate.

    From there on what he learns depends on what you want him to do for you.

Re: Learning Exercises
by Fletch (Bishop) on Apr 14, 2005 at 12:46 UTC

    You might have him check out Code Kata; I got pointed at that from a Ruby blog the other day and it's got some interesting programming challenges (not necessarily explicitly coding for some, but . . .).

    The ACM also runs annual programming contests; if you follow the link off the main page you can find PDFs of this year's and last year's problems that might work as well.

      The best answer so far, appreciate the comments Fletch...

      It may be some monks have come from c++ to perl, Perl is my first lang out of school.. and my teacher didnt know what a hash was... now the point I am making is that lets not judge others being introduced to perl or any other lang...and I personally hate it when people say 'they should buy a book'. Thats not always so easy as it seems....so we mere mortals hope for support of fellow monks... I for myself want to just teach newbies the best I can

      Thanks again Fletch

Are you being paid to train the offshore team?
by halley (Prior) on Apr 14, 2005 at 14:29 UTC
    This isn't going to solve this problem, but I have to ask.

    Are you being paid to train the offshore team?

    If you've got a contract house doing code, then that contract house should be providing you suitably capable workers to actually produce working solutions. Why are they giving you someone unfit for that task?

    Typically, offshoring is to accomplish more for a lower cost. Offshore teams should be ready, fungible, and awaiting your requirements specifications. If there's training to be done, it should be done by the offshore team before that programmer is assigned to your project payroll.

    I'm not against offshoring itself (in the send jobs to India sense), but I have noticed that many "onshore" companies really have no idea how to get much for their investment. The middle management just counts the heads offshore and report it to higher management for bonuses. If you send work offshore inappropriately, it's going to be less effective than hiring core domestic staff.

    Four good rules of thumb about offshoring teams:

    1. the offshore team does the work because it's a geographically sensitive task (e.g., supporting Malasian services in Malasia)
    2. the offshore team does the work because it's not a core competency nor a corporate strategy of the onshore team (e.g., developing code isn't a core competency of an insurance company)
    3. regardless of reason, the work that is to be done by an offshore team should be insular and share few dependencies, but the management still needs to stay in touch with actual operations
    4. the work that the offshore team must do needs to be specified in excruciating detail, and that means that your management needs to know exactly what they want before they start; you can't expect piecework teams to invent something for you

    Too many companies just ship their core competencies overseas, and wonder why the quality doesn't keep up or why the secrets leak out. Too many companies just ship their services overseas, and wonder why there's a culture clash or why a timezone hell ruins all their effectiveness. Too many companies just suggest a basic approach, expecting the teams will work out a solution, and wonder why it takes twice as much time to go through the waterfall model of research and development.

    Maybe it's completely appropriate that you are training someone offshore. I just doubt that it fits with either of the rules of thumb. If you care to comment, I'd like to hear more about it.

    --
    [ e d @ h a l l e y . c c ]

Re: Learning Exercises
by jpeg (Chaplain) on Apr 14, 2005 at 13:43 UTC
    Cloning basic *nix commands is a good excercise. cat, ls, od, md5sum, grep are all simple one/two day jobs for a newbie. He'll have the functional specifications on his system in the man pages, the source in another language, and it will teach him how to deal with IO, stdin/stdout/stderr, subroutines....

    It sounds like he's a wannabe. Work with that. What does he want to do? I've taught a few people scripting languages over the years, and it goes a lot faster when they're making something they need.

Re: Learning Exercises
by gam3 (Curate) on Apr 14, 2005 at 12:15 UTC
    I would suggest merlyns book Effective Perl Programming as a good perl tutorial. If you want a book of problems I think that SICP is very good. The code is in scheme so there would be an added challenge to solve them with perl.
    -- gam3
    A picture is worth a thousand words, but takes 200K.
      That's a very good book, but its main author is Joseph Hall.

      The intern could also peruse sites like http://learn.perl.org

Re: Learning Exercises
by nimdokk (Vicar) on Apr 14, 2005 at 11:50 UTC
    Well, I'm in a similar situation, introducing a colleague to Perl so he can help us out on a project we are working on. When I've got the time to work with him, we are doing some hands-on type stuff, geared mostly at what we will need him to do (very specific task of updating several hundred Perl scripts). But I also gave him a copy of the llama book and suggested he work through it on his own. He's also signing up for a the basic Perl class that Sun offers. But, as others have mentioned, I highly recommend the llama book as a good, basic introduction.
Re: Learning Exercises
by rev_1318 (Chaplain) on Apr 14, 2005 at 11:36 UTC
    You could send him to a Perl-training!

    Otherwise, self-study with the use of the Llama book, or the Camel book (both from O'Reilly) may be in order

    Paul

Re: Learning Exercises
by ww (Archbishop) on Apr 14, 2005 at 15:15 UTC
    Is the newbie an "intern?" (Note the diff: an "intern" may be getting value from the association by way of learning, education credits or other, while an "apprentice" is swapping his/her labor/time for learning, employment and PAY.)

    Over the years (in another field) I got saddled with interns several times. The absolute best and brightest brought a background better than comparable to your nicely phrased "quote the syntax" level and was a joy. She was the only intern who helped me do my job (summed over the course of a year) as much or more than I taught her.

    The rest, simply put, were a drain on my time and energy. They weren't bad people but they were in over their depth; interned (in most cases for college credits) at a level for which they didn't have the fundamentals (can I spell "development knowledge?" <G>If not I can cut and paste it from OP's observations.)

    That said, is it your judgement that he's been there long enough that he should be "in control?"

    If so, it seems to me you have to choose between suggestions like those offered by tphyahoo, fletch and jpeg (and plan on correcting his "homework") or do yourself and the individual a favor by strongly suggesting he find another academy, because neither you nor the rest of your team is in the business of running a school.

Re: Learning Exercises
by starbolin (Hermit) on Apr 14, 2005 at 16:13 UTC

    jpeg sais:

    Work with that. What does he want to do?

    add to that: What can he do? Being a good manager is often about finding useful traits in difficult people. Sometimes it takes a lot of trial and error to find something to which a person can contribute.

    This fellow may feel the fact that he is out of his depth and respond by being overly needy of input about his code. He may need to be on something outside the main development effort to which he can still feel he's contributing. He might work on documentation or testing. He could do literature searches ( online of course. ) Profiling, translations, and bug list maintance are some other common task he could try.

    Another way to avoid the "lost in the dark" syndrome is to pair him with another intern and foster some competition. This way you also look good to your boss. "Ropey manages two interns, why can't you?"

    Good luck


    s//----->\t/;$~="JAPH";s//\r<$~~/;{s|~$~-|-~$~|||s |-$~~|$~~-|||s,<$~~,<~$~,,s,~$~>,$~~>,, $|=1,select$,,$,,$,,1e-1;print;redo}
Re: Learning Exercises
by logan (Curate) on Apr 14, 2005 at 18:28 UTC
    I've acutally been through this a couple of times, and I'm currently training a friend. I recommend finding something your intern knows how to do from the command line and set them to automating it. One advantage to this approach is that they already know how it should work, so they can focus on the programming aspect.

    For example, have them write a log file filter. Set them to writing a script that will open a logfile, search for key data, and output that data to a separate file.

    Another task would be to have them write a wrapper around ping, host, and traceroute that would crawl your network. The output might actually be useful, as you may discover some things about your network.

    Another good project is a tool that uses MP3::Tag to manipulate the tags on an mp3 collection. It's a good project for learning perl modules, hashes, and pattern matching.

    Finally, as to the Camel and Llama books, if your intern wants to code perl, they need the Camel book. It's a formal requirement. Period. If they're so dead broke that they can't afford used copies (and I remember those days), and your company refuses to pony up for a corporate copy of O'Reilly's CD bookshelf, and you can't get them to trade for it ("Mow my lawn and wash my car and I'll buy you the damn book, kid"), there's a solution. It's not pretty, and it's illegal I'm sure: Google for it.

    -Logan
    "What do I want? I'm an American. I want more."

      I know this is blasophmy, but I've never found the Camel and Llama books all that helpful. I've yet to read every single page in them.

      Your best chance to learn is to find an online tutorial or two. Understand how perl deals with variables (i.e. the difference between $foo @foo %foo &foo) and program control (i.e. if while for foreach sub). Also look over http://www.perldoc.com/perl5.8.4/pod/perlfunc.html to get an idea of what commands are available.

      At that point try your first simple project. If you can't figure out how to do it after a few days, google for it. If that fails ask around here.

      Best of Luck

Re: Learning Exercises
by NateTut (Deacon) on Apr 14, 2005 at 19:46 UTC
    This sounds like a difficult situation for the "intern". No pay and can't afford books? I hope he is resourceful.

    I can afford books, but I learned Perl solely by using internet resources. PerlMonks is an excellent source of course as is PerlDoc and if he is a Win32 type ActiveState.

    It seems he has access to a PC of some sort hopefully it is hooked into the internet.

    He needs a problem to solve that he understands to start with. Re-writing the Unix utils is good, but may be too much to start with. Give him access to some good code and encourage him to write like that.

    20050417 Edit by ysth: make perlmonks link domain name-agnostic

Re: Learning Exercises
by Mr. Muskrat (Canon) on Apr 15, 2005 at 01:21 UTC

    Who ultimately decides which members of the offshore team will be allocated to your development team? If it's the offshore managers, then you have bigger worries than the intern. If it's you, then why did you allow an offshore intern on to your development team in the first place given that you know you don't have time to mentor him correctly? If it's your boss (or your boss' boss), then why did they make that decision? Personally, I'd never accept an offshore intern simply because you have to hold their hand for a very long time; they're interning because they can't get a paying job due to lack of knowledge.

    We have been working with an offshore team for quite some time. My manager interviewed the potential team members and decided who he wanted to work with us. Many (maybe most or even all by now) of those people are members here.

    Even though my manager picked the best that the offshore team had to offer, we have had to mentor them the entire time. You are always going to have to give suggestions to the new team members regardless of their location so in that regard using offshore resources is not all that different from using in-house resources. Of course, in-house resources take less time to mentor.

    The intern can't afford to buy a book... Are there libraries in Delhi and do they have Perl books? Before I bought my first Perl book, I started reading everything I could find out about it over the internet. Get the guy to sign up here and have him start reading the Tutorials; specifically Getting Started With Perl and Functions, Subroutines, and Variables. There are plenty of exercises to be found here to keep him busy learning for years to come.

Re: Learning Exercises
by ghenry (Vicar) on Apr 15, 2005 at 15:02 UTC

    Can you give him the perl source code to compile?

    Then he can read all the docs that come with it, and re-type some of the examples in the tuts etc.

    Just a thought.

    Walking the road to enlightenment... I found a penguin and a camel on the way.....
    Fancy a yourname@perl.me.uk? Just ask!!!
Re: Learning Exercises
by Popcorn Dave (Abbot) on Apr 14, 2005 at 19:23 UTC
    Something else to consider, and I'm suprised nobody mentioned it, is to look at the websites for the various publishers. Don't most of them have the code examples from their various books? You've got a wealth of both problems and solutions right at your fingertips.

    HTH!

    Useless trivia: In the 2004 Las Vegas phone book there are approximately 28 pages of ads for massage, but almost 200 for lawyers.