Today, Jeff revisits the theme that made him famous – regarding the non-programmer who shows up for the programmer job interview – but couldn’t write the most trivial amount of functional code.
It’s funny to read about programming candidates who couldn’t even write a loop that counts from 1 to 10. They’re a joke. But isn’t it more of a joke that some lead programmer couldn’t weed these suckers out before he committed company resources to the on-site interview?
In my experience, fake programmers like this can be exposed within minutes*, over the phone, with just one challenge:
Discuss what you know about the C++ keyword virtual.
A C++ programmer smart/experienced enough to deserve further consideration for your team will immediately start talking about virtual functions and their importance in polymorphism. They will mention pure virtual functions and their relation to abstract classes (that cannot be instantiated). They will speak in terms of vtables. They will talk about that time they were burned when they forgot to make a destructor virtual. Or when they found that call to a virtual method from a constructor/destructor. Or when they were forced to employ virtual inheritance to hack through a poorly designed system of classes, swearing off multiple inheritance forever**.
They may need a little bit of prodding on some of these points, perhaps due to nerves, and they may miss some finer details, but for the most part they will be able to convince you, within minutes, that they know what they’re talking about. You can now spend the rest of the phone screen digging a bit deeper and getting an early sense of team fit.
And the fake programmers? They are toast. There is just no way they can fake that kind of knowledge and experience. Just politely tell them you’ll be looking at other candidates and get on with life***.
* Credit for this technique goes to Matt Walker, my lead and mentor while at NCsoft.
** Well, maybe not forever, but you get the idea.
*** Real, yet weak, programmer candidates are toast too. Keep looking.