Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Have you netted a Perl Monk or Perl Pretender in 5 minutes or less?

by Anonymous Monk
on Sep 13, 2005 at 19:36 UTC ( #491672=perlquestion: print w/ replies, xml ) Need Help??
Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hello,
This is not really a technical question though it is about Perl. I apologize in advance if I offend someone who doesn't think this is an appropriate forum for my question.

I am currently the Perl Go-see at work despite my minimal Perl knowledge. I'm gladly helping my boss interview some people to take over as the Perl "experts" at our workplace. He has asked me to do the technical part of the phone pre-screen interview, to determine if we've actually caught a Perl master or Perl pretender.

The question: What question would you ask this person to determine the level of fluency he has in Perl?

I look forward to any reply...
Victor

2005-09-14 Retitled by g0n, corrected spelling of 'minutes'
Original title: 'Have you netted a Perl Monk or Perl Pretender in 5 mintues or less?'

Comment on Have you netted a Perl Monk or Perl Pretender in 5 minutes or less?
Re: Have you netted a Perl Monk or Perl Pretender in 5 minutes or less?
by kirbyk (Friar) on Sep 13, 2005 at 19:39 UTC
    How about "What's your Perl Monks username?" :-)

    -- Kirby, WhitePages.com

      And if he says, "tye", then you know you've got a Perl Pretender on your hands! :-)))))))))

Re: Have you netted a Perl Monk or Perl Pretender in 5 minutes or less?
by japhy (Canon) on Sep 13, 2005 at 19:44 UTC
    Phone interviews are less interesting than in-person interviews, because you can watch the person as he or she thinks through a programming question or challenge. As far as what you can ask, I would ask them what Perl books they own or use on a regular basis (look for O'Reilly titles as well as a handful of the others from Manning and A-Press), and ask them if they take part in any online or in-person Perl community (such as perlmonks, Perl Mongers, #perl on IRC, etc.).

    Jeff japhy Pinyan, P.L., P.M., P.O.D, X.S.: Perl, regex, and perl hacker
    How can we ever be the sold short or the cheated, we who for every service have long ago been overpaid? ~~ Meister Eckhart
      I'm not certain this is a good question. I own the camel book and some old CGI programming book, but I rarely (if ever) consult these. The web and perldoc are much more useful (as it lets me get at the information more quickly).
        I think it's a good question, as long as the interviewer is good. As an interviewer you don't necessarily want them to mention a "right" answer. Many times a different answer can be acceptable, if it's correctly justified.
Re: Have you netted a Perl Monk or Perl Pretender in 5 minutes or less?
by cbrandtbuffalo (Deacon) on Sep 13, 2005 at 19:49 UTC
Re: Have you netted a Perl Monk or Perl Pretender in 5 minutes or less?
by socketdave (Curate) on Sep 13, 2005 at 19:50 UTC
    Ask the candidate to code a simple program. Check to see if the program works and if they use strict;

    Avoid leading questions. Ask them to tell you about projects they've worked on, what problems they found most interesting and how they solved them. You may not be able to accurately determine their level of Perl prowess, but you'll get a good feeling for their skill level.

    One other thing... Note how candidates list 'Perl' on their resume. Perl, not PERL perl or pearl.

    hope this helps!
      ++ to kirby, ask him\her for their Perl Monks username PERFECT~! =:-)
      Definately check for typos on the spelling of Perl, or ask them what Perl stands for, or what is a shebang line?
      or really simple things, like who is Larry Wall or Damian Conway.

      P.s. If he says their username is "Paco" ask where the heck he's been for the past few years =:-)
        Er... it's a good idea, but not necessarily "perfect"

        There's a lot of great Perl hackers out there who've never been to the monastery before. And that's not a good reason not to hire/interview them.

        Nobody knows what "Perl" really stand for (so it is a trick question) and I never use a "shebang" line in my scripts as on Windows its use is very limited, so that would not necessarily weed out the good from the bad.

        Better to ask whether they use c-style for-loops or know what the Schwartzian Transform is.

        CountZero

        "If you have four groups working on a compiler, you'll get a 4-pass compiler." - Conway's Law

      Ask the candidate to code a simple program.

      On the telephone? :-)

        Absolutely! The ideal candidate would also know how to use email and/or a remote shell ;)
