Alternatives to the Whiteboard

Quincy Larson wrote an excellent post, “Why is hiring broken? It starts at the whiteboard.”

A long time ago, when I applied for my second software development job after college, I was thrust in front of whiteboard and asked to code a rudimentary strcpy() function. I felt uncomfortable, with one hand grasping a marker, and the other hand — fingers really — improvising as an eraser.

I wasn’t doing very well, as one interviewer looked unimpressed. The other, however, apparently saw something more in me, and put me in front of his PC and fired up the editor. I took to it like a fish took to water. And I got the job.

Now older, I find myself on the other side, conducting the occasional interview. I try to avoid using the whiteboard, but don’t always succeed. Over time, however, I have developed useful alternatives.

1. Bring me a sample of code that you are proud of and be prepared to discuss it.

Unfortunately, code nowadays is often confidential or under NDA. Open source, or in my day, shareware, fixes that… sort of. You can tell a lot about a candidate from the code’s style and discipline. And yet, for Larson’s subject, Sahat Yalkabov open source extraordinaire, this wasn’t enough to land him a job at a big tech firm. To be fair to the interviewers, reading other people’s code is a real talent and takes energy. Looking over the open source code of 10 candidates would be prohibitive. Perhaps then, it would be best to use this alternative for your most promising candidates.

2. Look over the resume and find a project related to your own. Ask the candidate about it.

How long did it take? What algorithms did you use? What problems did you encounter? If the candidate was deeply involved, he or she could speak at length (points for being clear and articulate).

3. Tell me a few things that you love about C++ and a few things that you hate about C++ (or the language the position requires, or perhaps just the candidate’s favorite language).

This reveals the candidate’s passion for programming, and tells me much much more than having him or her invert a binary tree on a whiteboard. One candidate couldn’t stop telling me things that were bad about C++. Even as I gently nudged him to tell me what he liked about C++, he would eventually drift back to everything wrong with the language. From this, I knew he wouldn’t be a good fit.

These are my core approaches. I try to tease out what the candidate knows and feels, rather than try to test for arcane knowledge. But sometimes, the whiteboard is unavoidable, as is the case for a recent grad who doesn’t have work experience to talk about. But even then, I focus on learning what they know, and make sure to provide a real eraser.