Chris Hecker Interview Process
The Chris Hecker interview process is an approach to interviewing software engineers that focuses on assessing the candidate based on topics they should already be very familiar with. It is designed to put the candidate into an authoritative position where they have all the answers instead of presenting them a problem they have zero familiarity with.
The interviewer’s role is to ask clarifying questions to test the candidate’s technical knowledge of projects they have worked on. This will often involve asking questions the interviewer may already know the answer to, but framing it as if they don’t. This gives the candidate the opportunity to explain a subject and demonstrate if they have a deeper technical understanding or just surface level details. It also shows off how good a candidate is at communicating ideas to someone who is unfamiliar with them.
The interviewer should not be focused on correctness or memorization. The ability to solve problems without assistance in a limited amount of time is not what we should be testing for. Instead, we should be focusing on a candidate’s confidence with their responses, communication skills, and patience when working with coworkers. These are all valuable skills that software engineers need to utilize every day.
The Process
Begin with a friendly introduction and small talk. The idea is to create a relaxed and comfortable atmosphere. It’s important to maintain this conversational atmosphere throughout the whole course of the interview.
Ask the candidate about their experiences, interests, and favorite projects from their resume. Try to find a project they are passionate about and that has enough depth that you can use to assess their technical knowledge and understanding. It’s okay to jump around and move off a project if it doesn’t seem relevant or if the candidate was less involved in it.
Start asking detailed questions about the project. Be patient and give the candidate enough time to think and explain their ideas. Pay attention to their responses and ask clarifying questions to ensure full understanding. Spend most of the time focusing on questions the candidate is comfortable answering. Any questions that the candidate is struggling to explain, move past them and revisit them towards the end of the interview. Uncomfortable questions can be valuable in demonstrating an engineer’s approach for solving an unfamiliar problem.
Focus on the following:
- Design Discussions: Why did they choose specific data structures, algorithms, architectural patterns, etc.
- Implementation Details: How was a specific feature implemented
- Problem-solving: Discuss challenges they faced and how they overcame them
- Communication: Evaluate how good the candidate is at explaining themselves. Are they being patient and making sure they are understood?
The problem with software engineering interviews
The average software engineer interview involves giving a candidate some kind of problem or puzzle to solve during the course of the interview. This has very little to do with the skills an engineer uses daily. No engineer is meeting a person they have never worked with before, being presented with a potentially tricky programming puzzle, and being asked to solve it on the spot under time pressure.
Software engineering is a marathon, not a sprint. Most non-trivial problems involve hours of effort before any code is even written. Hours spent developing familiarity with the problem’s concepts, reading about how others have solved this problem in the past, developing your own opinions and approach to the problem, and experimenting with the code. No LeetCode question that can be solved in 15-20 minutes can evaluate how well a candidate will do on a problem that takes days or weeks to solve.
Additionally, this process creates very unfair results for the candidate.
- They are given a problem the interviewer already know the answer to
- They are forced to work under time pressure that normally doesn’t exist
- They have someone hovering over them while they are trying to work
- If they are nervous this environment could make it impossible for them to concentrate
- They could be self-conscious about their own abilities even though they are very capable at what they do
This process is problematic since it can reject candidates even though they were the best person for the job.