Re: Have you netted a Perl Monk or Perl Pretender in 5 minutes or less?
by QM (Vicar) on Sep 13, 2005 at 20:03 UTC
    What question would you ask this person to determine the level of fluency he has in Perl?
    I would suggest a few open questions with no right-or-wrong answers. To get you started:
    What is your favorite useless (or not-so-useless) Perl module? Why? (e.g., Acme::Bleach)

    Who is your favorite module author, and why? (e.g., Conway, because he solves wonderful problems I didn't know I had, and the journey is often more interesting than the solution, which is never trivial.)

    Did you follow or participate in the Quiz of the Week? If so, which was your favorite Quiz? Why?

    When is Perl the right tool for the job? When is it not?

    If Larry could go back in a time machine and change one thing about Perl, what would you want him to change? Why? (e.g., add a multiline comment facility)

    Encourage both serious and non-serious responses. It's not so much what is said, but whether there is experience lurking behind the answers.

    If the interviewee seems capable of talking at length about almost any aspect of Perl, you've got a winner. If "Larry who?" comes up, you *may* have spotted a fake.

    -QM
    --
    Quantum Mechanics: The dreams stuff is made of

Re: Have you netted a Perl Monk or Perl Pretender in 5 minutes or less?
by mpeters (Chaplain) on Sep 13, 2005 at 20:06 UTC
    I would ask them
    • do they participate in any perl mailing lists (mod_perl, etc)
    • what CPAN modules do they use on a regular basis
    • do you have any code on CPAN, or have you contributed any patches to CPAN modules

    -- More people are killed every year by pigs than by sharks, which shows you how good we are at evaluating risk. -- Bruce Schneier
      "More people are killed every year by pigs than by sharks, which shows you how good we are at evaluating risk".

      I'm sorry, I had to say something. :) More people are in proximity to pigs than sharks, therefore it does not follow that a pig poses a bigger risk than a shark, which shows you how good Bruce Schneier is at critical thinking (whoever he is). :)

      I feel better now. Sorry all.

      And as to the actual topic. I think the best question is "Can I have a URL that points to some of the code you have written in Perl?" Or, "Where can I see an example of the work you have done in Perl?"

      It's more time-intensive, especially if you have 300 resumes on your desk, but it should be remembered that hiring a new employee is a big risk and investment for a company. In general too little time is spent on screening. Everyone wants to check them out "on the job" -- but inevitably you never get rid of the lemons.

      -Andrew.


      Andrew Tomazos  |  andrew@tomazos.com  |  www.tomazos.com
        More people are in proximity to pigs than sharks, therefore it does not follow that a pig poses a bigger risk than a shark...

        Every person in the water at a beach right now—millions a day—is in proximity to sharks. Drastically fewer pig farmers are down in the stalls on a regular basis. Also, I think we can all agree that more persons are in proximity to pigs than sharks. Sharks are rarely anywhere near pigs. I'm sorry, I had to say something. :)

Re: Have you netted a Perl Monk or Perl Pretender in 5 minutes or less?
by graff (Chancellor) on Sep 13, 2005 at 20:18 UTC
    If I had to do this sort of interview over the phone, I'd probably cover things like:
    • Do you remember which version of perl was the first one you ever used? What version are you using now? (This could cover OS experience, which may be relevant.)
    • Have you used non-core Perl modules from CPAN? (Briefly discuss a couple favorites, if any, and if there's time.)
    • Have you developed modules for your own use? (Might be hard to discuss these in detail.)
    • Do you use other languages besides Perl? (If so, discuss thoughts, preferences, annoyances, etc, about the respective languages, to the extent there's time.)
    • Do you use the perl debugger? What do you think of it?
    • How often do you use perldoc?
    These should give you some sense of the person's familiarity and comfort level with Perl. If they never used "perl -d", that's not a killer, but knowing how to use the debugger means a good deal. If they don't know what perldoc is, they don't know enough.

    Apart from that, I'd probably stick to things that are more likely to be specific to the position being filled -- e.g. database experience, web experience, etc, if these are relevant.

      Do you remember which version of perl was the first one you ever used?
      Version 1.0, released 12/18/1987. I think I unpacked it a few weeks later from the multiple Usenet parts, and built it.
      What version are you using now?
      When maintperl is being updated (as it has begun again recently), I daily run my "get.snap" script which does:
      /usr/bin/rsync -av --delete rsync://ftp.linux.activestate.com/perl-5.8 +.x/ /opt/perl/snap/MIRROR/
      And then when I detect useful changes, I run /opt/perl/snap/src-sync-config:
      #!/bin/sh cd /opt/perl/snap || exit 1 rsync -av --delete MIRROR/ src/ ## darnit I want one-level namespaces echo ... PATCHING src/hints/darwin.sh ... perl -pi-DIST -e 's/\[2-6/\[2-9/' src/hints/darwin.sh cd src || exit 1 PATH=/usr/bin:/bin ./Configure -des -Duseshrplib -Dusedevel \ -Uversiononly -Dprefix=/opt/perl/snap \ -Dlocincpth=/sw/include -Dloclibpth=/sw/lib \ -Dperladmin=merlyn@stonehenge.com
      followed by "make all test install" in the src directory. The last few days, "make test" fails on OSX, so I have to horse around doing the install manually.

      Then I run "cpan-r", described in a recent magazine article of mine, to run the CPAN shell using Expect, executing the "r" command and automatically updating all out-of-date modules.

      Do I get the job? {grin}

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

        Do I get the job?
        If you could explain all that over the phone, I'm sure they'd give you serious consideration. :)
        Do I get the job? {grin}
        have you ever heard of the term "overqualified"? =)

        Hey, merlyn, you might get the job, but I don't know if it would meet your salary requirements ;-)

        Paulster2


        .oO( If only I could think of something perlish to write.... )
      Do you remember which version of perl was the first one you ever used? What version are you using now? (This could cover OS experience, which may be relevant.)

      I like this question, although I don't really see why it would be useful in an interview. Mine, for example, is 5.00503 (becuse that's what came with SuSE 6.3), but I keep forgetting the 0.03e-3 part, so I had to look up it in the archive of my previous linux installation.

