During our last hiring round, I had a really nice cross-browser bug at hand, and I ran our finalists through a coding session where they remoted to my laptop and had one hour to fix the bug or get as far as they could. Instead of a contrived puzzle they were working on production code. It was great! And since they all worked on the same bug, I was able to score them on a ten point scale for easy comparison.
We've started another hiring round, and this time I didn't have any good Python bugs at hand. What to do? Open source! We use the CherryPy framework a fair bit here (the maintainer is on our team). So this round I am pairing up for an hour of work on CherryPy. It moves an open source project forward, it's cleaner than having people work on proprietary code, and we still get a great picture of each candidate. Win all over the place. This time I am inviting candidates to share their screen with me rather than vice versa. Last time I tried at least installing the person's editor of choice, but there's no place like ~, ya know? Another thing that happened last time is that by the end of the interviews I had gone through the exercise so many times that it felt much less like pair programming and much more like thumb-screwing. At the expense of a neat scoring system, I am not going to go over the same ground this time. I already updated one CherryPy ticket, and we'll keep chipping away at that one and others. I expect some level of familiarity with Python and its tools, but I'm happy to teach you what I know. A nice side-effect is that I get to learn what you know too. :^)
We've got three spots open and we're just starting interviews, so if you'd like to pair together for an hour on CherryPy, hit me up at chad.whitacre@yougov.com.
However, do you find a pattern with candidates hitting snags that aren't really technical? Like, environmental issues etc?
Think really the only way to do this right is to control it as much as possible, possibly providing a failing unit test, or extremely detailed instructions. I can see a lot of wasted time trying to figure out dependencies, system path problems, etc