Seravia's Engineering Hiring Process
by Danny on November 29, 2009
Print This Post

“Debugging is twice as hard as writing the program, so if you write the program as cleverly as you can, by definition, you won’t be clever enough to debug it.”
- Brian Kernighan (the first publisher of “hello, world” and the K in AWK)
As a tech startup, each engineering hire is extremely important. We’re writing clever programs to solve real-world problems, so if there’s any merit to the quote above, we better keep hiring new engineers that are at least twice as clever as we are today.
Here’s our process for finding those superprogrammers. The first step is to answer a programming problem that we send by email. The next step is to come in for an interview. I always start out with a simple coding problem. Having passed the email problem, everyone should be able to do this simple problem in their sleep, but there is huge variation in how long it takes them and how efficient the solution is. Joel on Software has a nice post on this.
Next, I ask a brain teaser to see how the candidate thinks. I’ll give an example:
You and your date go to a party where you meet four other couples. People shake hands with each other, but not their dates. How many people do you shake hands with if everyone else shakes hands with a different number of people?
What I’m looking for first is that they understand the problem. Then the next logical step would be to see that there are nine other people, so they must shake hands with 0 to 8 people, covering all the numbers. The nice thing about this problem is that from here the candidate can try a number of different things, such as:
1. trial and error, to get a feel for the problem
2. try boundary conditions, 0 and 8, and realize that these cannot be the answer
3. try 4 because it is the midpoint
4. realize that the total number of handshakes must be even so the answer is not odd
5. try solving the problem if there are two or three other couples
6. ask for help
7. give up
8. solve it for the general case of n couples
If the candidate breezes through all the problems, then I invite him or her to come hang out and work with us for a day. So that’s it, our three step process to hiring ever smarter engineers so we can keep our exponential IQ growth going and strive towards the technological singularity.
Bonus round: What does this do? /^1?$|^(11+?)\1+$/
Bonus round2: If you like fast food and fast thinking, what is the most number of chicken mcnuggets you cannot buy if you can only buy them in packs of 6, 9, and 20?
DM me on twitter: huuep (Bonus round3: what’s huuep?)
