Simple guide to interviewing engineers
Who is this for?
If you are looking for guidance on how to setup a process to interview full stack or backend engineers you may find this article helpful.
Let’s get started …
I’ve generally found four one-hour interviews to be sufficient to get a 360 view of a candidate. I usually use this structure for each candidate (you can get creative …)-
The interview will be broken down to 3 parts:
Review the candidates profile (LinkedIn or resume) and have clarity on which competency and level (junior, mid, or senior) you are evaluating. If you have questions, connect with the candidate’s recruiter.
Once you arrive in the room / virtual room, offer the candidate a water/drink or bathroom break (if in a physical location) and introduce yourself. Tell the candidate about your role and responsibilities, your team, and anything else that you think might interest the candidate. Get to know them as well.
Outcome: Candidate should know who the interviewer is and feel comfortable enough to converse about various topics for the 1 hour interview.
Interviewer: Hi Jane. My name is Bob and I will be spending the next 1 hour with you. Before we get started, can I offer you a water, juice, snack, or bathroom break?
Before we dive in, let me tell you a bit about myself. I work on the Butterfly Project team specifically on the Ripple project team. I have been with the team for 8 years. As the Butterfly Keeper on the team, I am responsible for taking care of butterflies. This means feeding the butterflies and keeping them happy.
(You can also share information about team size, something you are proud of that you launched recently, …)
That’s a little bit about me. Can you tell me a little about what you are working on?
This is the most critical part of the interview. During this phase, you will dive into the competency that is assigned to you and aim to get a 360 view (strengths and weaknesses) of the candidate. Here is my suggested approach:
Here, we want to spend a bit of time understanding how the candidate works and thinks beyond what you would get from the coding section alone. You will want to dive into a project they’ve worked on and understand why they made certain decisions.
Note: Remember to keep the candidate’s level in mind. Junior candidates won’t have a lot of experience. You can ask them to think back to projects they’ve worked on at school.
You can ask questions such as:
- Can you tell me about a project you’ve worked on that required you to learn a new technology?
- Tell me about a time you had to deal with a change late in the project that required architectural changes?
- Tell me about a time you had to deliver a project under tight deadlines. Specifically, what trade offs did you make to deliver the project?
These types of questions will give you hints on how the candidate operates on a day to day basis and if they are a good fit for your organisation (in addition to their technical skills).
Coding / Sparring (Or Design / Sparring)
During the coding/design and sparring part of the information gathering phase, we will actually work with the candidate to solve a problem.
Coding / Problem Solving
Let’s assume you are assigned the Coding (Problem Solving and Data Structures) competency. Here is a sample question you can ask and follow up scaling questions.
Given a list of names that represent votes, find the winner of the vote.
Input: Jay, Bob, Jay, Alice, Jane, Alice, Jane, Jane, Jane, Jane, Alice
- What if you have a tie?
In the case of a tie, the first person to reach the most votes wins.
How would you handle ordering in this case?
- Update the function so the winner has to have at least a majority vote.
- What if the input is changed to a stream?
- How would you handle internationalisation? Can your data structure handle this?
- Solve the same problem in a way that uses the least amount of memory.
Outcome: Candidate delivers code (in their language of choice) and demonstrates sufficient problem solving and CS fundamental skills.
Let’s assume you are assigned the Design (Application design) competency. Here is a sample question you can ask and follow up scaling questions.
Let’s assume you are building out a phonebook app (like the one on your phone). Can you walk me through the APIs or interfaces you would need for the UI to talk to the “backend”.
- The candidate should ask clarifying questions about things that they are not clear on.
- Hopefully they recognise that they will need a Person entity very quickly. This should be a core part of their model.
- The interviewer can then dive into this a lot more. What properties would this person entity have and how can it be extensible (e.g. versioning?)
- Then dive into the APIs:
- What about bulk APIs?
Provide the code for a prefix search algorithm
Assume that you have a reference to an in memory HashMap with all the contacts
Outcome: Candidate demonstrates their ability to deliver a suitable design for the problem.
Remember!, the candidate is evaluating your organisation as much as we are evaluating them. You should aim to spend the last 10 minutes of the interview answering questions that the candidate has for you or about your organisation. The Q&A phase gives the candidate an opportunity to decompress as well.
If the candidate asks you to provide feedback about the interview, please ask them to contact the recruiter. If the candidate does not have questions for you (some won’t), spend the time talking about your organisation. Tell them about your experience (what you like, what you would change, …). Sell the role and your organisation!