Re: Have you netted a Perl Monk or Perl Pretender in 5 minutes or less?
by QM (Parson) 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
| [reply] |
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. | [reply] |
|
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}
| [reply] [d/l] [select] |
|
Do I get the job?
If you could explain all that over the phone, I'm sure they'd give you serious consideration. :)
| [reply] |
|
Do I get the job? {grin}
have you ever heard of the term "overqualified"? =)
| [reply] |
|
| [reply] |
|
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.
| [reply] |
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
|
| [reply] |
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?" :-)
| [reply] |
|
| [reply] |
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:
- usage of CPAN modules when available
- demonstrated knowledge of perl references
- demonstrated knowledge of (at least basic) regular expressions
- 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. | [reply] |
|
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)
| [reply] |
|
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!
| [reply] |
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
|
| [reply] |
|
"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.
| [reply] |
|
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. :)
| [reply] |
|
|
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.).
| [reply] |
|
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).
| [reply] |
|
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.
| [reply] |
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! | [reply] |
|
++ 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 =:-)
| [reply] |
|
| [reply] |
|
| [reply] [d/l] [select] |
|
Ask the candidate to code a simple program.
On the telephone? :-)
| [reply] |
|
Absolutely! The ideal candidate would also know how to use email and/or a remote shell ;)
| [reply] |
|
| [reply] |
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. | [reply] |
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
|
| [reply] |
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 | [reply] |
|
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.)
| [reply] [d/l] [select] |
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.
| [reply] |
|
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.
| [reply] |
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.
| [reply] [d/l] |
|
And ask them if they know the difference between a module and a pragma. :-)
| [reply] |
|
Isn't it that there are pragamatic modules but not modular pragmas? Or are there?!?
| [reply] |
|
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? | [reply] |
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
| [reply] |
|
| [reply] |
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)
| [reply] [d/l] [select] |
|
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). | [reply] [d/l] [select] |
|
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.
| [reply] [d/l] [select] |
|
|
|
|
|
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.
| [reply] |