I have spent a lot of time over the past 10 years recruiting and hiring technical talent. There are three main things that I look for during an interview to determine if my candidate has what it takes to be a part of the team: relevant skills and experience, great communication, and passion. This article assumes you’ve already identified candidates you’d like to screen by phone (a completely separate topic).
Relevant Skills and Experience
I have found that many interviewers use softball questions that give interviewees the opportunity to express opinions and to project an ideal view of themselves instead of focusing on specific experiences which qualify them for a job. While this line of questioning has its merits at certain times during the recruiting process, it shouldn’t be used used to determine whether the candidate is qualified. Qualifications should focus on relevant experience.
First we focus on job history. I have the candidate walk me through her resume while I begin to assess whether she has faced similar challenges to those she can expect in my job. Then we begin to launch into specific experience-based skill sets. For instance, “Tell me about the last time you were responsible for designing a data model from scratch,” or “Describe your last time interacting with a RESTful web service? Walk me through the service and what languages and libraries were involved? What was surprising and what did you learn?,” or “Describe to me a time you leveraged a design pattern – what problem were you trying to solve and what pattern did you use?”
Notice these are all open ended questions with no simple yes/no or one sentence answers. These should be tailored to the specific role you’re hiring for, but remember that experienced technologists can answer questions that are timeless. They may not be able to answer detailed questions about the latest and greatest technologies because they have likely been focused on real world solutions with a slightly dated technology. It’s okay, these guys know how to learn and where to find information when they need it. Lessons they have learned in other environments will save them from repeating past mistakes.
Oh, and another favorite question is “Tell me about the last time you really screwed up.” If your candidate can’t give you an open, candid and detailed response to this, I’d question whether or not he has taken on any significant challenges in his career. Have him walk you through how he got into trouble in the first place, but focus on what he did to recover and the ultimate outcome. You want to know what actions he personally took to address the situation, not those of his manager or teammates.
Finally, I’ll walk through a quick case study which forces the candidate to the white board to show code snippets, data models, or other relevant diagrams. The case study should be something easily understandable within a short period of time, but representative of a real-world problem. The important takeaway from this activity is an understanding of the candidate’s thought process in real time. Is it logical or chaotic? Have they solved a problem like this before? If not, were they able to come to reasonable solution based on the information you gave them?
That’s the technical stuff, and it’s necessary to know your candidate has the hard skills. Jeff Atwood recently posted a great article on How to Write Without Writing, and makes the point that there’s more to programming than writing code:
Over the last 6 years, I’ve come to believe deeply in the idea that that becoming a great programmer has very little to do with programming. Yes, it takes a modicum of technical skill and dogged persistence, absolutely. But even more than that, it takes serious communication skills…
Often what separates good and great programmers is the difference in how they communicate and collaborate. I find this to be particularly true when I run across a candidate who has spent significant time mentoring during their career. Those who teach often have a deeper mastery of a given topic than their peers who have not, and a teach must be an above-average communicator to teach complex logical concepts.
One of my favorite interview questions for any level hire – new developer to experienced architect – is “Teach me something, anything.” This question gives me a unique view into the candidate’s psyche. Will the topic be germane to the job or an unrelated personal passion? Candidates who meet my expectations in answering this question will usually start by clarifying what I know about the subject before launching into their lesson. Good communicators find a baseline of knowledge and work to build upon it a shared understanding of the topic at hand. This simple question can also help you gage how comfortable the candidate will be in communications with clients and senior management. Do they unknowingly patronize me or do they approach my lack of knowledge of their chosen topic diplomatically?
Once I’ve determined that relevant experience and communication are acceptable, it’s time to see what makes this person tick. Are they passionate about technology, and just as importantly, are they passionate about my company, my customers and the role? “What do you know about [my company]?”, or “Why [my company]?” are nice open-ended questions that let you know whether the candidate has done his homework. Are you just one of the 10′s or 100′s of companies he spamming his resume to, or is he genuinely interested in this specific opportunity? Is this a local candidate that’s desperate for a local job? Or is it someone who’s willing to move cross-country for the opportunity that you’re going to provide? (your resume screening process can actually help weed these guys out, here’s how). After all, there are hundreds of other companies out there they could be interviewing with.
Passion for the technology itself is a must in this industry because tools and techniques literally change by the week. If a candidate is to stay relevant outside of her day to day work, she will take the initiative to stay abreast of technology developments as time allows. My favorite question to ask in this area is “When is the last time you learned a new technology just because you were interested in it?” Many candidates won’t have learned anything outside of what is required for their job. If you sense this is the case, it should send up a red flag. I’d suggest that it is impossible to keep up in this industry without making personal investments of time outside of day to day job duties and work projects.
There are many good techniques out there to help you hire great technologists. These are a few that have served me well. Once the requisite skills are verified nothing can be more important than communication and passion for most technology jobs. In fact, whether you’re hiring an engineer, professional services architect, business analyst, interaction designer, QA analyst, or any other role for your organization, your best bet is to find someone passionate and communicative. When they become employees their passion will sustain them through the inevitable rough patches, and an ability to communicate effectively could literally save you money, goodwill and reputation as you strive to delight your customers.