I started running technical interviews by chance. It was one of those classic situations where I was the young dev working in a small company, and when we needed to recruit, I was thrown into the deep end.
At first, I tended to fill the technical interviews with lots of in-depth technical questions about the specific frameworks we were using. I wanted to see if the candidate knew the nitty-gritty of our stack. I soon realized that this tactic was too detailed, so I changed my interviews to be more high-level, asking problem-solving questions instead. An example would be a string-reversing function on a whiteboard.(Spoiler alert: since it's whiteboarded, it can't be compiled). After a few more iterations and lots of feedback I began to ask myself: What do I need the technical interview to achieve? I realized we were running our interviews to prove how much smarter we were than the candidate or to catch them out on all the things they didn’t know. And that’s not what interviews are for. Treating your candidates like the humans they are is the key to conducting a great interview.
Fast forward ten years, 35 successful tech hires, and many good (and bad) onsite interviews later, I’ve learned that the real goal of technical interviews is to both inform your hiring decision and convince the candidate that they want to work with you.
Here’s my list of low hanging fruit you can easily improve to increase the overall success of your technical interviews.
1. Ensure your overall tech recruitment process is sound
Everything that happens before your technical interview has a big impact on the success of the technical interview itself when hiring programmers. To start with, you need your sourcing efforts to attract the right sorts of candidates. Then you need an efficient screening process to help you identify the best candidates who merit interview time and resources. Loop in the recruiting team to manage the screening process, freeing up hiring managers to focus on more in-depth, later stages.
More specifically, when it comes to screening, I’ve learned there are three scenarios:
By optimizing sourcing and screening methods, you can ensure interviews held later in the process are with the candidates that are truly worth investing time in!
2. Focus on the candidate’s favorite tool
Your interview should emphasize what the candidate knows best. For a great engineer, learning a new tool, language, or technology is easy. What you should really focus on is how well they know their favorite tools. Do they only know enough to get by, or do they understand the underlying mechanics of the tool? This can tell you a ton about a candidate, including how they learn, how curious they are, how they communicate, and whether they’ll be able to adopt the tools your team uses.
3. Observe how your candidate responds to feedback
No team is exempt from conflict, so use the technical interview to see how your candidates react to feedback on their ideas and work. I like to choose something controversial, or I take a stance on something they’ve provided to see how they consider an alternate perspective. Sometimes they say, “Well, this is how we do it” or “That’s not a problem anyone else has had”. These are red flags. Better responses might be, “Can you explain more?” or “How could I make it better?”. This tells me the candidate is open to a discussion and wants to learn. It also shows me whether the candidate is focused on collaborating around an issue versus preserving their ego. Don't forget: The cost of hiring programmers that deflect criticism instead of learning from it is high.
4. Dig into their dev-related activities outside of work
To understand how your candidates can help drive development on your team, you need to learn more about what they do outside of their current work projects. Ideally, you want to hire people who are active learners and can deal with hard deadlines. You probably want to avoid candidates who require micromanagement to be successful. I find that when talking about a candidate’s projects outside of work, I can get a better understanding of their real passion. They might use legacy code at work, but on their own time they use modern options. It’s insightful to see how your candidates spend their time. Also, candidates love being asked about their passions so it's a good way to improve candidate engagement as well.
5. Ask about issues within their current team or project
There’s a reason programmers for hire are interviewing with you. I like to ask what attracts them to the role and my team, and discuss any issues or concerns they’ve had in their current or previous teams and projects. If the candidate is open to discussing what they’re looking for, you can more easily highlight similarities (and differences) between their expectations and the role you’re looking to fill. Have your recruiting team screen for desired personality traits to do a quick check for culture fit and sell them on the opportunity. Remember, once the technical interview is completed, the candidate is going to have a stronger opinion of whether they want to work with your team, so you should invest some time in giving them the information they need to make the right decision.
Great technical interviews help you and the candidate make a more informed decision about how they fit into your team. Don’t make the same mistakes as I did! Set yourself up for success by having a reliable and scalable technical screening process, so that you spend your face-to-face time interviewing the best candidates. Then, use that interviewing time to learn about the candidate’s best tools, receptiveness to criticism, learning habits, and expectations for future projects.
Good luck hiring developers and happy interviewing!
Want to try Codility for your team? Start a free 7 day trial of our tech recruiting software now:
© 2009–2016 Codility Ltd., registered in England and Wales (No. 7048726). VAT ID GB981191408. Registered office: 107 Cheapside, London EC2V 6DN