Re: Have you netted a Perl Monk or Perl Pretender in 5 minutes or less?
by Anonymous Monk on Sep 13, 2005 at 20:24 UTC
    Wow,

    Thanks everyone for the response. I have some great ideas now for interviewing the applicants tomorrow. And judging by the questions you've provided I should be demoted from the Perl "Go-see" guy to the Perl "I-can-open-a-file-and-parse-it" guy.

    I do have a login on this site, btw, but have forgotten my username password... :) Victor
      That sounds like a great question to me -- ask them how they'd open a file and parse it. It may involve a bit of verbal punctuation, but you can easily wander off into the dis/advantages of using @ARGV and <> as opposed to opening the file manually, perhaps the distinction between while(<>) and while($_ = <>), error handling on the open, and a kazillion things related to parsing (roll-your-own XML parser, or use a module? DOM or SAX or XML::Parser? backslashed quotes in CSV files? when is good enough good enough? etc.)

      I work for Reactrix Systems, and am willing to admit it.
Re: Have you netted a Perl Monk or Perl Pretender in 5 minutes or less?
by saberworks (Curate) on Sep 13, 2005 at 21:25 UTC
    I think the best measures of a good perl programmer are:
    1. usage of CPAN modules when available
    2. demonstrated knowledge of perl references
    3. demonstrated knowledge of (at least basic) regular expressions
    4. use strict; dammit
    Ask for code samples they've written in the last 6 months.
    Ask them to code something on a whiteboard.

    More important is their basic application design knowledge. How to put together a program. How to modularize it. How to make the components reusable (do they even THINK about this?). How to break up a large spec into discrete parts which can be tackled somewhat atomically.

    During interviews, I've been subjected to completely silly "program this crap with no external resources" and "what do the $' and $" and $/ and $\ vars in perl mean?" tests as well as others which concentrate more on my background and general domain knowledge. I think the former had it less right simply because nobody in their right mind codes without internet access or at least some freaking documentation at hand.

    One who abstracts the database connection code into a module and never has to think about it again is more qualified than someone who memorizes the order of arguments to the DBI->connect() method.
      Yes, indeed. 'use strict' dammit dammit dammit!

      Admittedly, some perfectly valid code will not sneak past the strict pragma, but there should be a valid, easily explained reason for using 'no strict <something>' in a local scope.

      It's my considered but possibly flawed opinion that professional discipline requires the use of the strict pragma. If you cannot easily justify why it is not being used, you're probably just too darn lazy to do a good job. So sez me.

      Your other points are equally valid IMHO, but the strict pragma I think deserves more attention. But then, I've been publicly flogged for my insistence upon its use, not just here but on other well-regarded Perl related sites, so I'm a mite sensitive to it. USE STRICT DAMMIT DAMMIT DAMMIT!

      My subconscious is playing tricks. I read item 4 as:

      use strict; gromit

      I imagine that Wallace is a Perl hacker par excellence, and codes drivers for all his gadgets in perl. I bet he uses strict, and taint mode after his episode with the wrong trousers (having your webserver rooted and vandalised is very much a comparable experience).

      --

      Oh Lord, won’t you burn me a Knoppix CD ?
      My friends all rate Windows, I must disagree.
      Your powers of persuasion will set them all free,
      So oh Lord, won’t you burn me a Knoppix CD ?
      (Missquoting Janis Joplin)

