“If you feel good about the candidate at this point, let them know that you'll be sending them a project to code on their own the next business day. Try to tailor it to your specific needs and if you can manage it, a simplified problem that satisfies an actual business need. Give them a few days to code it on their own. When they submit the code, you'll quickly discover if they copied and pasted some solution vs. working through it themselves.”That suggestion could prove controversial for those interviewers dedicated to having candidates whiteboard out problems on extremely tight deadlines. In their quest to root out engineers who somehow might not know their stuff, these interviewers may end up alienating the best and brightest potentials. In addition, not all engineers and developers work the same way; there are brilliant workers out there who prefer to pick through code without someone breathing down their neck—and they probably aren’t working at companies that interview via a whiteboarding gauntlet. Or as a commentator on TechCrunch once memorably put it: “Despite the worst talent crunch that Silicon Valley has ever experienced, we still regularly throw away huge groups of talent for not perfectly answering the latest hip algorithm question.” The rest of Forrest’s tips can apply to anyone searching for engineering talent. Remember, you’re not just looking for an excellent engineer—you also want a person who will mesh well with your company and team.
Over on his personal blog, developer Zachary David Forrest (who currently works at Sonos) has a posting on interviewing software engineers that’s attracted some buzz on Hacker News and other sites, and for good reason: He calls into question many common aspects of the interviewing process. “How you interview a candidate speaks to the quality of the organization,” he wrote. Many companies head into the hiring process with only a vague idea of the candidate they actually want for the job; and rather than start with broad topics or engage in small talk, they fire off intensely complicated coding puzzles that seem more designed to boost the interviewer’s ego than assess the candidate’s skills. When interviewing, Forrest tries to take a different approach, one that engages the candidate as a human being: discussing past projects and specific ideas, and giving a test project with a somewhat relaxed deadline: