Chapter 4: Main interview

What is main interview?

For this book, an interview section refers to a single meeting where you discuss a particular problem with the interviewer, and an interview session refers to a group of interview sections conducted in a single day. A "main interview" is defined a collection of interview sessions conducted over multiple dats and based on which an offer is made to the candidate. The goal of main interview is to simulate an environment to observe and evaluate on how the candidate might perform in a real project, working with a team in the company. Unfortunately though, the goal of main interview often gets reduced to "trying to check if candidate knows data structures and algorithms". While knowledge of data structures and algorithms do play a role in successfully clearing the main interview, that is not the entire focus of the main interview. Some other behaviors and capabilities of a candidate that are identified and evaluated during the main interview include ability to pull out information from a problem statement and prepare an action plan, identify gaps in an action plan, solicit feedback from others on how to close the gap, act of provided feedback from others, identify gaps or extensions in the problem statement itself and engaging with the product managers to understand short and long terms goals, displaying empathy in communication with others.

Pre-pandemic (COVID-19), the main interview used to be happen on the company's physical location and the candidate was flown to the company's location. To prevent taking more than necessary time from the candidate, all interviews were conducted in a day-long session. However, after the pandemic, many companies have become remote-first, and so, the interviews generally happen virtually. The candidate is no longer flown into the company's office. An advantage of virtual interview is that the main interview can be split into multiple sessions spanning over multiple days, making each session comparatively less strenuous.

Scheduling the main interview

After you've passed through the screening interview, your recruiter will reach out to you to schedule the main interview. In total, somewhere between 5 to 7 interviews are conducted within the main interview. Each interview can be 45 minutes to 1 hour long. There may be some interview section(s) which are unique to a company or to the seniority level of the position. Pre-pandemic, the interviews were generally scheduled back-to-back on the same day, but with the understanding that if the candidate would want to take a small bathroom / water break, then that's ok; But just a small break, like, at most for 5 minutes. Another advantage of remote interviews is that more breaks can be put in. My suggestion is that if you feel that the schedule provided by recruiter has multiple interviews scheduled back-to-back, and you would definitely need a break in between, then discuss with them about whether the breaks can be added in the schedule. If you will be having virtual interviews, then also confirm with the recruiter if you need to install any software before the interview.

Normally, the main interviews are scheduled within 2-3 weeks of the screening interview. If it is getting scheduled any later, it may be because the company is receiving a lot more applications across all openings. If you passed your screening interview but not with a large margin, then I would suggest having the main interview scheduled as late possible and use the time to prepare for the main interview. Check with your recruiter on how much the main interview can be delayed. Even so, the main interview may not get delayed beyond 2-3 weeks after the screening interview.

The main interview session is normally scheduled to start in the morning, matching the business hours for the company in the corresponding timezone. This will normally be the case if you are visiting the company for your main interview. However if you are interviewing virtually, then it is suggested to work with the recruiter and try to set up a time which is comfortable "FOR YOU". For example, if you are in the Pacific timezone, and the main company headquarters are in the Eastern timezone, then push back if asked to have the interview start at 6AM your time (in pacific timezone) just because it will be 9AM at the company headquarters. This being said, the negotiation may not always work in your favor. The main thing to note is that if the company is so rigid in moving the interview schedule, then it'll have similar rigidity regarding work hours regardless of how flexible and remote-friendly they may claim to be in the job advertisement. At end of an interview section, a chat with the interviewers should also help clarify the company policies regarding flexibility / rigidity of working hours.

After the main interview has been scheduled, the recruiter will also provide you with the names of interviewers for the corresponding interview sections. For each interview, the standard practice is that there will be only one interviewer who will lead the interview. If there is a second interviewer, then it is likely that they are shadowing or reverse-shadowing the lead interviewer. Shadowing is when a second interviewer learns about interviewing practices by observing how the lead interviewer drives the interview and answers various questions from the candidate. The shadowing interviewer also take part in evaluating a candidate's response. Doing so helps them to slowly get attuned to evaluating the candidate response across various decision metrics in a bias-free manner. Reverse-shadowing is when a shadowing interviewer feels that they are ready to lead the interview on their own, and want a "calibrated" interviewer to observe them (i.e., reverse-shadown them) and verify that they are conducting the interview in a proper manner. Do realize that the interviewers who actually show up to conduct the interview may be different from those provided by recruiter due to last minute changes; But that doesn't / shouldn't matter in regards to how the interview is conducted.

