3 Ways to Crush Your Technical Interview
Despite advances made in recent years, the interview process is still imperfect. In a talk at Etsy, Engineering Manager Moishe Lettvin (who has conducted over 250 interviews during his time at Google) claimed the process can be “noisy, inaccurate, and arbitrary.”
While inconsistencies remain, you can still walk into (or dial in for) a technical interview brimming with confidence if you take time to understand what your interviewer is looking for. Generally speaking, this boils down to two things:
- Readable, Maintainable, and Extensible Code: Can you write code cleanly and correctly? If not, then it’ll be hard to get you up to speed with the rest of the team.
- Cultural Fit: Are you someone we see positively contributing to not just product, but also to the company culture?
From these two points, you can reverse engineer a plan of attack when preparing for interviews. How can you demonstrate that not only can you write beautiful, functioning code, but that you’ll also be a great fit for the team? Here are three ways you can rock your technical interview:
Participate in coding contests
The great thing with technical interviews is that getting good at them is a skill that can be practiced. And according to a post by Facebook engineer Andrew Rothbart, the best way to practice this skill is through coding contests:
“You’ll learn how to critically analyze your work. Because you don’t get credit for solving a problem until the code you write can generate the correct results for a large input set (and you don’t know what that input set looks like), you’re forced to think about things such as time complexity, memory usage, and nasty corner cases.”
This means that you’ll get better at decomposing problems and writing bug-free code, en route to becoming a faster and more confident programmer. Rothbart wrote that, from his experience, “it turns out that many technical interview questions are interchangeable with the types of questions that show up in programming contests.”
So the coding challenges and contests on HackerRank’s platform are a great place to start, especially since many of the companies you’ll be interviewing with are the ones hosting these contests.
Justify your choices
As a software developer, you are probably going to be working on a team of people with a diverse array of experiences and assumptions about coding, logic, and design. So as you go through your interview, it’s thoroughly important that you communicate to your interviewer the “Why” behind your decisions. Why did you take that shortcut? Why did you write it this way?
Getting used to explaining your thought process out loud helps in two ways. First, it forces you to get a grip on complexity by breaking things down to simpler component parts. If you can’t clearly explain your reasoning for each decision you make, you might not actually understand the problem at hand. It’s very evident when a candidate relies on jargon as a crutch. Second, justifying your choices helps the interviewer see which types of assumptions you are testing and how you are creatively problem-solving.
Read blogs for company-specific advice
The developer community is amazing at sharing its knowledge (see: Medium, Quora, simple Google search). So why not tap into this deep knowledge? No generic listicle is going to be comprehensive enough to cover every case, but there are thousands of engineers out there who want others to learn from their specific experiences.
If interviewing with Airbnb, you should know that they value inventive candidates with an eye for design. A Foursquare interview might have you implement a Foursquare leaderboard in a scripting language. Dropbox especially cares about clean code and side projects. Google even hosted a Hangout where technical recruiters shared interview tips.
The key to success at an interview is practice and preparation. So we recommend you get started on coding challenges on Hacker Rank, think out loud as you code, and read up on how your favorite companies interview candidates.