Whether to hire someone is the most important decision you'll make as a CTO.
People come first, before tech choices, architecture, choice of cloud provider, etc. Hiring the right candidate for your team can multiply your team's abilities. Choosing the wrong person, can bring your team to a standstill or worse, have good people heading for the door.
One part of getting the right person into the company, is the technical interview.
Every company does it differently.
How should you do it as a first time CTO in a startup?
I've seen lots of tech interviews on both sides of the table. I've hired 100s of people over the 25+ years I've been in software. I've seen bad tech interviews and amazing ones.
Firstly, what makes a good one?
A good tech interview gives you a solid sense for the person's technical competence without wasting the candidate's time or your team's time.
It should also give you a sense for how they work in teams, how they respond to feedback and whether they can communicate their thinking clearly.
Here is my current tech interview process:
Give the candidate something to complete at home. Nothing super challenging, something that will take max 30 mins to do. It serves as a base to start the discussion.
Have the candidate send the code back to your team. One of your team takes a look and decides whether its worth everyone's time continuing.
Invite the candidate to a pair programming session with 2 of your team. During Covid, we did this in Teams/Zoom
After the intros, have the candidate share the code in their favorite editor and walk through their solution, explaining why they made certain choices, pointing out things of interest.
Ask the candidate to fix a bug. They don't have to write 100% perfect code. They need to explain their thinking first, then maybe give some idea of where they would put the code into the code base. Most people get very nervous in interviews, so its not really fair to expect high quality code when adrenalin is dampening their frontal cortex. But they should be able to talk through it.
Ask the candidate to build a new feature or extend an existing feature. Again, its the thinking here, not 100% perfect code that is important.
Provide feedback on the bug or feature, suggesting a different approach and ask for comment. Its amazing how many engineers get wound up when someone suggests their initial approach could be improved. The whole point of working in a team is to work together to create something better than a person on their own could achieve.
Close the interview by answering any questions the candidate has.
I've run a similar process with many different teams. The process allows the team to scale their technical interviews across the members of the team. Everyone knows the challenge, what questions to ask and how to provide challenging feedback to the candidate.
The challenge changes, the questions change but the approach has been remarkably stable.
Doing a pair programming session of sorts helps both candidate and your team get a feeling for what it would be like to work together. So we've hired amazing people that fitted the team well. Of course, tech skills are only a part of the the job as a software engineer.
I'll write about the other skills and how to match candidates in a future post.
Let me know in the comments if you have other questions about recruiting engineers.