It’s a common problem for every engineering team: how do you hire the smartest, most talented engineers? What are the best questions to ask software engineers in an interview? How do you assess their skills and logic? What protocol should they follow to pass the interview? How can you ensure that those new joiners can fit in seamlessly with the rest of your development team? In this blog, I will present a few tips to help you with the software engineer interview. I used them in my interviews, and they helped me choose the best candidates out of the pool.
1. Pick a good problem.
When interviewing software engineers, it’s important to write a problem that tests their abilities. The problem should be easy enough that they can solve it in less than 10 minutes and difficult enough that they have to do some research or think about it for longer than that.
The best way to pick a good problem is to go through the interview process yourself. You’ll learn how long it takes and how much research they need to do. Then, when you select the problems for your interviewers, you’ll know what kind of time frame to expect and what kind of research they should do.
2. Ask for advice.
One question I always ask during an interview is, “What’s your favorite feature of this product?” It lets me understand what kind of person I’m talking to, someone who thinks deeply about this subject or who just likes using stuff without thinking much about it.
3. Discuss practical considerations.
You should discuss what you expect from them and what you’re looking for in terms of practical experience. For example, if you’re hiring for an Objective-C developer position, it’s important to find out if they have any experience with Xcode since that will be their primary tool.
If your company uses AngularJS in production, ask them if they’ve ever worked with it. If not, ask them about their experience with JavaScript frameworks such as Backbone or Knockout.
4. Talk about real-life experiences, not just general programming knowledge.
The best way to figure out if someone has actually done something is by asking them about real-world scenarios they encountered while working on a project at another company. If they’re applying for a job as a front-end developer, ask them about something they did recently that was difficult and required a lot of creativity and problem-solving skills (e.g., fixing bugs).
5. Try to understand their background & career goals.
You want to understand why they are applying for this position and what they hope to achieve by accepting it. This shows that you care about their future and want them to succeed at your company. You also want to understand what they’ve done in the past and how they succeeded in those positions.
This can help you understand how they think, work with others, solve problems, etc…
6. Give a coding test.
All software engineers know how to write code, but only a few can write great code. One way to test this is to ask the candidate to write some code on the whiteboard. You can give them a problem and ask them to solve it, or you can let them choose any problem they want (e.g., a problem from the Cracking the Coding Interview book).
You can also ask them to implement an algorithm they haven’t seen before and see how they approach it. I’ve found that most candidates either try to memorize the solution or copy/paste from Stack Overflow, so I usually don’t get much out of this exercise. I have seen many expert recruiters opting for a coding test before they hire software developers.
7. Ask how they communicate and collaborate to build an application.
This open-ended question allows candidates to explain their process and the thought process behind it. For example, some people solve problems by asking themselves questions (i.e., “What are all possible outcomes?”). Others might take a step back and look at the big picture before diving into the details (“What are all possible ways to solve this problem?”). An interviewer needs to understand how candidates approach problem-solving to evaluate how well they’d fit on their team. This is what the micro1 team always does before hiring any software engineer to find the best fit for their organization.
8. Section: Don’t get bogged down by big-name brands on a resume.
It’s very obvious to get caught up in the prestige of the companies an engineering candidate has worked for. But don’t let a list of big names overshadow the real meat of the interview: getting to know how they think, work, and solve problems.
9. Don’t ask interviewees to solve riddles or brainteasers.
Do you know those trick questions you sometimes get when interviewing for a job? Here’s why they’re a bad idea: They’re irrelevant to what you need from an employee, and they don’t tell you whether this person will be a good fit for your company or team. Instead, ask each candidate about their skills and experience, how they handle pressure and their biggest challenges at previous jobs. You’ll get better answers — and more candid ones — than if you ask them to do something that feels like a high school exam.
10. Plan the Take-home exercise wisely.
When you’re interviewing someone with a lot of experience in your field, your take-home assignment should be challenging but achievable in the allotted time. If the candidate can’t complete it on time, he or she probably isn’t worth hiring. But if they finish it quickly, they might be too good to pass up.
Conclusion: Interviewing is an art; you will get better at it with practice.
Interviews are generally a two-way street as much as possible. As an interviewer, you will improve over time by asking questions that interest you to people who inspire you. It is a vicious circle. You might not get it right in the first interviews, but practice, and you’ll start noticing how your reactions to certain interviews can guide your next round of questions.