October 2017

How to interview software developers

Unless you work in HR, interviewing new employees will be something you do on top of normal work. It’s something that you do between project deadlines and other pressing commitments.

Nobody trains you how to do it (unless you’re lucky). You learn by speaking to colleagues, reading online, or just winging it.

Fortunately, it’s easy to get better with just a little preparation. Here’s my advice to get the most out of interviews to help build the team you want.

Be sure that you know what you’re looking for

Give yourself a few moments to think about what kind of candidate you’re looking for. Is it a purely technical expert who needs to help a less-experienced team? Is it a people-person who can coach and encourage collaboration? Having a clear picture in mind will help you know when you’ve found the right person.

Be consistent in questions to candidates so it’s easier to compare

If you’re interviewing a set of candidates, ask each one the same questions. It makes it easier to compare answers in a fair way. It also helps to create a similar structure to each interview so the conversation has somewhere to go if it runs dry.

Get a bigger picture

The internet provides a way to get a broader perspective on a candidate with sites like stack overflow or github showing someone’s work, or even online social interaction. It’s easy to find online presence using a candidate’s name, but it’s better (and politer) to ask a candidate for any online presence they’d like to share.

Online presence can help to see someone’s coding style, advice they give to others, and it can be a great example of someone’s passion.

Ask for proof by examples, don’t play ‘read my mind’

When looking for proof of a candidate’s ability it’s easy to go into an interview and hope to hear certain technical terms as proof of knowing them. When you don’t hear the terms, you can feel that if you give too much help, the candidate will simply be repeating back what they’ve been told. So you stay quiet and wait to hear what you want to hear, and if you don’t, you assume the worst.

This game is called ‘read my mind’ where an interviewer wants to hear something to prove experience, but doesn’t ask for it.

If you need proof of experience or knowledge, ask for examples. Ask the candidate to bring in any available code examples to demonstrate knowledge, or say outright you’re looking for evidence of knowledge, and ask the candidate to talk around a topic. Be clear with the candidate what you’re looking for.

Ask open-ended questions

It’s no secret that open-ended questions encourage conversation, but prepare by looking for some on the internet. There’s plenty of sites which suggest good questions to tease the best out of a candidate.

Feel free to try some of my own:

  1. What things do you think are important to bear in mind when writing code?
  2. Can you give me an example of a day at work you really enjoyed, or one that stands out in your memory?
  3. What makes you proud about how you work?

Do technical tests, but be conscious of the context

Technical tests can be a good way to see what somebody knows or how they work, but be clear what the goal of a test is. Do you want to see evidence of specific things like SOLID principles or clean code examples?

Remember that programming is often a creative task, and creativity shrinks under pressure. Try offering a range of small technical tests and reassure that completing all tests isn’t necessary. You can also give tests to complete before an interview so the candidate can bring answers in to talk about.

Hire diversely but understand what that means

Diversity in a team is a true asset. To have people with varying experience and perspectives can give any team a natural broader outlook on a problem. But hiring for diversity doesn’t mean hiring someone who’s different for the sake of it. You still need to be able to work well with the candidate.

Hiring for diversity means where you have a few potentially successful candidates, value difference and diversity alongside other qualities like a collaborative spirit and passion. We all have a natural bias to hire similar personalities to ourselves, and hiring for diversity means trying to overcome it.

Use video for the first call

Instead of a first phone call, use a video call service like Skype or Facetime. It’s more natural than the telephone and it allows everyone to express themselves better. Using a phone call for a first chat is meeting someone for the first time blind and having to form an impression using only sound. It’s 2017 after all!

Make the candidate feel comfortable

Make sure the candidate knows what to expect before arriving, and meet them on time. Offer a drink, ask how their journey was. Be conversational and within reason let the interview go where it goes. The more relaxed the conversation, the more you’ll find out about a candidate.

Start with hobbies and interests

Most interviews start by asking about the candidate’s CV or cover letter. It’s much easier to start a conversation and make the candidate feel relaxed by discussing hobbies or interests first. There’s more chance they’ll open up, talk more freely about experience and skills, and feel less tense.

Always follow up

It’s not the best to have an interview and then hear nothing afterwards. You don’t have to give feedback or anything but just let them know about the status of the application. It’s important to create a good impression about your company. Word of mouth about good companies can help attract talent.

Like most things, there's no perfect method to interviewing. But by reading around and following advice, you can arrive at a way of interview that works for you and hopefully gets good results.