You should also ask the recruiter if the interviewers belong to the same team to which you are applying. The common scenario is that your interviewers will NOT be the from the same team to which you are applying. Instead, they will be software engineers from various teams in the company. However, there will always be one interview section where you will be talking with the hiring manager and who can answer all team-specific questions. For other interviewers, you can still ask them questions to understand their viewpoint on work environment, culture, general company policies and how it affects them or what they think about it. This can be useful to identify any issues that can make the position or company feel like not being a good fit for you. If applying for consultancy roles, it may even be possible that your interviewer is not from the same company. For such roles, the goal is to verify that the candidate has a good technical knowhow and can apply it to various contracts from different companies. Still, these interviews will be more rigorous than the screening interview.

Just to mention: You will also be asked to sign a non-disclosure agreement before the main interview. This is more of a precautionary measure to ensure that the candidate does not divulge any company proprietary information that they may come across during the interview. That being said, your interviewers will never really give you any company specific information that is not already in public domain. But it is still a good and standard precaution taken by companies.

What to expect at main interview?

First things first, realize that an interview is a two-way communication, i.e. the interviewers will gauge your skills and ability to perform at a level, and also, you can, and should judge the company work culture by asking questions after the interview and by noticing some more subtle behavioral patterns of the interviewers. Just like the interviewers may find you to not be suited for a role, you also have a choice to not continue pursuing a role if you feel that there is a huge disconnect between yourself and the company culture. This will be useful if you end up getting multiple job offers with similar compensation level and must identify an offer that you'd like to accept.

On the day of interview, an interviewer will lead a particular interview section and will close the interview when the time allotted for the interview is over. Generally, by this time, the interviewer(s) for the next section have arrived and they will lead the next interview section. As mentioned above, there may also be one more interviewer who will participate as a shadow or a reverse-shadow. There may be scheduled breaks in the interview schedule. If not, you should ask the interviewers if you can take a quick break to use restroom, or to get water, etc. - just ask, and the interviewers will almost always say yes! If any interview requires use of a third party application, like, using HackerRank for coding, or Github, etc., and you don't have a working knowledge of it, then you should ask the interviewers to provide basic instructions on how to use the application. I would strongly suggest to NOT think something like "..by saying you don't know how to use the application, you'll appear as a weak candidate for the job position". Instead, you should ask the interviewer for instructions. Ideally, the interviewer would themselves offer to provide the instructions. However, if the interviewer responds negatively to your request or suggests that a good candidate should know how to work with a tool, then realize that such a company will not have a culture of mentorship.

Preparations / Things to consider

This section covers some of the preparations / things-to-consider for the main interview.

Don't be rude

For any software engineer role, you'll always be working in a team. This brings up one of the most important criteria for selection, that you should be an amenable person to work with; Or, in short, don't be a rude person! Interviewers will try to evaluated this criteria based on multiple behavioral cues from you, like, do you allow other people to have a discussion with you? Do you cut other people while they are talking? Do you listen and accept the feedback provided by others? Realize that there is also a balancing act to these behavioral cues. For example, let's say that in an interview, you feel that the discussion is going off-course and you want to bring it back to the question posed by the interviewer. If you don't interrupt the interviewer, then it can appear to the interviewer that you are not in cotrol of the discussion and this is also not be a good thing. Here, rather than not listening and ignoring to the feedback from the interviewer, a better options may be where you say something like, you acknowledge the feedback and views of the interviewer but you feel that the discussion is off-course because of a reason, and you want to bring the discussion back to the topic. Even better is to ask a follow up question to the interviewer on whether they also fel that the discussion has gone off-topic or if they think that their feedback is in-line with the discussion and so you should spend some time on it. This suggestion is based on the realization that after you join a team, you'll be working collaboratively on a project with multiple people from various backgrounds. So, as an ideal candidate, you should allow each member to provide feedback on the topic, you should listen to the feedback and then act on the best suggestion, which may be coming from someone else. And if you disagree with others' suggestions, then instead of shutting them off, you should instead clarify with the other person if there suggestions are based on any assumptions and whether those assumptions apply to the problem at hand. Maybe it is you who has some misconception about the problem at hand, and so the suggestions provided by you are based on wrong assumptions and should not be used. But unless you provide a space where everyone in the team is invite to provide their ideas and collaborate, you won't be able to find the best solution. Fostering and participating in engaging discussions, trying to understand others' viewpoint and clarifying your own views to others is as important a skill for a software engineer as it is to translate those ideas into codes. Hence, approach all discussions in the interview with a higher emotional intelligence level.

