How to conduct a good programming interview
It&#x27;s good to think carefully about how you interview candidates. Most of the ideas in this post are good. You should definitely let candidates type answers on computers. You should definitely work to put them at ease, in an environment that approximates their actual working environment.<p>But really, this is window dressing. The problem is that technical interviews just don&#x27;t work reliably. We have better ways to qualify candidates.<p>Rather than trying to read subjective, noisy signals from in-person interviews, give candidates a small battery of <i>work-sample tests</i>. These can be bug-fixes, small features, diagnostic challenges, or even specification writing assignments.<p>A properly designed work-sample challenge has a <i>rubric</i>: a set of instructions for scoring a result. Ideally, the rubric is straightforward enough for someone who hasn&#x27;t met the candidate to quickly score their result. &quot;Runs correctly&quot;. &quot;Passes a battery of unit tests&quot;. &quot;Includes appropriate documentation&quot;. Whatever is important for your team.<p>Work to give every candidate the same set of challenges, so you can track results over time. You&#x27;ll find that after refining and iterating for a few months, you&#x27;ll rapidly build confidence in the tests, to the point where in-person interviews become superfluous for technical qualification.<p>Working on technical qualifiers is stressful. Most candidates will perform more poorly on them than they would on normal work. You should build that into your rubric (though, really, data from candidates will ultimately determine how strict the rubric becomes).<p>Understanding how stressful qualifying work is, you should consider not requiring candidates to work on problems on-site. Instead, administer them online. Suggest the amount of time you expect the problems to take to finish, and offset that amount of time from the amount you demand on-site.<p>When you must interview, you should work hard to <i>standardize the interview</i>. Interviewers <i>hate</i> this. Everyone has their favorite questions. People want interviews to be conversational and adaptive. Interviewing isn&#x27;t supposed to be fun for the interviewer; it&#x27;s supposed to be reliable.