Pairing for Developer Interviews

The hardest part of building a successful, fast-growing software company is assembling the team to do it. It’s been a while since I read Good to Great, but a friend recently reminded me of this quote:

“I don’t know where we should take this company, but I do know that if I start with the right people, ask them the right questions, and engage them in vigorous debate, we will find a way to make this company great.”

To hire the right people, teams need to spend time thinking about their interview process. A successful result means the team ends up hiring the right people and passing on people who wouldn’t be a good fit. It’s a costly mistake, however, to hire somebody who doesn’t work out, or to pass on somebody who would have been great. Given that most fast-growing software companies want to hire as many great developers as they can find, interviewing becomes a frequent and crucial process. To increase likelihood of success, it’s important to have a collaborative process. Although teams may be able to save time by having only a single person participate in each interview segment, pairing can give the team many of the same benefits that come from pair programming.

Exposure

Exposing as many people from the team to the candidate is helpful for both the team and the candidate. For the team, people will have different insights and perspectives that help make a good decision when getting together at the end of the process to decide whether or not to make an offer. Interview processes are bidirectional, though. For the candidate, he or she is getting an opportunity to meet as many of his future coworkers as possible. Although it’s hard to get to know somebody in an interview setting, it’s nice to be able to meet several team members.

Training and Feedback

Interviewing is a skill, so it’s something that people need to learn how to do. Pairing a seasoned interviewer with somebody who is new to the process is a great way to provide them with training.

Even for experienced interviewers, it’s helpful to get feedback on how they approached the interview. If an interviewer is talking to a candidate in isolation, nobody can offer any feedback.

Values

Teams should align on their values and the relative importance of them. Is it more important to get somebody with strong depth in technology or the ability to learn quickly? Ideally, you look for a candidate with both, but which one is more important for the position and team? Despite striving for alignment, people will maintain their own preferences and biases. Having more people involved in the process will create more diversity in perspectives, which a healthy team should be able to use to debate and come to a consensus.

The discussion on perspectives can also help standardize viewpoints. Just as pair programming helps developers establish conventions for a project so that multiple developers aren’t pulling in different directions, pairing for interviews helps establish standards for what to look for in candidates. You can try to do this without having both people in the room at the same time, but it’s harder that way. It’s similar to how it’s easier to discuss code when two developers are working on a pairing station than it is to have a phone conversation about it.

Flow

Occasionally when interviewing, there can be a communication breakdown between the interviewer and the candidate. I’ve especially seen this happen when the two people are accustomed to using different terms to describe the same thing. The interviewer asks a question, and the candidate doesn’t quite understand. The interviewer doesn’t understand why the candidate doesn’t understand, and tries to restate the question in a way that still doesn’t help. In those situations, it’s typical to move on to a different question, but that may leave the candidate feeling like he or she responded poorly on that topic. Having a second interviewer in the room gives somebody else an opportunity to engage in the conversation to try to clarify.

It’s also common to have a lull in a conversation when you run out of questions related to the current topic and need to figure out where to transition to next. Having a second interviewer in the room creates an opportunity for the other person to pick up the conversation and start down another track.

Decision

Ultimately, at the end of the interview, the team needs to come to a consensus. It’s easy when the vote is a unanimous yes, but it’s much harder when the vote is split. If a single interviewer thought that a candidate did poorly on a certain interview segment, it could be difficult for the rest of the team to overrule that. With a second opinion, it becomes easier. Either both interviewers agree, and the decision to pass on the candidate becomes easier, or the interviewers are split, and there are multiple perspectives to consider. Either way, the additional data is helpful.

Interviewing is challenging. I’ve often heard it compared to getting married after a single date. The decision to hire somebody can have a greater impact on the team and company than most other decisions that are made on a daily basis. Having multiple people involved will increase the time commitment necessary to interview a candidate, but it’s well worth the investment.

Thanks

Thanks to Braintree developers Dave Pirotte, Adam Forsyth, and John Downey for sharing some of their thoughts on the benefits of pairing in a recent team discussion.