I’ve been worked for Slide (A startup acquired by Google last year) for 2 years, and probably have interviewed more than 50 people, most of them are developer candidates. I’d like to share my 2 cents on this topic today.
First, I can’t emphasis more on how important interview is, especially for a startup. Two quotes from Slide CEO, Max Levchin
- Only rank A people would hire people better than themselves. Rank B or rank C people could only hire people worse than them.
- If there’re any doubts, there’s no doubt.
So we should be extremely careful when hiring early employees. Otherwise, the company will be screwed.
Let’s move on to the question ‘How do I know whether the candidate is good ?’. There’re several aspects to measure a candidate, but I will only talk about measuring professional skills. I assume HR will test their motivation, culture fit and personalities etc.
The process of my interview is to measure the following 4 qualities of a candidate. The significances of those qualities are 1) > 2) > 3) > 4)
- Raw intelligence
- Fundamental knowledge on programming and compute science
- Coding styles
- Working experience
All of them are important. But I will pick a smarter guy over a guy with more working experience, because working experience is something a person would gain over time, but smartness isn’t. Since smarter people learn things much faster, after 1 or 2 years, the smart guy would exceed the other candidate on domain knowledge. Same rule applies to 2) and 3), learning compute science is harder than learning good coding styles.
One thing I should mention is that my goal is building an outstanding dev team in long term. If you have a urgent website to be built in a month, then obviously working experience would be a key factor.
The next question is how to test each of those qualities ?
Working experience is easy. Just take a look at their resumes. It would better to ask some details on relavant projects they’ve been working on. The goal is to figure out what exactly they do in those projects.
Coding styles also could be easily tested. Ask whether they have any personal projects, take a look at some code snippets in the code base. The bonus for this question is that if the candidate doesn’t have any code to show, he probably isn’t passionate enough for a startup. A written test would also do, but I would prefer the candidate to write the code offline. Since we don’t have too much time on interview, and if the code is too short, we can’t really see his coding styles. And if we have to ask the candidate to write code during onsite interview, make sure they bring their laptop. Personally, I will feel much comfortable to write code on my favorite editor than a piece of paper or someone else’s computer.
For fundamental programming skills, we could ask algorithm questions such as dynamic programming, recursive and binary search. The question shouldn’t be too hard, a variant of basic usage of the algorithm will do. Another good set of questions are asking candidates giving estimation on time complexity and space complexity of a function. Giving solutions on a simple problem with different scales is also a fine approach to test their knowledge on the whole compute system. Sorting in memory and Sorting in a distributed system will be very different.
For more senior job position, ask architecture design question would be more appropriate, but I also find designing such questions are very challenging as well. It would be best that the candidates have some personal projects, then we could ask them to explain the design of their software architecture.
Raw intelligence is a key factor, but is also very hard to measure. The common approach is asking puzzles. I would recommend to prepare at least 2 puzzles, so if the candidate fails the first one, we could use second one as backup. The time control is essential for puzzles, giving hints if the candidate isn’t able to come up with anything in 5 mins. Closing the question in 10 mins. It’s important to ask same set of puzzles to a group of candidates, so we could compare them side by side.
I’ll stop here today, but job interview is a very interesting topic. There’re plenty of articles online discussing it. I would also recommend following job interview topic on quora, they have some useful answers.