Re: Have you netted a Perl Monk or Perl Pretender in 5 minutes or less?
by monarch (Priest) on Sep 13, 2005 at 23:56 UTC
    Ask, "what are some good books on programming that you've read?".

    You want to ensure the programmer is not just a 'perl' person. Ensure that they have an appreciation for the art of programming. Often interviewers talk about the SDLC (Software Development Life Cycle). It's a buzzy keyword that is largely baloney, but essentially it means "have you written something, debugged it, debugged it some more, debugged it even more, and had to recode it cause the customer wanted something different?".

    A good programmer learns. And has the experience to know how to code defensively, almost predicting what bugs he's likely to produce.

    A good programmer is open to criticism of his source; every workplace has different styles, and fitting into a workplace with a different coding style shows flexibility and willingness to co-work with your group.

Re: Have you netted a Perl Monk or Perl Pretender in 5 minutes or less?
by jbrugger (Parson) on Sep 14, 2005 at 04:21 UTC
    I would not be that interested if somone would be relatively new to the language, as to see how fast someone would be able to learn it.
    Not knowing the exact level needed reading your question, i'd ask about the way a problem would be solved (look at scope does the person thinks in), i'd ask about known and used coding patterns. (is the person a developer or does he / she only type the code that's designed by someone else).
    If you really want to know if the person is a merlyn like guru, ask about perl-internals and his OO-perl capabilities as well.
    Next, i'd like to see if the person fits in the team you're working in.
    I only wonder if this can be done in a 5 minutes screening...

    "We all agree on the necessity of compromise. We just can't agree on when it's necessary to compromise." - Larry Wall.
What worked on me! :-)
by BerntB (Deacon) on Sep 14, 2005 at 06:04 UTC
    I've always loved Perl, but for quite a few years I haven't had the chance to do much, except as a hobby.

    I know Apache, has done Unix sysadm stuff, other languages, etc, but my 1999+ Perl web programming background is specialised, since I usually don't do db or web programming for hobby.

    At an interview at the beginning of the summer, the interviewer asked me questions and let me code some stuff with a templating system.

    I said exactly what I had done and not. They seemed quite impressed -- so I was surprised when I didn't get the project.

    In hindsight, when I know more about modern web modules and methods, I realize that they understood that I knew Perl -- but would have to learn more than I thought. They made the right choice.

      I think this is very wise. Fundamentals are imperious to being a Perl programmer, but when interviewing for a contract or a particular project, being familiar with the methods and templates you are going to use is just as important. The catch, however, is that the project-specific details are usually much easier to learn than the fundamentals.
