Witty Writeups

10 Things I Learned Doing (Almost) 20 Interviews

Spotlights and Solutions

This semester I spent a long time interviewing for a full time job. Apparently CS interview season for new grads is in the fall. Early fall. I started interviewing seriously mid September and accepted my offer from Facebook late November. Here’s a few things, 10 specifically, I learned after 18 interviews (counting full day rounds as 1) and 30+ hours of interviewing.

1) Regarding my time line, everyone’s different. I had friends who accepted a job even before school started, and who started interviewing in August. August!! Woah!!. I have friends who are still interviewing. And everywhere in between. It’s okay either way. But I will say that it’s good to be done. I don’t really like interviewing.

2) What you learn in class is not exactly what you will be asked. Obviously. But this doesn’t mean that class wasn’t important or that you can get by just reading books like “Cracking the Coding Interview” and skate by. Class is still important, it’s just that by the time you are a senior, people assume you know the fundamentals and ask questions that get at more.

Specifically, my questions were about solving algorithms based problems and considering how different data structures would perform under different circumstances.

3) Related to point number 1. Actually, you are going to get a whole range of questions. I personally use a metric that harder interview questions means a more promising company. I have been asked to define some really obscure C++ keyword and I’ve been asked to reverse a linked list or even merge two sorted linked lists. I don’t think there is value in any of those questions. If you are a junior or without many options, then maybe you don’t have a choice. But I was lucky enough (and I interviewed enough) to have a choice and I really dislike those questions. I chose not to continue interviewing with some companies that asked questions like that.

The first question - define some C++ keyword is the worst question. Literally no chance to demonstrate any skills I’ve learned. It’s a test to see if I have memorized C++ keywords. I know that companies who have their HR people (or otherwise non technical employees) do first rounds can’t ask more questions than one with one correct answer. The second type of question is slightly better - there are several ways to structure the code for merging a linked lists and then you can discuss the benefits and drawbacks of different methods. Still not that interesting because you are just choosing from several correct answers. Nothing new that you’re coming up with. But at least it’s not just straight recall.

I like questions that are hard for me (not just reciting the solution that’s canonical or known to be best) and help demonstrate the problem solving skills I have learned slaving away at algorithms homework sets. Those are the interesting questions and the types of hints and nudges you get from the interviewer can be a pretty good metric for what kind of engineer they are - will they provide guidance for you when you are a new employee just trying to figure some things out. Not just will, but how will they do it. Maybe this is reading too much into it, but they are in a position of power over you as an interview and later as a senior employee. Are they nice people? That matters if you’re taking a 9-5, M-F job.

4) Ask your friends for help! Especially if there are upperclass people in your department who you are friends with. Everyone starts out kind of lost and even things that may seem obvious to you after interviewing can be totally over the head of a noob.

I am so grateful for the many older students who referred me, forwarded my resume, helped me prepared for interviews, looked over my resume, etc. Also, the friends who gave me emotional support through the rejections and crappy interviews. There will be crappy interviews and shitty experiences. Friends definitely help with that. My best friend left me a sweet note on my return from Grace Hopper aka 7 interviews in 2 days. Return the favor after you’ve gotten a job. I’ve reviewed some resumes and offered pointers. And taught a 10 minute session on hash tables. And sat with friends debriefing good and bad interviews.

5) Best way to actually practice is to simulate it. Yes, this is hard. Yes, I know that juggling 5-6 classes (especially a capstone class that averages 15 hours of work/week) , extracurriculars and all the other busy senior stuff makes it really hard to squeeze time in. I solve this problem by just brute force interviewing a lot until it wasn’t scary for me anymore. I used to get really sweaty and anxious during interviews. Even if the question was about hash tables or something else that I knew very well. Fast forward a month, I’m wearing plaid shirts and jeans to my Facebook interview (I was going for the Seattle vibe). Your mileage may vary for brute forcing it.

6) If you’re scared or nervous because you are worried about messing up, which nobody likes to do, here’s the best piece of advice I’ve ever read on the topic. Think of the interview like a conversation with a fellow engineer. Pretend he or she is a friend that called you with a technical question. Obviously, you have to do more of the leg work, but it helps me mentally to frame it as less of a test and more of a conversation. This works better if the question is actually interesting, but I digress. Put them on your level.

7) It’s okay to turn down interview offers even if you aren’t done yet. It helps if you have an offer from a company you like, but even if you have offers from companies that aren’t your first choice, or no offers, don’t interview for the sake of it. Of course, at first, I did as part of my brute force approach. But after a while, there’s a line between good practice, an interesting opportunity and burning yourself out. Remember to be polite and say thank you. Don’t burn those bridges. I had to turn down some really cool opportunities just because I was already overbooked with interviews and classes. But not now doesn’t have to be not never.

8) Behavioral questions suck. These are questions like “describe your best/worst group experience” and “how well do you work with other people?.” I know they are sussing out whether you are a good team player. But these questions always feel forced and my answers always feel forced. Like I need to tell a true story, and demonstrate how I took initiative or was a leader. Real life is not always so insightful.

9) It’s okay to have things you are picky about. Especially if this is a full time job that you are looking for. For example, location might not matter as much for the summer but I know I am not in a place where I want to live full time in the middle of the Bay Area right now. Way too tech saturated. Some other things I’m picky about: what the company actually does and whether I am passionate about the product (even though most technical work should be similar), the number of females in senior roles, the company culture.

An aside on the gender thing. It’s not just how many female engineers they have. It’s also how many women senior engineers or women in leadership. This goes for other minorities too. A company’s ability to recruit and sign on women is important. But it’s also important to see if they like it enough to stay and if the company helps them thrive. You might not get much choice with the matter but this is a distinction I found interesting to ask about.

Also, company culture is really vague. A specific example of this might be might be how the company treats its codebase. Obviously, they are closed to outside. But how about internally? Are things only on a need to know basis or is it okay to have more knowledge of what’s going on. I think I like the latter. I’m getting the latter.

10) Negotiation is a weird thing. I was a told a lot of things about how I should negotiate and get multiple offers to negotiate with. I saw friends do it last year. This might be true and I still agree that there’s no harm in trying. However, personally, I was given pretty comparable offers (I had 3), and there wasn’t much time to negotiate (especially because it was over Thanksgiving). I am happy though with what I ended up with, and I have heard friends who have gotten similar offers from the same companies. I think it’s important to check that you are getting offers on par with your school peers (unless they were interns at a company and going back) and to market rate. I think it is important to double check that you are not getting less for no good reason. I don’t think, based on my experience that Big Company A would give me less because I’m a girl, but it still makes me feel better to verify with my male friends. Also, remember cost of living. 100k in San Fransisco is very different from 100k in Madison, Wisconsin.

5 Jan 2016