Interviews are designed to weed out candidates that aren’t qualified to do a job. However, they’re not perfect and there are aspects of interviews that are not representative of the real-life job. Some people take a cynical approach and use this fact as an excuse when they get rejected. They say things like, “Why would they ask me that? Anyone could just look that up!” Although that may be true, ranting doesn’t get you a job. For a company it makes more sense to reject good people than to hire a bad one. As Data Scientists we should know all about the tradeoffs of false positive vs true positive rates! In this article I’ll give you some tips and resources for improving your interviewing skills so that you’re less likely to get rejected for a bad reason.
- Have the stories prepared and rehearsed. You should expect questions that are meant to understand your attitude/character and have already thought out several examples of your past that demonstrate desirable traits. For instance, Amazon has a list of Leadership Principles that they interview against. Find something like this and spend a couple hours thinking through all the great stuff you’ve done and write out concise answers to these questions. The skill is being able to tell a short anecdote that has just enough details to set up the narrative and establish you as being the person doing the good thing they asked about. They’ll ask clarifying questions if they want to, but avoid rambling and giving too much information. Being a bore will not help!
- Reduce the surprise. The hardest part about interviewing is having to think on your feet to get answers while people are looking at you and the clock is ticking. Even questions you would normally think are easy seem hard in this environment. Minimize this surprise as much as possible by learning what to expect in each interview and preparing for all the things you know are coming. Glassdoor has interview reviews from people that have been through it, so don’t take the interview until you’ve done some research and at least read what’s out there. Always ask the recruiter what you can expect and their advice for preparing.
- Practice solving problems, out loud and by writing the solution on paper. If you’re a Data Scientist, SQL questions are very common. Find example questions from places like JitBits or ProgrammerInterview and actually work through them. When you make mistakes, write down what you missed so you know to spend more time on that topic.
- Establish and practice your problem solving framework. After doing many technical interviews I have learned that the same framework can be applied to most questions and in doing so it gives me clarity of thought and good momentum. I’ll dedicate a whole post to articulating the framework I use, but you’ll develop your own by working through many of these problems.
- Know the basics. Resources like Brilliant.org’s combinatorics pages will give you a refresher on core principles as well as examples to test yourself. You should expect probability and statistics questions, so don’t allow yourself to waste time trying to remember Bayes’ Theorem when you can prepare for it.
- Know the common technical concepts. If you’re in Data Science, you need to understand bias/variance. You need to know ways of detecting and handling an overfit model. You need to know strategies for dealing with classification problems when the classes are highly imbalanced. You need to know the pros and cons of the various model structures. You need to also understand the basics of how the algorithms work; what is random about random forests and what is meant by gradient boosting? Treat the technical interview as an oral, comprehensive final exam. Learn the core principles of the major concepts.
- Know the company. Spend time thinking about the products of the company, how your job impacts the core of the business, and a few ideas of how you would do your job to solve an important problem. I remember being interviewed for a Pricing Analytics job and the interviewer asking me: How would you determine a price for this product? I didn’t have a good answer and that’s unacceptable. You should spend time thinking deeply about the problems the role would likely work on and be able to talk about it with some nuance. I should have spent time thinking about how pricing is normally set in that domain, thought through a few approaches, and researched their engineering blog to try to understand how they currently do it. There’s a tremendous amount of information on the web that will help, you just need to be proactive in finding and absorbing it.
- Recognize that being technically qualified is only part of it. People will also give their feedback based on if they liked you or not. Project a good mood, be flattering to them and their company, demonstrate your excitement with the role and your humility in the opportunity. Someone is more likely to forgive a small technical deficiency of a person they like than rude behavior of a technically brilliant person. This is also true of your communications with the recruiter. Be overly polite, send follow up thank you’s and express your gratitude at every opportunity (which should be genuine!).
- Recognize that interviews are meant to be hard and it's ok to struggle. The most important part is to not give up even when it feels like you’re trapped and have no idea how to proceed. Do not allow yourself to get outwardly frustrated or dismissive. In those moments, you should say out loud what you’re struggling with and the problem you’ve discovered. If your solution isn’t working, explain why and try to figure out what part of it is leading to the failure. Often times they will give a gentle hint. The important part is to stay curious and talk it out. I’ve had several experiences where I left feeling embarrassed and sure that I bombed the interview only to hear feedback later that they thought I did well and wanted me to proceed to the next round. You just never know what they’re thinking, so stay positive!
- Last, truly internalize the idea that a job rejection is not a judgment on your talent. The odds are that you will be rejected ... several times. But that’s OK, because this is a big world and we know its a numbers game. Not everyone is a great fit for every job and team, even if they are technically excellent. Sometimes you get rejected because it wasn’t a great fit, other times because you didn’t perform well in an interview (even though you’d be great for the job) and other times for reasons you’ll never understand. When you are rejected, allow yourself time to absorb any negative emotions and then reach out to both thank them and get feedback on how you could improve.
If you want more advice or resources, here is a nice read on lessons learned from a coding bootcamp graduate. Also consider buying a book that’s meant to help you prepare, like the very popular and helpful Cracking the Coding Interview. If you have any questions or other tips, please leave them in the comments!
- How to Become a Data Scientist – Part 1
- How to Become a Data Scientist – Part 2
- The Secret to a Perfect Data Science Interview