I'm going to tell you two stories about recruiting and its process.
The no time for important things contradiction
One day my friend Tamila comes to me complaining about her team. She was complaining about how the team members were lazy, not committed with their work, how unexperienced they were, and how she was deceived by the last incorporated member about the experience she said to have.
After a few days, she came to me again and told me that she was about to hire a new person for her team.
I asked her: "how are you going to choose that person?" Since she was complaining a few weeks ago, I thought she would have a new strategy.
But guess what was the answer...
She said: "I don't have too much time for this, my HR department is going to do that"
The brown house carpenter dilema
The second one is more funny and is a courtesy of the web 
Imagine an interview for a carpenter in a "big-house-construction-company".
This would be the dialog between the HR recruiter and the candidate.
-Interviewer: So, you're a carpenter, are you?
-Carpenter: That's right, that's what I do.
-Interviewer: How long have you been doing it?
-Carpenter: Ten years.
-Interviewer: Great, that's good. Now, I have a few technical questions to ask you to see if you're a fit for our team. OK?
-Carpenter: Sure, that'd be fine.
-Interviewer: First of all, we're working in a subdivision, building a lot of brown houses. Have you built a lot of brown houses before?
-Carpenter: Well, I'm a carpenter, so I build houses, and people pretty much paint them the way they want.
-Interviewer: Yes, I understand that, but can you give me an idea of how much experience you have with brown? Roughly.
-Carpenter: Gosh, I really don't know. Once they're built I don't care what color they get painted. Maybe six months?
-Interviewer: Six months? Well, we were looking for someone with a lot more brown experience, but let me ask you some more questions.
-Carpenter: Well, OK, but paint is paint, you know.
-Interviewer: Yes, well. What about walnut?
-Carpenter: What about it?
-Interviewer: OK. Hang on let me check off the box...
-Carpenter: Go right ahead.
-Interviewer: OK, one more thing for today. We're using Rock 5.1 to bang nails with. Have you used Rock 5.1?
-Carpenter: [Turning white...] Well, I know a lot of carpenters are starting to use rocks to bang nails with since Craftsman bought a quarry, but you know, to be honest I've had more luck with my nailgun. Or a hammer, for that matter. I find I hit my fingers too much with the rock, and my other hand hurts because the rock is so big.
-Interviewer: But other companies are using rocks. Are you saying rocks don't work?
-Carpenter: No, I'm not saying rocks don't work, exactly, it's just that I think nail guns work better.
-Interviewer: Well, our architects have all started using rocks, and they like it.
-Carpenter: Well, sure they do, but I bang nails all day, and -- well, look, I need the work, so I'm definitely willing to use rocks if you want. I try to keep an open mind.
-Interviewer: OK, well we have a few other candidates we're looking at, so we'll let you know.
-Carpenter: Well, thanks for your time. I enjoyed meeting you.
-Carpenter: Hello. Remember me, I'm the carpenter you interviewed for the brown house job. Just wanted to touch base to see if you've made a decision.
-Interviewer: Actually, we have. We liked your experience overall, but we decided to go with someone who has done a lot of work with brown.
-Carpenter: Really, is that it? So I lost the job because I didn't have enough brown?
-Interviewer: Well, it was partly that, but partly we got the other fellow a lot cheaper.
-Carpenter: Really -- how much experience does he have?
-Interviewer: Well, he's not really a carpenter, he's a car salesman -- but he's sold a lot of brown cars and he's worked with walnut interiors.
Our recipe for choosing the right seeds
I think these two stories clearly exemplify the biggest problems when recruiting people in a traditional company.
- People don't dedicate time to the process
- People don't understand the importance of the entry point
- People outsource the process in someone that doesn't understand the job. Recently, I heard a talk by Raffi Krikorian (former Engineering VP at Twitter and now at Uber) recommending: "Dont outsource recruiting!"
- People can't choose whom to work with
- The candidate is not tested properly in a similar work situation
Our organization model at 10Pines is based on trust, we don't have an organization chart nor hierarchies; instead we are a self-organized company with a lot of freedom. So a harmful or abusive person in the company might cause conflict and slow down our collaborative process. That's why one of the most important issues when creating this company was choosing the right people to work with.
And important issues take time. So if you say people are important, take time to choose them.
That's why our hiring process takes time, but it's worth every invested minute.
Quoting one of the greatest books of engineering, "The mythical man-month":
"Good cooking takes time. If you are made to wait, it is to serve you better, and to please you."
Menu of Restaurant Antoine, New Orleans.
Our recipe for choosing the right seeds contains 4 steps:
- First contact Interview
- Real job simulation
- Technical interview.
- Group interview
1. First contact Interview
In general every new seed/candidate is recommended or sponsored by a current pine (a pine is a member of 10Pines). So the first step is an interview between the internal sponsor, the candidate and a third party. Commonly this first interview is like a date, where we try to convince him why 10Pines is good for him or her, and he tries to convince us why he is good for 10Pines. By the way, take some time to read "why recruiting is just like dating"
2. Real job simulation
After the first interview we give the candidate an exercise to solve at home. The complexity of the exercise is roughly based on the experience of the candidate. If he seems to be a junior we give him or her a junior exercise.
We try to use real examples emerged from our daily job, so we stay closer to a real job situation.
The constraints for solving the exercise are:
- choose the programming language you want
- do it yourself
The rest is up to you:
- You can ask all the question you want, in fact, it is a good indicator if the candidate asks a lot of questions since this implies analysis skills.
- You can use google, stack overflow or whatever tool you want as in real life. I don't care if you remember all the protocol of the Java 8 Stream interface. The important thing is how you solve the problems. And your learning capacity.
- You can solve it at your own pace and time.
The idea here is to simulate a real job environment. That's why we let them use a computer, use internet, to use a real IDE, etc. Nobody codes in a whiteboard in real life.
Definitely, this not a real situation but we think is a good enough tradeoff which allows us to witness the candidate behavior in the most important task for a developer: to code.
3. Technical interview.
After the previous step, the candidate shares the code with us somehow (github for example, or simply email). Then we ask the candidate to join us in a review of his or her exercise. For this interview we choose two different guys from the first interview, which have previously seen the resolution and know the exercise.
In this meeting, we ask to explain and justify his decisions when coding the exercise. So we ask: "why did you choose to code this class?" or "why did you choose to use inheritance over delegation here?" or "what would happen if this change?". The idea here is to:
- validate he solved the exercise by himself or herself;
- to understand how she or he thinks
- to see how she or he responds to change
- to see how she or he reacts to critics (because we also criticize his solution)
4. Group interview
Imagine the perfect monday morning, smile on your face, birds singing, Beethoven Pastoral as background music, coffee on your hand. You arrive at your office, the elevator is just there waiting for you. Life is smiling at you. Finally you get to your desk, and BOOM! Next to your chair there is a new teammate. You didn't ask for him, you don't know his experience, you don't know if he's a psycho killer or what. You assume he can code, but after he asks you: "What is this function key useful for?", you know your perfect monday morning is ruined.
In order to avoid this dramatic scenario, we have a last step.
If everything went fine with the previous stages, the final one is an interview with all the pines and the new seed. The idea here is that you choose who to work with. This candidate is a potential teammate, so you have to decide if you would like to work with him or her. And in the other hand, the seed can see all the universe of possible teammates in the company and don't be surprised the first day of work (or first week). This interview is more relaxed and mixes technical questions with personal ones. We also encourage everyone to ask questions and share experiences.
Summarizing, the goal of this step is from the people in the company's side to answer the question: "Would I like to work with this guy?". And from the perspective of the candidate to answer the same question as well: "Would I like to work with this group of people?"
One important thing to highlight is: we don't have a HR or recruiting department. We choose our own people. Every pine can and must be involved in this process so the task of recruiting is a cross functional task every engineer must be involved with.
Summarizing the 4 stages, we try to identify in the seed the things we DO care:
- Learning capacity
- Analysis skills
- Intention revealing in the code. Code is communication
- Behavior in a group
- Human quality (yes, I know, what is human quality? This deserves a complete new post)
Lastly, at 10Pines we have a very very very low turnover rate, and I think our recruiting process is one of the causes.
in 6 years we lost 4 people, 1 because he decided to be a musician, another because he married with a polish girl and moved to Poland, and 2 others to start their own company ↩︎