The article Why You Can't Hire Great Perl Programmers addressed the core Perl community. We need to encourage Perl dabblers to improve their skills and to join the community.
Several commenters noted that the article did not address the employer side of hiring. Certainly an employer offering $15 an hour for Perl programmers in Silicon Valley or New York City or Chicago or Seattle will have to work much harder to entice great programmers than someone paying competitive wages.
Editor's Note: The whitepaper Where to find a programmer who knows modern Perl now addresses this question. If you're hiring, the guidelines there may help you.
There's another point to which some people alluded but no one, to my knowledge, addressed directly. It's not easy to identify good programmers in any language unless you're a good programmer yourself. For all of the flaws in the infamous interviewing systems of Microsoft or Google (and there are many flaws in those interviewing processes), they have the advantage that people who clearly don't know what they're doing tend to expose their ignorance.
You probably don't want to go through the time, expense, and nonsense of those hiring practices (as if you could afford them), and, for various reasons, there will never be a Perl certification test widely accepted as useful and informative. Even still, there are ways to identify good Perl 5 programmers. Here's a list of questions every good Perl programmer should be able to answer effectively:
- What do variable sigils indicate in Perl 5?
- What's the difference between accessing an array element with
- What's the difference between
- What do you get if you evaluate a hash in list context?
- How do you look up keywords in the Perl documentation?
- What is the difference between a function and a method in Perl 5?
- When does Perl 5 reclaim the memory used by a variable?
- How do you ensure that the default scope of a variable is lexical?
- How do you load and import symbols from a Perl 5 module?
What governs how Perl 5 loads modulesHow can you influence the list of directories from which
perlattempts to load modules?
- How do you look up error messages in the Perl 5 documentation? (Award bonus points for knowing how to enable explanations of all error messages encountered.)
- What happens when you pass an array into a function?
- How do you pass one or more distinct arrays into a function?
- What is the difference, on the caller side, between
- Where do tests go in a standard CPAN distribution?
- How do you run tests in a standard CPAN distribution?
- What command do you use to install new distributions from the CPAN?
- Why would you use the three-argument form of the
- How do you detect (and report) errors from system calls such as
open? (Award bonus points for knowing how to enable automatic detection and reporting of errors.)
- How do you throw an exception in Perl 5?
- How do you catch an exception in Perl 5?
- What is the difference between reading a file with
- How do you handle parameters within a method or function in Perl 5?
- What do parentheses around the variable name in
my ($value) = @_;mean, and what would happen if you removed them?
newa builtin function/keyword?
- How do you read the documentation of a core library? A CPAN module?
- How do you access only the values of a Perl 5 hash?
None of these are trick questions. All of them have simple, unambiguous answers that demonstrate a solid understanding of Perl 5, its philosophy, and its practical use. A good Perl 5 programmer should be able to answer at least 80% of these questions with no trouble. These are not the only questions a good Perl programmer should be able to answer, but anyone who can't answer these questions with ease needs to study more Perl.
The specific needs of your business may dictate further considerations, such as experience with well-understood Perl 5 technologies, but you can begin the technical evaluation of a candidate this way.
If you're starting to learn Perl 5, this list is also a good way to measure your skills. You should be able to answer all of these questions with a little bit of study and practice. All of the answers are available in any good Perl 5 text, including my own Modern Perl.
(You can buy Modern Perl at Powell's, buy Modern Perl at Barnes and Noble, buy Modern Perl at Amazon.com, or download Modern Perl for free and then recommend it to your friends, write a great review, or otherwise spread the word.)