"Coding-Free Interview Tips"
Interviews are a tricky thing to administer well. I still remember overflowing with nervous energy when I interviewed with Yelp and Google a couple years ago, wondering whether I'd make a complete fool of myself when it came time for the inevitable programming challenge. I stumbled through the various questions, handling some easily and getting completely flustered by others, and overall was relieved when the ordeal was over. Perhaps most importantly, the whole time I had basically zero clue what I was doing or how I should be presenting myself -- I was simply going with the flow and testing out whatever anecdotal advice I picked up along the way.
Having spent a year or so on the other side of the table, there are several easy ways to improve how you come across in an interview -- and none of them involve cramming!
The main thing I've realized is there are several traits of excellent interviewees that have nothing to do with how good a candidate they were and everything to do with how well they conveyed that information to me. I dislike the typical interview advice because it emphasizes practice and repetition as a tool to make you look better. Instead, I want this article to supply advice which will let you confidently showcase your best features…because one of the big challenges of interviewing is deciphering when you are sitting in front of an awesome candidate who just isn't making that fact obvious.
Trick #1 -- Know your most impressive accomplishments
A frequent pattern with candidates is the kitchen sink approach to prior experience. You'll see someone's GPA from college, next to four class projects from school, next to their extracurriculars in high school -- sometimes spilling over to multiple pages.
The simple fact is I as your interviewer have precious little time to determine whether you are a student who did a bunch of standard course projects because you were forced to or a crazy hacker who has built his own custom OS. The more individual things you place on your resume, the more likely I am to simply talk to you about the most recent thing one which seems relevant. We will only have time to probably discuss a single project in depth, so it's in your interest to have your best work (and only your best work) on display.
In a perfect world, your resume comes to me with only a few, highly impressive accomplishments. I'll often ask candidates to talk me through whichever project they think best sells their skills, and I want this to be an easy conversation. What sort of conversation? Well that leads into the next section…
Trick #2 -- Sell your passion
If you have been coding for much time at all, you probably have stories. I'm talking about the intricate bugs that took hours of prying before you deciphered them. Or that time you learned about genetic algorithms and spent a weekend playing with them and researching various approaches. Or maybe just a story from your previous job, where you were faced with a hard technical problem and found an innovative solution.
What do these all have in common? They show me you care -- a lot. That if we hire you, and throw a difficult unsolved problem at you, you are going to dismantle it and come out with a solution. I want you to have something that gets you up in the morning, that makes you want to pop open a terminal and get to it. I've seen candidates get excited about all sorts of areas and honestly it does not really matter to me what you care about, as long as I can see that fire in your eyes.
I'm happy to discuss anything from machine learning, to testing methodology, to your favorite language…what I'm looking for is your ability to carry on an intelligent conversation about a subject you care about.
Trick #3 -- Know why you're interested
If there's one question I'm sure that basically every company in the Bay Area asks, it's "why do you want to come work for $MY_COMPANY?" And for most places that aren't gigantic MegaCorps, the candidate's answer is an important part of the hiring process.
So have an answer ready! Do your homework and get a sense of the broad areas you could fill if you joined us. Are you interested in backend or fronted work? Do you want to be writing something that real users interact with or would you rather be optimizing some widget deep in the stack? Why are we a better fit than the python shop down the road?
My goal with these questions is to get an idea of how much a candidate cares, and whether they'll be able/willing/interested in taking charge of their area. New grads that just want a job are plenty relatable (jobs are good!), but will always look less dedicated than someone who really cares about the application.
And there theoretically are those coders out there who are such consummate professionals that they really don't care where they're working and this whole discussion is pointless. But I haven't met one yet. Most of the best coders I know are doing it because they have a very clear interest in the product and challenges that define us as a company. Have a good sense of where you fit in wherever you're interviewing, and make sure you explain your interest
It's all about your ability
In the end, interviews aren't complicated. The basic idea is to sit down with a candidate and assess whether they will excel at their job. For me, that involves looking for a complementary mixture of independence, ability to understand code, a passion for learning more and improving, and an honest interest in the job I'm offering. Most candidates will be stronger in some of these areas than others, and that's expected. But I can confidently tell you that the most important thing you can do in an interview is come into it with a game plan, and know your personal strengths and how to show them off. Your interviewer is not a mind reader, and you will see great returns from showing interest and wisely selling your skills.