Re: Have you netted a Perl Monk or Perl Pretender in 5 minutes or less?
by blazar (Canon) on Sep 14, 2005 at 09:16 UTC
    • Ask them which is the difference between "Perl", "perl" and "PERL",
    • ask them if by any chance there's a couple of modules they always use at the top of quite about everyone of their scripts, with at most the exception of one-liners or the like.
      And ask them if they know the difference between a module and a pragma. :-)
        Isn't it that there are pragamatic modules but not modular pragmas? Or are there?!?
Re: Have you netted a Perl Monk or Perl Pretender in 5 minutes or less?
by Anonymous Monk on Sep 14, 2005 at 12:35 UTC
    Some of your interviewees will certainly get a good headstart reading all the good questions Perl monks suggested! I would add what's the difference between arrays and lists? And your confort level with OO origramming?
Re: Have you netted a Perl Monk or Perl Pretender in 5 minutes or less?
by Washizu (Scribe) on Sep 14, 2005 at 15:01 UTC
    I was the interviewee in a situation just like you described. One of the questions I was asked was... What is the "my" operator used for?

    -----------------------------------
    Washizu
    Odd Man In: Guns and Game Theory

      What is the "my" operator used for?

      I hope you pointed out it's actually a function :-)

Re: Have you netted a Perl Monk or Perl Pretender in 5 minutes or less?
by benrwebb (Scribe) on Sep 14, 2005 at 19:29 UTC
    There are three lines of code I always ask people to gauge their Perl skills. I write them down on a white board and ask what they do.

    my $c = 1 unless $c;
    to see if they understand Perlish shorthand and
    my $foo = @bar; my ($phoo) = @bar;

    I ask them the difference, and what would actually be assigned to $foo and $phoo. This tells me if they understand the concept of "context". I also ask about the "my" and what it actually means. This, IMHO, covers most of what makes Perl different from other languages, and seems to weed out the pretenders.

    update
    Ok, I screwed this up. my first line of code doesn't acutually work. I pulled something out of context that works in my mind but not in practice. That should have been this: $c = 1 unless $c; putting the 'my' on there would actually re-declare the variable and set it to undef if it resolved to 'true'. Of course, with this line of code the variable must be pre-declared (I use this when testing web params - the variable defaults to undef if it wasn't filled in by the user, so I get code like $name = 'unknown' unless $name)
      Okay, I'm curious, why is that useful and/or not a trick question?
      $c = 2; print "Before: c=$c\n"; my $c = 1 unless $c; print "After: c=$c\n";
      That prints out...
      Before: c=2 After: c=
      ...on my machine (perl5.8.6).
        That prints out:
        Global symbol "$c" requires explicit package name at programname.pl li +ne 5. Global symbol "$c" requires explicit package name at programname.pl li +ne 6. Global symbol "$c" requires explicit package name at programname.pl li +ne 7. Execution of programname.pl aborted due to compilation errors.
        Oh... you didn't use strict :)

        "We all agree on the necessity of compromise. We just can't agree on when it's necessary to compromise." - Larry Wall.
Re: Have you netted a Perl Monk or Perl Pretender in 5 minutes or less?
by pvaldes (Chaplain) on Dec 17, 2012 at 14:57 UTC

    Ask them for the telephone number of Larry Who. The private "use strict; only for perlmergencies" one.

    If you ask a perl's master for the differences between perl, pErl, Porl and PERL you'll obtain a funny clic at the other end of the line, probably.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://491672]
Approved by Corion
Front-paged by Thilosophy
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (5)
As of 2014-12-20 09:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (95 votes), past polls