Programming Puzzles for Screening Engineers
Hiring great engineers is perhaps the toughest and most important challenge that any tech startup faces. You want smart, energetic, adaptable people with a broad range of skills and interests, the ability to finish what they start, and who fit into the culture you’re trying to establish or maintain. There’s no foolproof set of techniques for predicting whether or not a candidate will have the right characteristics in the right proportion once hired into your environment. Sometimes it’s hard to tell even after you’ve hired someone and have had a chance to observe their performance for many months!
Many tech startups (justifiably!) focus lots of energy on assessing smartness in the context of basic computer science and engineering. It is widely accepted in tech that job candidates are ‘treated’ to lots of brain teasers and problem solving ‘opportunities’ during interviews. Another mechanism that I’ve noticed recently is the use of programming puzzles as a pre-interview filter. Google tried this in 2004 with the Google Labs Aptitude Tests. Recently I’ve seen some buzz around the programming puzzles that Facebook is using to gather applications.
It’s hard to say how predictive these puzzles are of future success in startup engineers. Regardless, they can be fun and in and of themselves can perhaps attract applications from good people who otherwise wouldn’t apply to your company. I even got sucked into one of the Facebook puzzles, Prime Bits which has a trivial solution whose slowness may at first be hard to see, and at least one fast solution which might not at first be obvious. That, by my estimation, makes this a pretty good puzzle. I will also note that someone at Facebook must have a thing for combinatorial puzzles.