How We Interview
Hiring people who are a great culture add and technical skill fit is hard. No interview structure is perfect. We strive to balance the following principles:
- Set a high bar for skills and aptitude. We support important missions. The work demands a level of existing skill plus the aptitude and curiosity to learn.
- Seek culture add. Great candidates will enrich our company culture, adding unique perspectives, knowledge, background, and skills. Any candidates must be comfortable working in a diverse and respectful environment.
- Respect candidate’s time. It would be great to spend many hours and days in the process, but that’s not feasible. We can’t expect candidates to spend excessive time on homework (something short is OK).
- Avoid/counteract bias. Humans bring bias by default. We try our best to be conscious of any bias and counteract/check it.
Our current model is as follows, and always subject to modification if we can improve it.
- Recruiter Screen
- Fit Discussion
- Technical Evaluation
In a combination of phone call or email, the recruiter confirms basic availability fit. Does the candidate’s job seeking timeline line up with our needs? Do they meet basic requirements such as work location, eligibility for clearances, experience guidelines, etc?
In a phone/video call, a hiring manager talks or similar discusses the position with the candidate for a 2-way fit. We provide background on the company and position so they can understand fit from their perspective. What are the candidate’s general claimed abilities and career goals - and does that fit the need? Are there strong indicators that the candidate understands modern development practices and team collaboration?
At a time and place convenient to them, the candidate takes a short (< 2 hours) technical test. The test is not a filter and all candidates that make this stage also go on to the following interview. The test is the starting point for the deeper dive interview discussion where candidates can explain thought processes and misunderstandings.
The test and discussion format may work for many. However, if there is a better way to dive into your skills, you can opt for a different method. For example, you may have created other code that can be shared, or you may have a body of work such as blogs, conference talks, etc.
(See additional notes below on our rationale.)
In an in-person discussion or video call, the candidate speaks with one or more interviewers for a holistic deep dive. This will combine discussion on technical evaluation, team dynamics, growth desires, etc. An interview may be broken into multiple sessions / multiple appointments based on the role. For example, a technical deep dive may be a separate discussion from meeting the team to learn more about specific project skill fit.
Technical Evaluation Methods
We’ve considered the following approaches for evaluating technical skills and aptitude.
- Quiz: An online quiz is the least-worst way we’ve found yet, but we’re still searching. When used in the context of a holistic interview, and not as a filter, it helps to bridge the gap in evaluation.
- Code Homework: Some firms provide candidates with a repo and assignment to make a pull request. This is similar to the above, and something we’d consider trying. We would want to make sure to scope it to be small - something that is ~1-2hr work that leads to a discussion. We want to avoid people spending many hours on something (or moving past us because they are busy with life).
- Live Coding/Pairing: Writing code during the interview is a close representation to real work. However, the artificial time crunch and elevated pressure may make skew individual performance too substantially.
The following are ruled out as general bad practice:
- Whiteboard Coding: It’s too artificial, and often combined with other bad practices.
- Puzzles or Quizzes as a Filter: No homework is enough to totally rule people out, especially as a first stage. It also makes candidates feel like we can’t be bothered to get to know them at all.
- CS Final Exam: Can you write 5 different sort algorithms off the top of your head? Neither can I. You won’t have to in your day job either.