SDE 3 Hiring Playbook
Hiring Playbook (SDE 3)
General interviewing tips
Remember that candidates are often nervous before starting the interview. Make sure you help them get comfortable. Ask them if they had lunch/breakfast/dinner (depending upon the time of the day). Ask them if they need a cup of coffee or a bottle of water.
Always keep in mind that while you are evaluating the candidates, the candidates are also evaluating you, and therefore, by extension, evaluating our culture at large.
Interviews are the touch points for candidates to know more about the kind of people they will be working with. They should be excited about the opportunity to work with us. Remember that our behaviour during the interviews creates impressions of the company. As goes the old adage, “first impressions last”. So let’s try to put our best foot forward and create the best impression possible.
Things to do to create a good impression:
- Be on time.
- Greet with a smile.
- Make the candidate feel comfortable.
- Introduce yourself first.
- Speak politely.
- Explain to them the format of the interview.
- Even if you disagree with a candidate on some points during the interview, do it respectfully. (Don’t lose your cool)
- If you are late to the interview by 5 mins or more, for whatever reason, apologize for the delay. Ask the candidate if it is okay for them to extend the interview by 5 more minutes towards the end. (Doing this helps them understand that we are committed to giving them an equal opportunity to crack the interview.)
- End the interview on time (if possible).
- If the interview is going beyond the stipulated time, remind them that the interview will be over in a few minutes. If you still think that they can solve the problem in a few more minutes, ask them if they are okay with extending the time for a few minutes. Don’t assume that they can spare time after the scheduled calendar invite’s end time.
- If the candidates ask for feedback at the end of the interview, don’t just jump in and tell them what mistakes they made.
Above all, in matters of external branding, professionalism is the best tool to gauge a company’s culture. So communicate properly, be punctual, and be polite.
If, for whatever reason, you are not going to be able to take the interview, please inform the TA team a day in advance so that they can help in rescheduling the interview.
Round 1: Problem solving/DSA, Previous Project
Evaluation Criteria: You need to evaluate if the candidates are able to arrive at an efficient solution to the problem proposed and if they are able to write the code for the same neatly.
Pre-interview preparation
Have a few questions ready from your side. Get them reviewed with your manager if need be. Have absolute clarity while asking the questions. You should have a complete understanding of the edge cases, what needs to be done, what can’t be done, etc. It doesn’t reflect well on your behalf if you are fumbling to ask your own questions. Round 1 is the first touch point for the candidates with the tech team. They expect you to be prepared. So let us be prepared.
During the interview
[0-5 mins] Spend the first 5 minutes making the candidate comfortable. Start with small talk. Introduce yourself, ask them what they are working on in their current role etc., but try to keep it to 5 mins at max.
[6-55 mins] Try to spend the next 50 mins on solving the problem.
Communicate the problem statement clearly and unambiguously. Give a couple of examples of inputs and outputs as to what the problem is trying to achieve (if necessary). Ask the candidates if they understand the problem statement. Spend a couple of minutes on making sure they understand the problem correctly. Answer all of their queries to your best extent possible. Make a note of the questions they ask. See if they are asking the right questions. Give the candidates time to think about the solutions.
If the candidates are solving the problem silently for more than 5 mins, ask them to walk through their thought process. See if they are able to communicate their thoughts correctly. If you are not able to follow through their thought process, ask them to explain again. If you feel that the approach the candidates are taking is not right, have a discussion around why the approach is not right. Help them arrive at the solution. The idea is not to interrogate them, we should try to help the candidates as much as possible to solve the problem. If you see that the candidates are thinking in the right direction, but are facing some small blockers, throw hints their way. See if they are able to pick up the hints and solve the problem correctly.
Ability to arrive at a solution is good, but not enough. The next step is to see if the candidates are able to convert their solutions into neat code. While asking them to write code, observe how much they care about writing the code. Look for things such as:
- Are they defining the names of the variables/functions appropriately?
- Are they discussing the assumptions they are making with you?
- Are they writing down the assumptions made in the codebase?
- Are they handling the edge cases properly?
- Are they following clean code practices?
- Are they creating global variables?
Above all, evaluate how much attention to detail they have in writing the solution!
If you are giving them only 1 hard problem to solve during the interview, try to give them 25-30 mins to write the code. If you are asking them to solve 2-3 problems with medium complexity, give them 10-15 mins to write the code for each of the problems.
[56-60 mins]
Keep the last 5 minutes reserved for any questions, doubts, queries that the candidates may have about the company. Try to answer as many questions as possible and help them get an understanding of the company, the team, and the culture.
“Position sell” is just as important as the interview. If you liked the candidates, make sure you help them understand about the role and the team they are going to be a part of. In an ideal case, after 3 rounds of interviews, the candidates should have a decent knowledge about what they are expected to work on and what is happening in the team that they are interviewing for currently.
Post-interview tasks
At the end of the interview, please take 5 minutes to write down detailed feedback about the candidates.
- Did they have difficulty understanding the problem?
- Were they asking the right questions when trying to solve the problem?
- Were they able to come up with a brute force solution?
- Were they able to communicate the time complexity of the brute force solution?
- Were they able to identify what can be done to improve their solution?
- Were they able to communicate their updated solution?
- Were they able to convert the solution into code?
- Were they following clean code practices while writing the code?
- Were they handling the edge cases correctly without any hand holding?
- And finally and most importantly, do you see yourself working with this person for the next 5 years?
Considering the answers to all the above questions, come up with a rating.
- Strong yes: you are deeply convinced that the candidate will do wonders if they join us.
- Yes: you know that the candidate will be a good hire.
- Weak yes: you think the candidate will need some hand holding on the job but can be a good hire
- No: you think the candidate doesn’t fit the bill.
Please also write down if you want the next interviewer to cover certain aspects of the first round (for example handling cases, or writing neat code etc.) if you think that you were not able to cover them in the stipulated time.
Round 2: Low-level and High-level design
Evaluation Criteria: In this round you are expected to cover the candidates’ knowledge of Low-level and High-level design. Unlike Round 1, this is more of a subjective round since there are lots of ways of arriving at the solution efficiently. So you need to evaluate if the candidates are able to cover all the use cases given, are able to create modular designs, are able to modify their designs at ease when the use cases change, etc.
Pre-interview preparation
Go through the feedback of Round 1 and see if the previous panelist wants you to cover something specific. You can see that feedback in the Smart Recruiter platform of the candidates’ profile’s interview tab.
Have a bunch of questions handy to ask. Make sure you understand the complete scope of the problem that you are asking the candidates to solve during the interview. Also, have a couple of use cases prepared that will alter some aspects of the question. This will help in understanding if the candidates are comfortable with modifying their designs when the requirement changes. In case the candidates choose to ask you for a requirement from a stretched use case, you can always tell them that “the stretched use case is not in the scope of the current discussion, but if time permits you can cover the same.”
During the interview
[0-5 mins] Spend time introducing yourself. Take some time to get to know the candidates. If possible, explain to the candidates the format of the interview.
[6-55 mins] Spend the next 50 mins or so on discussing the Low-level and high-level design problem. For low-level design, start with assuming that there are 2 users in the system. For high-level design assume that there are 1 million users in the system.
A few examples of what it means to ask for low-level and high-level designs.
An example Problem statement for low-level design:
Let us say we are creating a portal for booking tickets for movies (similar to BookMyShow) for the following use cases:
- As an admin, I should be able to add a multiplex with a varying number of screens.
- As a VIP user, I should be able to block the seats without making the payment. The payment option will be open until 1 hour before the screening of the film.
Now, a low-level design will concentrate on making sure the functionality is delivered and is usable for just about 5 - 10 users in the system.
An example Problem statement for high-level design:
As an extension to the above problem, you can ask the candidates to explain how they will architect the system when there are 1 million users interacting with the system on a daily basis.
What components of the low-level design work for this scale? What do not? What will you change to accommodate for this scale?
While evaluating for low-level designs, do take a look at how the candidates are coming up with the solution and keep these things in mind:
- Do they take care of separation of concerns while designing?
- Are they creating modular designs?
- Are they able to change their designs comfortably when we change the use cases?
- Are they following the SOLID principles?
- Are they using design patterns appropriately?
- Are they overusing design patterns?
- Do they understand how to write clear unit tests?
- Do they know how to do mocking and stubbing?
- What was the acceptable code coverage in their company in the past?
While evaluating for high-level designs, please keep these things in mind:
- Are the candidates able to communicate the problems they see with their design?
- Do they understand the various tradeoffs wrt scale?
- What are they optimizing for in their tradeoffs? Why?
- Do they understand transactions? Distributed transactions? ACID compliance?
- Do they understand replication? Partitioning? Hotspots? Rebalancing? Strategies in replication and partitioning? Which one to use when?
- Do they know when to use caching?
- What type of caching are they using?
- Do they understand the differences between write through, write back, and write-around caches?
- Do they understand how to select the cache eviction policy?
- Are they using appropriate databases for appropriate use cases?
- Do they understand various architectural patterns? Multi-layered? Event-driven? Microservices?
Please note that not all of these questions can be answered in a 1-hour interview covering both LLD and HLD rounds. For SDE 2s we should try to keep the time for LLD to a minimum of 35 mins and keep 15 mins for discussion on the HLD part.
[56-60 mins]
Keep the last 5 minutes reserved for any questions, doubts, queries that the candidates may have about the company. Try to answer as many questions as possible and help them get an understanding of the company, the team, and the culture.
“Position sell” is just as important as the interview, especially more so in the Round 2. If you liked the candidates, make sure you help them understand about the role and the team they are going to be a part of. In an ideal case, after 3 rounds of interviews, the candidates should have a decent knowledge about what they are expected to work on and what is happening in the team that they are interviewing for currently.
Post-interview tasks
At the end of the interview, please take 5 minutes to write down detailed feedback about the candidates.
Points of evaluation have been mentioned above in the [6 - 55 mins] segment.
Considering the answers to all the evaluation criteria, come up with a rating.
- Strong yes: you are deeply convinced that the candidate will do wonders if they join us.
- Yes: you know that the candidate will be a good hire.
- Weak yes: you think the candidate will need some hand holding on the job but can be a good hire
- No: you think the candidate doesn’t fit the bill.
If you think that the final round interviewer should cover any aspects that you were not able to cover in the Round 2, please call it out in the review. It will help the Round 3 panelist do a thorough 360° evaluation.
Round 3: Culture Fit
Evaluation Criteria: In this round you are expected to see the overall cultural fit of the candidates. You are evaluating how they communicate, how they handle conflicts and issues, what challenging problems they have faced, how they have overcome those challenges etc. Finally and most importantly, you need to evaluate if the candidates are able to fill the shoes of the position that is open.
Pre-interview preparation
Go through the feedback of the previous rounds and see if there is something that needs to be covered.
During the interview
[0-5 mins] Take some time to get to know the candidates.
[6-45 mins] Ask the candidates questions about the kind of projects they have worked on in the past, the kind of challenges they have encountered, the kind of complexity they are comfortable handling, and the kind of best practices they have been following in executing these projects.
Try to understand why the candidates are leaving their current positions and are willing to join us. It is important to understand the frustrations and the motivations of the candidates so that we know the kind of environments under which the candidates thrive in. It will also help set the right kind of expectations with the candidate when they join here.
Usually in Round 3, as a hiring manager, you should try to gauge the level of interest the candidates have in building technology and how they learn about the new technologies and how they keep themselves updated with the happenings of the tech world. There are two reasons for this. Firstly, it tells you whether the candidates are willing to step out of their comfort zones and learn something new that keeps them challenged. Secondly, this helps you gauge the breadth of knowledge the candidates have. In an ideal situation, for an SDE 3 role, we should be looking for someone who has an in-depth understanding of one technology and a breadth of knowledge of building various systems at scale.
[46-60 mins] Since this is the last round, this is the best time to convince the candidate to join us. Spend as much time as possible to help answer any questions about the position, the roles and responsibilities, the team, the projects, the company, the culture, the leadership, the values we believe in, and the career success paths for the candidates.
Post interview tasks
Since you are the hiring manager of the candidate, the decision to hire the candidate or not lies solely in your hands. In case you think you should have a quick debrief over a candidate’s previous feedback, please do so. Gather the previous panelists on a 15 min call and understand whether they think a candidate would succeed in this role. Or if the previous panelists saw any red flags.