Sleep, relax and have happy thoughts

It is known psychologically that a stressed out mind is not as productive; It isn't able to quickly ingest and analyze new information, and also unable to connect the dots between existing and/or new information. So, I would suggest that before the interview day, don't undertake stressful activities. Have a usual meal, so that you don't upset your health trying something risky. Get plentiful sleep - which may be the hardest task if you are hinging a lot on interview to go sucessfully! On the day of interview, if you have an on-site interview, then arrive early to the office and spend some time calming your mind, maybe by meditation or playing some game, or whatever helps you! It might be good to download a bunch of dog / cat photos / videos off internet along with some jokes, or whatever makes your mood lighten up, and just cycle through those before the interview.

The stress level can also rise during the course of interview. If you are having virtual interview, then camera fatigue can set in as the interview session proceeds. Even for on-site in-person interviews, you may find yourself getting stressed as the interview session proceeds over the day. One option in trying to relieve the stress could be to ask the interviewer in the upcoming interview section to give you a one minute break to destress from previous interview. The interviewer will very likely agree to it because one minute is not a big gap that can otherwise disrupt the activities planned in an hour long interview. For virtual interviews, you can use this time to briefly close the camera and microphone and get your bearings before joining back again. However, please do let the interviewer know that you are about to briefly close the close; You don't want the interviewer to observe you unexpectedly turning off your camera and microphone, and wondering about what happened! If you feel like your stress levels are becoming uncomfortable during the interview, then I would suggest simply asking the interviewer to give you a quick 1 minute break to help you bring your stress levels down. Communication is the key here; You don't want to simply stop talking and assume that the interview knows you are taking a quick break. Ideally, a quick small break shouldn't get counted as a negative against your performance. However, if the interviewer counts it as a negative, then, frankly, you don't want to be working for such a team or company! An interview is supposed to simulate how the candidate might perform in a real project. If the company is so nit-picky about a small break, it's highly likely that the corporate work culture is where managers micro-manage and oversee every activities of an employee.

Technical points to consider

In a software engineering interview, one or more interview sections will focus on technical skills of the candidate. Details about these sections are covered in subsequent sub-chapters. Over here, I want to suggest that when responding to an answer, one shouldn't have a narrow focus on only getting the algorithm and data structure correct. Following points must also be considered: (1) Is the code easy to read? (2) Can the code scale horizontally? Does the code enable parallelization? (3) Is the code thread safe? (4) What are some places the logs should be added, or from where metrics can be collected for A/B testing? (5) Are there any private data being used? Does it raise any privacy concerns? (6) If writing a frontend code, are there any accessibility concerns? Once again to mention, that these points will be elaborated on in later chapters. However, one should realize that there's a whole lot more to the technical considerations that go into having a good code, and it is not limited only to having a code with correct data structure and algorithm.

Talk aloud

