Effective Interviews

Sun, Jan 9, 2022 8-minute read

Do you remember the last time you were in an interview? Did you enjoy it? Did you tolerate it? Or did you secretly wish it wasn’t happening? Interviews are notoriously unpleasant for the interviewee and sometimes for the interviewer as well. In the last 13+ years I’ve conducted many interviews, from those that were incredibly awkward to those that were quite enjoyable. Leaning on my experience let’s dig into what makes an interview productive and what both parties can do to make the whole process a bit more pleasant.

Pre-Interview Preparation

A well run interview starts with the interviewer being well prepared. I do this by familiarizing myself with the candidates resume, particularly what projects they have worked on and software engineering practices they are familiar with. I review any code samples or GitHub repositories that they’ve shared to get a sense of how they write software.

Each time I sit down for an interview I have a specific position in mind that I’m looking to see if the candidate can fill; therefore, I make sure I understand the job description, qualifications required, and expectations that come with the role. This is much easier if you’re hiring for your team as you innately know the what and the why. When interviewing candidates for other teams it’s important to talk to the hiring manager to understand what they are looking for. Some good starter questions include: What skills are required? How much experience and responsibility they will be expected to handle? And Why the position is open?

Good interviews are a flowing discussion between the interviewer guiding the discussion, and the interviewee doing much of the talking by speaking from their experience and about their abilities. To prepare for the discussion, I like to have a single sheet of paper with a list of questions for the candidate. These questions dig into their previous projects, previous employers, technical achievements, and what they are looking to get out of this new role. Having these questions prepared ahead of time improve the discussion flow as you don’t have to think up new questions on the spot. I have a standard list of about 50 questions for software developers and before each interview I curate the list to about 30 relevant questions for the candidate I’m about to interview. This doesn’t mean I use them all, in fact using half of them is a lot. I also think of new questions depending on where the discussion goes that I ask.

The candidate should prepare by reading about the company from it’s website, familiarizing yourself with the mission, vision, and values, and browsing their social media profiles. It’s best practice to come ready with questions of your own about the work environment, the team, and the types of projects you may be working with.


I start the interview with a smile and by introducing myself and everyone that’s present. I explain the process of us asking questions, that there will be time for them to ask questions, and that we’ll end up with what the next steps are. Interviews are by nature stress inducing and it’s no surprise that candidates are often nervous at the beginning. An effective interviewer will bring a calming presence to lighten the mood and make the candidate more relaxed. Interviews that are relaxed allow the candidate to speak better to their experience and for both sides to get to know each other a bit. By setting the stage and being friendly you give the candidate a chance to settle in and relax.

During the interview I assess the candidates fit on three areas: Culture, Values, and Skill. Will they fit into the Company Culture? Do they share many of the same Values we do? And do they have the Technical Skills to do the job? The list of questions I’ve prepared ahead of time are mapped to one of these three areas. Having the questions prepared ahead of time makes it easy for me to ask questions that cover each area. I find it’s difficult to understand what the candidate is saying while simultaneously thinking of a new question, so instead I focus on the candidates response and when needed glance down at the questions to pick out which one I’ll ask next. In this way I give them my full attention while also conducting an interview that flows well. I don’t hold strict to using that question next and sometimes dig further to better understand an answer and their level of experience. I generally ask harder and harder questions to find out the extent of the candidates knowledge in different areas. This helps me paint a picture of what experience they have and where they can grow. Speaking of growth, are they open to learning and expending their tool set? Getting a sense of their career trajectory can help make the hiring decision a bit easier.

I find that having a colleague present who asks their own questions and brings their perspective helps create a better hiring process. Therefore I’ll often have a manager or software developer join the interview. One person leads the interview and guides the discussion the other will be forming their own opinion and asks relevant questions.

When we meet someone new we naturally form a first impression of them right away. This can be dangerous because you could be unconsciously disqualifying candidates before you even start talking with them. It’s important to remember this and use this knowledge to make a more logical hiring decision. During the interview ask yourself, What was my initial impress? What are some questions that I can ask that may reverse my initial impression? Don’t let yourself be biased in a certain direction without gathering logical evidence first. Ask further questions to determine if your initial impression was correct. You may be surprised.

Interviews are a place for the candidate to be assessed but also for the candidate to interview you and the company they may choose to work for. Don’t assume you’re the only company hiring. The whole interview process from the job posting to the offer are touch points where the candidate is evaluating if it’s a place they want to work at. Use this to your advantage by getting them excited about working at Your Company. Make sure you take time to talk specifics about the positive impact your company is having on the world and how they will be able to contribute to that. Software developers are (understandably) quite tech focused so share key points from the technical roadmap as well.

Always end with sharing next steps and a timeline of when they will hear back from you. If you say you’ll get back to them next week make sure you do! It’s not a small thing; it builds or detracts from your credibility. As leadership books say

“When you say you will do something and you do, you build trust. When you don’t follow through, you lose trust.”

Before they leave make sure you thank them for their time and have them leave feeling appreciated.

For candidates it’s important to do your best to be yourself, stay relaxed, and remember that you are also interviewing them. You are both equal parties in determining if you’d like to work together, and either side could choose not too.


Immediately after an interview I take a moment to collect my thoughts and write down how it went. My first impression and if that held up to the questions I asked to try to dis-prove it, how they fit into our company Culture, their Values and Skills, strengths they can add, and overall if I think they would be a good addition to the team. I take note of any red flags that came up. If there were I ask for another interview or some action to be taken so they can be confirmed or denied. If a colleague will be interviewing the candidate next I let them know the concern and ask them to try to confirm or deny it.

Then I review all these items with my co-interviewer and the Human Resource manager. What did they hear, did my concerns resonate with them? When multiple people heard the same thing it’s a stronger signal. Once we’ve had a discussion it’s time for a hire/no-hire decision.

From the company’s perspective it’s often safer not to hire a candidate the hiring team is unsure of, than taking a risk. It’s always best to let someone go before they’ve joined the company. For candidates I can say that there are many many reasons why companies don’t hire you, even if you are a great candidate. It won’t make you feel any better but be aware that a no-hire call is often not because of something you did or didn’t do.


Ultimately well run interviews allow the interviewer to assess the candidate and give space for the candidate to get a good sense of the company they are considering joining. By being prepared, taking notes, listening to your peers, and challenging your biases you’ll be able to make better hiring decisions. This in turn helps you build a better team and a better company.