tl;dr: My experience preparing for interviewing for, and accepting an ML job, along with some tips and tricks.
"Idle hands are the devil's playthings"
A few months, I found myself in a tough place. I'd been teaching data machine learning for about a year, and really enjoyed helping others grow their machine learning skill set. However, I sorely missed building, and building data products in particular.
It was with this mindset that I decided to dust-off my interviewing skills, and see what the world had to offer.
Quite a few folks have asked me to how to prepare for data science or machine learning interviews, so I'd like to take a minute to dive into the milestones I set for myself
I'll be honest, there's more knowledge out there about Bayesian statistics, deep learning, data pipelines, and a million other things than I'll ever know. It took me a long time to come to terms with that, but once I did, I've found a few areas to focus on while brushing up for interviews:
- ML algorithms: Introduction to Statistical Learning (free PDF) is a great reference, and can be paired with its big brother [Elements of Statistical Learning] for anything than needs a more thorough treatment
- SQL: This is one of those 'use it or lose it' topics, and I've found HackerRank's SQL quizzes a great way to brush up on syntax and get the gears turning again
- Deep Learning: Though this is a rapidly changing field, The Deep Learning Book provides a surprisingly lasting foundation, and is a great reference
- Cracking the coding interview: A must for getting used to talking to people about code, and getting comfortable with software engineering interview questions
Because I strongly support democratizing data science, I've selecting all of the resources above to be free to use / read. You shouldn't have to pay anything to learn the skills you need, though you can always pay a bit more for specialized help to speed up the process.
It's far to easy to be discouraged when applying for jobs, particularly if you're new to the industry. Referrals will almost always result in a phone screen, but I've heard anecdotally that getting an email back to 10% of cold applications is about standard. With this in mind, I've found applying to jobs is about volume, and about thinking outside of the box.
Let's have a look at my pipeline, from accepting a job to top of funnel.
- Accepts: I planned on taking one job. Consulting is fun, but it's hard to build something substantial.
- Offers: I like to have at least 2 offers, to make sure that pay is competitive, always have a backup plan, and have a choice in the company that I'll invest my next few years in.
- Interviews: I've heard that getting an offer to 1/4 of your interviews is about right. Any more offers, and you're aiming too low. Any higher, and you might need to practice interviewing more. To get 2 offers, I aimed to have about 10 full-day on-site interviews.
Applications: This one is a bit tricky. If you're applying to small companies and know them already, you could put in 10 applications and get 10 on-sites. If you're cold applying to larger companies, you might have to apply to 100-150 roles to land those 10 on-sites.
150 job applications. That's a lot. But it's important to be very sure that you're investing your time in the right company, and part of that journey is talking to a lot of companies.
Accepting an offer
Now for the exciting part, deciding what you're moving to. This part of the funnel is particularly tricky: Given a few offers, which one should you take? In my own work, I've focused on a few areas:
- Mentorship: Who will be your manager? How often are you likely to change managers? What structures are in place to make sure that you can continue growing and developing in your role?
- Growth: Where would you like to be in 2 years, and what support will you have to get there? If you'd like to be an individual contributor, how will you find new ways to challenge yourself? If you'd like to manage, what sorts of teams and products will you get to lead?
- Industry: This one is a bit tough, but if your passionate about what you do, you will do it well.
- Lifestyle: What percent of the time are you expected to travel? Is there pager duty? What time do folks come in and leave? About how much vacation time did folks on the team take last year?
Finally, there are a few helpful bits of advice that I've received that don't quite fit anywhere else
- Find roles off the beaten path. Everybody and their brother will apply to the Facebooks and Googles of the world. In particular, B2C companies benefit from massive audiences of potential candidates, meaning they can afford to take the creme of the crop, and to make mistakes. But the more interesting roles tend to be and smaller companies, or B2B companies you may have never heard of before.
- Work your network. Some of the most amazing roles I've had, and companies I've advised for, have come from idle elevator chit-chat, and post-conference drinks.
- Invest in every interview. Simple things like memorizing a few of the company's values, or looking up interviewers ahead of time will put you ahead of 90% of candidates, and make it clear that you care.
- Don't take it personally. All it takes is one person being grumpy from a bad lunch, or that someone cut them off that morning to derail your application. You have control over a lot of your application, but some of it is up to the wind.
- Don't give up. Some of the smartest and most capable people I've known have spent 1 year+ looking for the right match. Your next job is out there.
Now that you've got an idea of what you're moving towards, the fun part begins. Go out to meet folks, and wow them!
I'm very happy to say that I've recently joined Convoy, where I'm working on transporting the world with endless capacity and zero waste. Feel free to reach out, if you'd like to join me.