10 Lessons I Learned Interviewing For Machine Learning Jobs
1. Finding a new job is a full-time job
When I first started looking for new opportunities, I approached the effort much too casually.
I had worked at the same company for over 5 years, and I figured that I should go through the motions of interviewing. However, I already had a job that I liked so I wasn’t hyper motivated. Unsurprisingly, I had very little success with this attitude.
Starting a few months ago, I completely changed my approach: I dedicated at least 15–20 hours a week to studying for technical interviews.
Now I’m sure there are people out there who can just walk into a technical interview cold turkey and crush it. However, if you are not one of those blessed creatures, as I’m not, then dedicating 15–20 hours a week over two months is probably going to put you in the best position to succeed (more on that later).
Finding the extra time while continuing to perform well at your full-time job is no picnic, but it’s necessary to set yourself up for success.
2. Lean into your network
Unless your resume has Harvard or one of the FAANG companies on it, you might as well play the lotto with your online resume submission.
ML-focused roles are incredibly competitive and most companies won’t hesitate to find any excuse to throw your resume in the bin.
DON’T LET THEM!
The best way to get a company to take you seriously is find someone who works for that company and have that person refer you. Of the time you spend preparing, I would dedicate at least 3–4 hours a week to just reaching out to people and asking to learn more about the company. Spend some money on LinkedIn Premium so that you can cold email folks. A surprising 50 percent of the people I cold emailed responded to me.
My success rate for getting interviews with internal referrals was about 90 percent while my success rate with resume submissions was about 5 percent.
Any amount of time spent trying to get an internal referral is well worth it.
3. Practice, Practice, Practice
If you think standardized tests are annoying… imagine having to complete one with the examiner looking over your shoulder while you explain out loud your thought process under tremendous time pressure.
For machine learning interviews, you have to do exactly that for algorithms/coding, system design, and statistics/ML. You generally need to pass all three of these interviews to get an offer.
Algorithms/Coding Interviews
You know the drill. LeetCode, Cracking the Coding Interview, etc.. I wish there was an easier way, but unfortunately, I think you have to brute force this one.
See what I did there :)
System Design Interviews
Grokking the System Design Interview is 100 percent the way to go.
Statistics/Machine Learning Interviews
Statistics is honestly very tough to prepare for. I think reviewing coursework is not a bad place to start. Machine learning is easier because there is a set basket of questions to choose from and a limited popular algorithm set.
A few quick suggestions:
- Make sure you understand regression from first principles (i.e. maximum likelihood estimation).
- Different statistical tests (but primarily t-tests)
- Take time to understand a real-world implementation of a recommendation algorithm (e.g. build a news feed, suggested items, top 10 video recommendations on Youtube, etc)
In addition, make sure to practice everything you have reviewed in a real-world setting.
Interviewing.io was a fantastic resource for me throughout my interview process. Don’t be afraid to spend the money! A measly 2 percent raise in your base salary at your next gig will easily justify any expenditure preparing for it.
4. Deflate your ego for the recruitment process
Be prepared for a lot of rejections and don’t take them personally. My initial set of rejections were very discouraging, and this killed my confidence going into interviews afterwards.
Build up as much confidence as possible but also try and embrace the fact that you will get rejected a lot.
5. Take-home assignments are super annoying but…
Take-home interview assignments are a double-edged sword IMO.
One the one hand, they better reflect your on-job performance. On the other hand, they are incredibly time consuming and mostly throw-away work. Plus, they usually take twice as long as the recruiter says they will, and that is valuable time which you could spend focusing on other aspects of the interviewing process with more bang for your buck.
My takeaway: only complete take-home assignments for companies you are seriously considering joining.
6. Inflate your ego for the negotiation
When the time finally comes (I promise it will come!) and a company wants to hire you, it may be tempting to seal the deal quickly, especially if you’ve had a rough time of it prior to getting the offer. However, YOU are now in the driver seat and should act accordingly.
Don’t accept the first offer!
Think of the initial offer as an opening bid. There is no incentive for a company to give you their max offer upfront. They want to give you the lowest amount that you will accept.
7. Anything is possible once a company signals that they want to hire you
Recruiters repeatedly told me that something was “impossible” or “we don’t do that here,” only to have the company offer me that same thing a few days later. Competing offers are so helpful that I would encourage you to optimize for them by parallelizing your interview process with different companies.
Keep in mind whom at the company has the real power to negotiate your package. Hint: it’s not HR.
Certainly the hiring manager is important and can influence the strength of your offer, but that person’s boss has even more discretion. Try to have a follow-up discussion with your soon-to-be skip level prior to signing. Be sure to bring up any sticking points or issues that you might have with the offer in that meeting because they generally will have the power to at least meet you halfway.
8. Celebrate your offer!
I cannot emphasize this point enough. Maybe it’s obvious for most folks out there, but I think I felt so much stress during the process itself that I couldn’t savor the moment.
I felt way more relieved than celebratory. Hard work that pays off should be celebrated, and your future stress isn’t going anywhere.
9. Take some time off - you’ve earned it
You will be able to negotiate some down time between your start date and when you quit your job. Tell your soon-to-be employer that you want some time to recharge your batteries and both sides will better off for it.
For those of us in the rat race, we have so little time to just focus on ourselves without work hanging over our heads. It is precious.
Travel or try a new hobby. I went to Mexico for a few weeks and had an amazing time solo traveling. Made new friends and lasting memories. I think it also gave me a more mature, intrinsic motivation heading into my new role.
10. Final thoughts: inequity in the interview process
As I went through this process, I couldn’t help but be reminded of studying for the SATs in high school.
Like preparing for standardized tests in order to get into a better college. This interview process contains all the same problematic facets: insider tricks and specialized knowledge/skill has outsized returns.
I have the privilege of being friends with many people who work at these top tech companies and who are intimately familiar with the interview process as well as what to expect during it.
I wrote this post because it’s hard to imagine succeeding without those resources. Companies need to take into account candidates whose backgrounds/experiences might not have afforded them as much access as someone like myself.
Furthermore, I do not believe this process to be indicative of on-job performance anyway.
I didn’t become a dramatically better problem solver over the 3 months that I spent cramming LeetCode questions.
I just became much better at solving LeetCode questions under time pressure.
And yet, companies seemingly weren’t interested in my problem solving capabilities prior to my studying LeetCode two hours a day. Go figure!
In any case, where ever you may be in the process, don’t let the man get you down, and I wish you all the best!