Congratulations! You’ve scored an interview with your dream tech company. Your interviewer asks you the question: “when will you be available to interview?” You know that whiteboard coding interviews are difficult. They involve lots of tricky algorithms and data structures questions. What should you tell your recruiter? How long does it really take to prepare for a technical interview?
As many of my clients are preparing for phone screen or onsite interviews with companies like Google, Amazon, and Facebook, I’m often asked how long it takes to study well for the technical coding interviews. It can take between two weeks for particularly strong candidates to two months or more inexperienced candidates who aren’t as familiar with computer science principles. Of course, the answer depends on a person’s background and education.
But how do you know what’s right for you? There are four factors you should consider:
1) Years out of school
A candidate who has just graduated with their degree in computer science is likely better prepared for technical coding interviews than someone who’s been out of school for five years. Unless you’ve been working in a job that requires familiarity with algorithms, data structures, and Big-O analysis, you are likely to find it harder to recall that knowledge as time moves on. Many industry jobs don’t require application of CS theory. They instead rely on frameworks and tools that abstract away complexity.
If you don’t have any CS degree, then studying will be quite a bit more difficult and time consuming. That’s because you’ll have to study these concepts for the very first time. It’s not impossible to pass the interview in this case. I’ve worked with more than a few people at Google who either don’t have a CS degree or have no degree at all. But you will need to be diligent in your preparation.
2) Relevant experience
Top tech companies build planet-scale distributed systems that rely on complex infrastructure and tooling to ensure high availability. Engineering these systems requires special expertise and techniques not found in places where systems need to scale to only a few thousand users or devices. It’s for this reason that a working knowledge of algorithm design and analysis is important for software engineers at top companies. Not only that, but engineers must know the patterns for building reliable, robust, and secure systems at scale.
If you don’t have much experience engineering large-scale distributed systems, you’ll have to spend time learning the principles behind them. You can find much about how companies build their platforms to support millions of users. You can also play around with the tools these companies use such as MapReduce, NoSQL database systems, and cloud tools such as those offered by Amazon AWS or Google Cloud.
3) Prior interviewing experience
The style of interviewing employed by top tech companies is so unique, that many candidates don’t pass on their first attempt. I figure that as many as a quarter to one-third of candidates who do get offers make it on their second or third attempt. At most other companies, you’d only get one shot before your file disappears forever.
I learned a great deal from failing technical phone screen interviews. I had never done an interview focused on algorithms and data structures. It was an eye opening experience that not only taught me about how I needed to improve, but also helped me to visualize exactly what I needed to do to succeed in the interview room. (Wanna watch me interview? Check me out here).
This is why mock interviews are essential for tech interview preparation. This is especially true if you’ve never interviewed before. Mock interviews make you more comfortable with the real thing. They help you to know what to expect, what to study, and how to overcome your nerves.
4) Time commitment
Even if you are strong in computer science and have relevant experience, you’ll need time to get into shape. I’d suggest studying for around 2 or 3 hours a day of quality time. Quality time means having a good plan for how you’re going to spend your study time.
When I passed the Google interview, I studied for three hours a day until I was in “interview shape.” Out of school for several years and having 12 years of industry experience, I knew it would take time to prepare. I needed to practice analyzing algorithmic time complexity, dynamic programming, and graph theory. However, the work paid off. I sailed through six technical interviews to secure an offer.