I’ve been helping some startups with their interviewing and recruiting lately. I’ve seen startups which have capable interviewers who lack bandwidth, which feel confident interviewing for some roles but not others, which have an illogical or inconsistent process, and some which have no real process at all. In this post, I will discuss the different types of interviews for technical candidates, and suggest who to interview for what.
Caveat: I am describing what I consider typical interviews. With effort, some startups have successfully re-invented technical interviews like, for example, having the candidate work for the company for a week. (I remember reading about this company a while ago, but forget the name. Can anyone help with a source?)
- Prescreen for Coding Becoming more and more common. Some sort of coding problem to be completed prior to speaking with anyone technical.
- Coding and Algorithms The most basic kind of technical interview asks you to code a solution so some problem. Solutions usually require algorithms or data structures commonly taught in 2nd or 3rd year of undergrad CS programs.
- Architecture Depending on the company’s space, how do you build systems? As an example, in digital advertising I might focus on large scale systems, failure scenarios, and distributed counting problems. A games company might focus on graphics engines and AI.
- Team Leadership Covers sprint planning, software engineering best practices, testing practices, deployment strategies, and generally how to run a team well.
- People Management How do you manage people? I also often include hiring processes in here.
- Team Management This covers managing teams (e.g. having managers reporting into them). It would also include things like budgeting, company or division policies, and longer term prioritization.
- Communication How are they at communicating? Can they discuss technical topics with non-technical folks successfully?
- Product Management How do you define software deliverables which meat business needs?
In general, you ask more senior people items further down the list. You also ask less of the basics. Example: a Sr. Manager or Director likely knows how to code or at least did at some point. They should ideally be able to pass your coding question, but if they will not be required to code in this role, then it might be okay to pass them with a mediocre result if they’re strong in other areas. For a mid-level software engineer, their coding is actually the most important component, so you should really focus on this and make sure they are strong in this area.
|Job Title||Prescreen||Coding||Architecture||Leadership||People Mgmt||Team Mgmt||Communication||Product Management|
|Jr. Software Engineer / College New Hire||1||3|
|Sr. Software Engineer||3||1||1|
As you can see, I would spend much more time interviewing more senior people. I also think it’s usually okay if someone “fails” one of their interviews. Unless they do spectacularly poorly, the other interviews should even out. Another line of reasoning here is that you want them to grow into the role. If they do amazing on all your interviews, then maybe they should be a level higher. This makes sense since you generally want to be more sure of them.