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

My employer is trying to hire another programmer to join me in the shop here (which I would really like). The CTO strongly believes that any strong candidate who passes the interview should be required to pass a programming test before we make an offer. Having seen some of the code written before I got here, by people who they didn't test, I can't argue too much.

Now when I took this job, the test was to make a small modification to a medium-sized web app (about 5200 lines in 10 files). This app is pretty horrible -- subs are several hundred lines long, it uses no modules other than DBI and CGI (and that only for parsing POST params), and all data is passed around via global variables; no data is more complex than a simple hash. It does not use strict. It is, unfortunately, representative of the bulk of our code base, so being able to figure out its behavior well enough to make the requested modification is a pretty good test.

But I've been trying to advance the state of the art over the last year, and all my new code uses CPAN modules as appropriate, is mostly OO, runs clean under strict and warnings, and generally doesn't make me feel icky. In other words, it looks like Perl5. So I've been asked to develop an additional test that will allow candidates to demonstrate their skills along these lines.

I'm finding I don't have a good idea of how to proceed. Ideally this would be something that a reasonably skilled developer could finish in 30-60 minutes, that would demonstrate an understanding of, and comfort with, strictness, lexicals, modules, objects, and references. I'd appreciate any thoughts on how to construct such a beast, or references to any such tests. Thanks!