When at interview, expect to be speaking for a lot of time. In doing so, the goal is to convey your thought process to the interviewers. This will help both you and the interviewers in the following ways: (1) It helps you convey your thought process to the interviewers about the data structure and algorithm that you are planning to use to solve the given question. Without it, the interviewer will not be able to realize if you simply got lucky and guessed the correct solution, or if you were able to deduce the correct solution based on the requirements given in the question. There is a big difference between the two cases, and an important goal for the interviewers is to identify that you belong to the latter category, i.e. you are skilled to identify a solution for the give problem rather than just relying on luck. (2) Another way in which talking aloud helps is that if you are going off in a wrong direction as you try to solve the problem, then the interviewers can try to guide you towards the correct solution. However, if you don't talk about what you are thinking, then the interviewers will never know that you are going in a wrong direction, and they won't be able to guide you. (3) By talking aloud, you can demonstrate the breadth of your knowledge to the interviewers, even if you don't immediately use all of it when solving the question. Since an interview will be at most 1 hour long, you will likely not have a chance to showcase the various technical points that you've kept in consideration (for example, those mentioned above) by including them in your code. However, you can still talk about these point and have the interviewers realize that you are a really awesome software engineer who also keeps these points in consideration when they are developing the code.

Questions to ask

The interview session will have 1 section where you will be talking with the hiring manager for the particular group where the job opening is situated. For the other interview sections, you may be talking with software engineers from different group in the company. In both these cases, you will get to ask questions about the group and about work life at the company. It is suggested that you should prepare a list of questions that you want to ask the hiring manager and another list of questions that you want to ask the software engineers. Both lists can have a mix of overlapping or unique questions. In the list of questions to ask engineers, maybe a particular question is important to you and you want to ask it to multiple engineers. The suggestion is to make a priority ordered list of questions so that you can quickly access it during the interview rather than trying to remember it by memory and wasting time in recall process. Also, it is suggested to keep some space below each question so that you can quickly add answer to the question that was provided by the interview. If you have interviews with multiple companies, then it is suggested to create a fresh list of questions for each interview.

Don't be late

This is a simple and obvious point: Don't be late for your interview. For virtual interviews, if you run into unexpected technical issues, then quickly drop an email to your recruiter notifying them about it. Once the issue is fixed, update the recruiter again. The email doesn't have to be formal - just one line emails are ok! The goal here is keep the recruiter in loop with the interview progress. For on-site interviews, plan to arrive to the company up to 20-30 minutes before the interview, just so that even if you run into traffic, you will still be there before the first interview. There are two main drawbacks of being late, and none of them being that doing so gives a bad impression! Ideally, a company with good hiring practice will always make sure to evaluate you based on your interview performance and not based on interviewer's bias and "impression" of you. If a company does evaluate you based on interviewer "impressions" and "feelings", then that is likely a company you DON'T want to work for! Back to discussion point, the two main drawbacks of being late are: (1) If you are late by a few minutes, then you won't get sufficient time at end to ask questions to the interviewer about their work experience in the company. These questions are a good way to get an insight into the company culture. (2) If you are late by a long time, then that will eat up the interview time, in addition to the time to ask questions to the interviewer. A shorter interview means that the interviewer may not be able to satisfactorily evaluate your skills. Thus, they won't be able to confidently recommend you for the position. In conclusion, don't be late for the interview.

Good hardware

Post pandemic, virtual interviews have gained dominance and it seems to be here to stay. In this setting, having proper "hardware" is very important. This includes: (1) Most important - A good microphone because you don't want to be inaudible or sound unclear to the interviewer. (2) A good headphone because you'd want to be be able to clearly hear the instructions provided by the interviewer. Don't use a speaker because it can create a feedback loop if both your microphone and speaker are on. (3) A normal mouse or camera should suffice, but do make sure that they work and are not low on battery. (4) If you are likely to have thunderstorms roll in during the interview, realize that these can cause power fluctuations. In these cases, it's also really important to have a laptop with a good battery life. You don't want the voltage spikes / fluctuations disconnecting you from a meeting. Unless you have a dedicated power bank to provide connection to a desktop, it may be preferable to instead use a laptop. (5) Also, really important in such cases is to have a backup wifi because a power fluctuation can cause wifi to be unavailable while the router gets back on. This generally means having the ability to tether to wifi of your phone. Note that wireless carriers may charge extra for tethering. Check with your wireless provider and how you can enable / disable tethering from your phone to your laptop.

