Your Tech Interview Sucks - part 2
Overview
This is the second part of the Your Tech Interview Sucks series.
In part one, I wrote mostly about who not to hire and how not to do interviews.
This entry focuses on what type of candidate to look for and how to find them.
What's the goal? Find someone who will dramatically increase the productivity of the team. That's it.
The person must be competent in whatever frameworks and languages you use but don't misunderstand.
The person doesn't need to be the best at those languages or frameworks. They just need to be competent.
Do your team and company a favor and stop passing on candidates that don't have every useless fact or idiom memorized.
Solving for the Waffle House problem
Part one mentioned Valve Software's best hire was a guy who was previously a manager at Waffle House.
What type of person is this?
I don't know this individual personally, but I've seen people who I would put into this category.
They are Productivity Dynamos.
People who have the brain power to learn abstract computer concepts and languages and attack relentlessly.
They get things done.
They have the drive to be the most productive member at your company.
When interviewing candidates, how can you identify people like this?
Trait system
As I analyzed my list of great colleagues, I noticed the following common traits.
- They were smart and learned quickly.
- They worked hard every day.
- They cared about the quality of their work and cared about doing a good job.
- They had an attention to detail. No detail was so small as to be unimportant.
- They never gave up. Not even when they encountered setback after setback. They were relentless.
In the past when I've rated my teams, I've always thought of their performance as a letter grade. Like in school. A, B, C, D, and F.
If you find a candidate with 2 of the 5, you should hire them. They'll be a solid C+ performer for you.
A candidate with 3 of the 5 will likely be a B performer. Hire them and try coach them up to a B+ through your leadership skills.
4 of the 5 traits starts to get into some rarefied air. Those are A/A- performers. Hire them and offer towards the upper end of the position's salary range.
If the candidate has all 5? Hire on the spot. They're a candidate for the ages.
Hail to the king, baby.
This person will run laps around everyone else who works for you. Once you make the hire, don't let them out of your sight. Make sure they're always happy.
The interview process
Modify your existing interview process and cut out anything that biases towards the 'rockstar' archetype I described above.
Add in what I describe below, and feel free to customize. Whatever works for you to help find the 5 traits. Any other suggestions you might have, please let me know.
1. Smart and learn quickly
Have them whiteboard a simple algorithm and I mean simple.
The steps a vending machine requires to give exact change, for example. Assume the machine has unlimited coins for change.
Watch them work through it.
Once they have the answer, ask them how to change the algorithm to take in account finite change in the machine.
If they adapt quickly, they're probably on the ball. Regardless make sure the problem you give them is in a domain that they have a good grasp on. Maybe traffic lights or email.
Don't ask them to architect Twitter or solve some internal company problem.
2. Hard worker
One way to test if they're a hard worker is to figure out if they take initiative without prompting.
Ask questions like have you ever done work to improve or fix something that wasn't scheduled in the sprint?
Maybe lead out with here at X corp we never expect our people to work past 5pm or on the weekends. See how they react. If they're a major ass kicker, their eye might twitch.
3. Do they care?
Start by asking them about the times they've been frustrated in previous jobs.
It's a typical interview question, but you'll be looking for signs they were trying to make something great but various factors out of their control were obstructing.
Maybe the candidate was working hard to add some additional nice to have features before dev complete but the management team told them to stop.
4. Attention to detail
This can loop back to the algorithm mentioned in the above section.
When you lay out the vague problem, like how would you code a vending machine, carefully listen to the types of questions they ask you about it.
The more questions they ask that are detail oriented, means they're in the details. That's what you want.
5. Relentless
Relentless people are going to naturally have an edge. Always attacking.
I'm not really sure how you tease this out during an interview process. You can always ask questions about if they've ever been totally stuck and how they overcame it.
I'm not sure that's the best though.
You might want to challenge them to a rock-paper-scissors contest and see who wants to stop playing first.
Wrap up
There you have it.
Dump your current worthless interview process and adopt one that's going to identify truly productive team members. Team members who will make the team better.
Stop hiring people who can answer worthless facts about programming languages and frameworks. Stop hiring people who memorized quick sort.
Start hiring people who are smart, hardworking, caring, with attention to detail, and above all relentless.