Over the past few months, I've shared some of my thoughts on how I prepare for various types of interviews. I've written about preparing for a phone screen, getting ready for a technical phone interview, and even some general thoughts on what makes a good technical challenge. But after all of these interviews, there's still generally one step left - the onsite.
I will be the first to admit that I'm far from perfect at preparing for an onsite. In fact, I have yet to come out of an onsite feeling like I'm definitely being offered the job, so clearly there is room for my preparation to be better. But I wanted to share some thoughts on my preparations, both as a starting point for anyone who may be preparing for their first onsite, and as an opportunity for me to see if there are any obvious holes in my process.
The Day(s) Before
Deciding What to Wear
It can be tough to know what clothing is appropriate for your interview. Many people recommend dressing one "level" above the norm for the office - for example, in a casual office, dress business casual. It can be hard to know exactly what constitutes casual or business casual or business, but a google search can sometimes help point you in the right direction (personally, I'm a big fan of Emily Post, so I use her guide, either from the edition of Etiquette that I have at home or one that I've found on the web).
Most of the companies I've interviewed with are fairly casual, so I have a standard outfit (or set of outfits) that I will wear. For spring, summer, and early fall, I have a knee-length black dress with a fairly unobtrusive design and a gold-accented belt, which I will wear with black flats and gold jewelry (how nice the jewelry I wear is depends on how formal I want to be). During the winter, I wear a nice skirt with a solid-colored v-neck sweater, either with flats or nice boots, depending on the weather (if there's snow on the ground, I'm wearing boots). I do have a suit (I think) to wear if I'm interviewing at a more formal company, but I haven't worn it at all in my software engineering career.
Deciding How To Get There
I don't drive, so the easiest way for me to get to interviews is by public transportation. For those who live in an area where there is limited or no public transit, your best bet may be to drive. I live near two different subway stops (which are serviced by several different lines), so there are often multiple ways for me to get to an interview. I like to know how long all options will take, and I will usually make my decision the day of the interview based on whether any of the trains are running with delays. If there is no good public transit option for me to get to an interview, I'll take a cab, but I'm also not likely to end up working at a company whose office I can't access via public transit.
If you are driving, make sure you have reviewed the directions (if you have a smartphone and/or GPS, you will most likely be using that for directions, but it doesn't hurt to have a printed copy just in case) and that your car has more than enough gas to get you to and from the interview.
Whatever method I am using to get to the interview, I do my best to add an extra 5-10 minutes into my plan to account for delays and/or just missing a train (it happens to me a lot).
Preparing for Technical Challenges
My preparation for the technical parts of an onsite interview is actually fairly similar to my preparation for a technical phone screen, with the biggest difference being that I try to practice coding not on the computer.
Much as I hate to say it, you can probably expect to be asked to write something on a whiteboard at some point during your interview. Hopefully it will be something visual like drawing out a form (yes, I was asked to do that in an interview), but it might be something more involved like writing an algorithm. If you're entirely used to coding/planning/architecting on a computer, it's a good idea to spend some time writing things down on paper (or on a whiteboard if you have one) and reminding yourself how to do these things without spellcheck or autocorrect (although I doubt your interviewers will fault you for spelling something wrong, unless it changes what you're trying to do).
In terms of what to practice, I always try to do some simple algorithm practice. I'll open up either CodeWars or HackerRank (or any similar such site) and spend an hour or two just going through problems. If I have a lot of time, I'll try to also do a few problems from Cracking the Coding Interview, but I tend to prefer doing problems online because there are a greater variety.
If I've had previous technical interview(s) with this company (which I most often have), I like to spend some time either reviewing my notes or reviewing the challenge if I still have it (if it's a take home challenge, it's probably still stored on my computer somewhere). This helps me go into the interview knowing what they have expected from me in the past on a technical level and allows me to brush up on things I struggled with in previous challenges and feel confident in the skills I was able to demonstrate earlier in the process.
If I still have access to the job description (I have a tendency to only save the link, not the description itself, so if it's no longer on the company's website, I don't have it), I review that to see what technologies they expect a candidate to know. If it's something with which I am very familiar, I make sure I can explain the basic concepts somewhat intelligently, and if it's something with which I'm not quite as familiar, I try to at least look up the basics so that I can explain where I think it fits in their tech stack, even if I don't know how to use it.
Preparing to Talk to Interviewers
If you've already had one or more interviews before the onsite, you probably know enough about the company to intelligently answer basic questions about what they do, but it never hurts to do a little bit more research about the company. Make sure you check out reviews from current and past employees (Glassdoor is a great place for this), and if you see anything that makes you hesitant to work at the company, feel free to ask one of your interviewers about it. Personally, I've usually already looked at reviews and done a lot of research, so I tend to just review my notes and make sure the company has answered all of my questions.
For most of my interviews, I've been sent a list of the people I will be meeting with. Going into the interview, my interviewers probably already know a bit about me (hopefully they've seen my resume), and I'd like to know a little bit about them. My first step is to look at each person's LinkedIn profile (if I can find it) to see how long they've worked for the company, what kinds of companies they've worked for before, and what their educational background is. I'm always happy when I see a company that hires engineers with varied backgrounds, and I'm always curious to see how long my interviewers have been at the company. If all of my interviewers have been there for short periods of time, it's a bit of a red flag for me, because it makes me wonder why they wouldn't have someone who had been there longer involved - are there no people who have been there longer or are they just too busy to deal with interviews?
If I have time, I will read some recent posts on the company's blog (if they have one) so that I have an idea of what they're working on. If I see a post written by one of my interviewers, I will focus on that to see if it could potentially be a source of conversation or could give me some insight into what questions to ask my interviewer.
I always expect to be asked a lot of questions about my background and experience, but I rarely prepare answers for that in advance. This is probably the wrong move, but I still have a lot of emotions (not all positive) connected to my last job, and I find that it's easier for me to speak factually, not emotionally, if I'm forced to take a pause to think of the answer to the question instead of just reciting a rehearsed answer.
Preparing to Ask Questions
If I have the list of people I will be meeting with, I try to write down at least one question I want to specifically ask each person. If I don't have a list of the people I'm meeting with, I make a list of questions for engineers, questions for the product team, and questions for the HR/people team, and once I know what the person I'm talking to does, I can ask questions from one of my lists. In both situations I will also write down a list of general questions about the company and the engineering team that I feel like I can ask anyone.
Personally, I find that I learn more from my conversations with my interviewers and my visit to the office than I do from asking direct questions. But I do find that it's important for me to ask questions, both to see if it leads me to learn something I hadn't thought about and to show my interviewers what I care about (so that they can determine if that's a fit for their company).
The Day Of
What To Bring
I always pack a water bottle (which I generally don't use), a padfolio with paper and a pen, my wallet, and my phone (which is on silent from the moment I get into the interview building). I generally don't bring my computer unless I'm specifically asked to do so (which has been a problem once or twice), but if you don't mind carrying your computer, it's always a safe thing to bring.
I always plan to arrive in the area of the interview at least 15-20 minutes before the scheduled interview time. Unless specifically told otherwise, I do my best to be in the building 10-15 minutes before the interview, to allow time for security and to get to the interview at least 5 minutes early. I also start checking the subways from the minute I wake up. If there's a problem with one of the lines I'm taking, I either use an alternate route or leave very early to allow me to arrive on time. It's important to have a backup plan for if your transportation plan gets too heavily impacted (for me, the backup plan is taking a cab).
Food and Drink
Generally when I arrive at an interview, I'm offered water, coffee, or a snack. I generally accept water (and sometimes coffee). This not only ensures that I stay hydrated, it also often serves the purpose of giving me an opportunity to see the office kitchen. If you're hungry, it's okay to accept a snack, but make sure it's something that won't have too much of an impact on your ability to communicate during the interview (don't be like me and take the really loud Terra chips ... they're delicious, but maybe not the best interview food).
During The Interview
Most of the onsite interviews I've done have consisted of multiple back-to-back interviews. My approach is to take each interview one at a time - focus on the person I'm talking to and the discussion we're having, and don't worry about the interview before or the interview after. I'm sure I've had times where I've had slightly different answers to the same question in consecutive interviews - but I try not to think about that, because I doubt my interviewers are comparing my answers word-for-word.
If your interviewer asks if you need a break, it's okay to say yes. It's okay to ask to go to the restroom or for more water. Your interviewers understand that this is a long day for you and you may need some time to reset. I usually refill my water at least once, or get coffee, or just run to the restroom, and I've never found this to have a negative effect on my interview.
Dealing With Difficult Questions or Coding
During the interview, you may be asked a technical question that you just don't know the answer to, or you may encounter a bug in your code that you're not sure how to solve. In these situations, it's okay to say "I don't know" or ask for help. If you have an idea, feel free to say that out loud, and if you've been told that you can google something, feel free to do so. It's okay to struggle with the technical part of the interview. It's okay to need help. In a real world situation, you shouldn't be afraid to ask for help, and that should apply in an interview as well.
At the end of each interview, you will most likely be asked if you have any questions. This is when you think about the questions you prepared. I don't always ask my prepared questions - sometimes I'll think of something during the interview conversation that I feel is more important to ask - but it's important to ask something. If I'm stuck and can't think of what I want to ask, I'll usually start by asking what brought the person to this company/job or what they enjoy most about the company, and often their answer will give me ideas about what other questions to ask. For example, if the person says that they appreciate that the company gives them the opportunity to learn new trends in tech, I might then ask what the procedure is for adopting a new technology or how the company supports learning.
If you don't know what specific questions to ask, ask a general question that can guide you towards those specific questions.
After The Interview
As I do throughout the interview process, I try to take notes on my onsite interview. Unlike phone interviews, I'm usually not writing notes during the interview, but I will often pull out my padfolio between interviews to jot down a few notes. If I'm not able to do that, I try to spend a few minutes after the interview (either at a local coffee shop or on the train) writing down some of my thoughts and the things we discussed during the interview.
I also try to get a sense from all the conversations of whether or not I felt comfortable in the interview and whether I think it would be a good fit for me. At the bottom of my notes, I usually have a thought about whether I would want to accept the position if it is offered to me. My decision on this may change after I have a chance to reflect on the process and after I've seen the offer, but I find that I do appreciate being able to look back later and see what my gut reaction was.
Many people say that it's essential that you write thank you notes (usually via email) after the interview. I'm notoriously bad at writing thank you notes, and I think it does hurt me. I never know what to say, and I think that may make me come off as unfriendly or ungrateful. This is something I want to improve on, and while I wouldn't say that not writing a thank you email will stop you from getting the job, I think it is the polite thing to do and would encourage anyone who is comfortable with the idea to do it post-interview.
Everyone prepares for interviews differently, and it's okay if your interview prep looks nothing like mine. I know there is room for improvement in my process, and I hope that writing out my process like this helps give me ideas for how to improve my interview prep in the future.