Finding Your Strong Suit
Anyone with more than a few years of experience has been called upon to interview candidates for a newly opened/vacated position. There are many different approaches to conducting an interview, including guessing games, gauntlets and barrages of rapid-fire questions to see how much of the internet the candidate has memorized.
The best approach is usually just having a friendly conversation as it gives the candidate a chance to illustrate their experience via relating war stories, or shoot themselves in the foot with easily catchable lies.
Tim C. was trying to find a mid-level C# developer to develop games. One guy came in and seemed fantastic- Bert. Bert had done a lot of work with 3D graphics and game development, and was strong on the mathematics of 3D rendering, and the intricacies of the various 3D rendering engines. He was able to explain all the concepts of light sources, shading, and so forth in easy-to-understand terms. He was obviously passionate about programming and was maintaining six open source projects on GitHub, mostly related to 3D work. The strong mathematical background was seen by Tim as a good sign, because their company is all about algorithms.
In an attempt to get at something that would give an indication of Bert's skill, Tim asked to see some of his source-code. Bert picked one of his open source projects at random and showed Tim a C++ header file.
"Headers are fine, but can I see some implementation?" Tim wanted to see some meaty algorithmic code and so asked to see his most complex source file. He showed something which looked like a file full of wrappers (of some 3D rendering library); there wasn't any actual real work being done in there.
At this point, Tim reasoned that asking to see some specific code structures, like classes or even conditionals might get the desired sample work, so he asked to see a file that had some loops in it.
"Oh, this project doesn't have any loops in it."
Tim asked to see a project that did, Bert umm'd, ahh'd and eventually found one of his six open source projects that had a loop. He said apologetically "loops are not my strong point".
While it's extremely reasonable that a candidate might not know the details of some function call in some library, it's equally unreasonable for them to admit to not knowing what is maybe the third thing they teach you in CS-101.
On that point alone, Tim and peers decided not to hire him.
[Advertisement] Forget logs. Next time you're struggling to replicate error, crash and performance issues in your apps - Think Raygun! Installs in minutes. Learn more.