For on-site in-person interviews, it is suggested to carry some dry erase pens of different color (not permanent markers) with you. Almost all interview sessions have one / multiple interviews where the candidate is asked to code or design on the dry board or glass walls using the dry erase pens. While the company does provide these pens, sometimes, the ones available in the interview room are not as good and legible. In such cases, having and using your own dry erase pens can be useful rather than trying to search for working pens. Your interviewer will / should also appreciate your preparedness!

A quiet room and silent phone

If your main interview is being conducted virtually, then make sure to have a quiet room where you plan to have the interview. Pick any room that makes you feel comfortable. Ensure that the room can be closed so that you can be free of distractions or noises, so that you can perform your best during the interview. Also, make sure that you have access to some nearby restroom. If you are privacy minded and feel uncomfortable that the details of your room is inadvertently getting shared with the interviewer as the background in the video call, then check with the interviewer if the video interview platform being used supports hiding the background. At the time of writing, Zoom is a commonly used software for conducting video interviews, and it supports modifying or blurring the background.

On the topic of keeping things quiet, it is suggested to silence your phone. Might be a better idea to simply shut it down. If you choose to instead on airplane mode, then at least make sure to turn off all your alarms.

Food and water

This may seem like a silly point to discuss, but personally, and through somewhat painful experience, I realized that it is something important to discuss. The discussions apply both for in-person on-site interviews or remote interviews. (1) On the day before interview, avoid any fancy eats/drinks. Have your usual meal. On the day of interview, you don't want an upset stomach. Avoid over-caffeinating yourself, or a hangover, or not being properly hydrated. Essentially, have a eating and drinking routing that is just like any other day. (2) On the day of interview, make that you remain hydrated. You'll be speaking a whole lot in each interview. So, have multiple water bottles somewhere close by to you. Plus, it's one way to ensure that you don't feel sleepy after having a meal. (3) Have a breakfast of slow digesting protein (reference). These will stay in your digestive system longer and curb your appetite for more of the day. Nothing’s worse than feeling pangs of hunger around mid-morning when you are still several hours away from lunchtime. (4) Have a breakfast of low glycemic index food. The slow-release carbs help to sustain energy levels throughout the day, leading to increased alertness and better cognitive performance. (5) Keep some small sugar treats nearby, like M&Ms, or fun size chocolate. You can use these at start of interviews to provide a burst of extra energy, but be careful to not overdo it.

Along similar line of reason, avoid food that can make you fall in a "food coma", fatty food, or stuffing yourself during lunch break. Specially take care of not overstuffing yourself if you are invited for on-site interview, and the company is sponsoring your lunch. It may be tempting to "enjoy the lunch perks", given that your company assigned lunch buddy will be having a nice enjoyable meal. However, realize that you, unlike your lunch buddy, need to ensure that you don't eat things, or quantity-of-things such that it reduce your alertness during the interview. You don't want to eat high "tryptophan" content food that eventually changes to melatonin and makes you feel sleepy after the meal. For same reason, be careful of consuming food items with refined sugar anything more than "just a little". While the sugar initially increases the alertness, it is soon followed by a long, debilitating sugar crash.

Keep record of interview experience

Just like as suggested for screening interview, it is suggested to keep a detailed record of all interview experiences. This can be useful to analyze and identify what went well versus what did not go well and needs to be improved for future interview. However, doing so many be much more challenging in the main interview because different intervies are scheduled one after another. You can ask your next interviewer to give you, say, 2 minutes before starting the interview, so that you can make note. Most likely, they will be ok doing so. But, please don't ask for much more time because you don't want to have the ideal interview time get cut down, else that prevents the interviewer from making a fair assessment about your skills, which was the main reason for even having the interviews. Also realize that you would have most-likely signed a non-disclosure agreement (NDA) before the interview, so you should only add relevant notes that can help you in future interviews, and not any proprietary information about the company.