I started running technical interviews and hiring programmers 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. When hiring programmers, 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:
- No Technical Screening (this is the worst option): Many companies today rely too heavily on resume, and ignore technical screening completely before booking the technical phone interview. In my experience, there is little correlation between the quality of a candidate and their ability to create a standout resume, LinkedIn, or GitHub profile. For example, junior devs often have the best resumes, with lots of detail about their skill set. However, they might lack the experience of more senior devs. Conversely, some of the best devs I’ve hired had terrible resumes. Without technical screening, you have to base all of your technical hiring decisions on the technical interview, which is unrealistic.
- Homemade Technical Screening (it’s better than nothing): Before finding Codility, this was the tactic I used. We wrote a few problems to share with candidates as “homework.” This worked fine at small scale, but once we had a decent number of candidates, plagiarism and benchmarking became an issue. We needed to invest more time reviewing each candidate’s solutions by hand and check for red flags. We also had a lot of complaints from candidates as some of our problems took up to 8 hours to solve and then even longer for us to grade.
- A Screening Platform like Codility (the most reliable option): Implementing a platform like Codility allows you to see whether candidates have the basic coding skills you require before inviting them to more time-consuming interviews. Online coding tests are automated and enable both technical and non-technical team members to identify the best candidates. At the same time, the platform is designed to deliver a great experience to the candidate.
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 in hiring programmers 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.
- Tell me about your favorite tool and what makes it great to work with?
- How does it work under the hood?
- What is the main concept of this tool?
- Check out how we do tech hiring at Codility!
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. Curious and humble programmers will take you far. Don't forget: The cost of hiring programmers that deflect criticism instead of learning from it is high.
- Take a sample of their code from their Codility screening test or a project they’ve shown you and criticize it. Say, “This isn’t so readable…” or “I’m not convinced this is the optimal approach…”
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.
- What’s the most exciting project (outside of work) you’ve spent time on recently?
- What is your favorite Open Source project? Have you contributed to it?
- Where do you want your career to go? How do you think learning new technologies will help you get there?
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.
- What were some of the challenges you experienced in your last role?
- What are the most important traits of your dream company?
- What do you think makes a great dev team great?
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: