Becoming a Machine Learning Engineer is by no means an easy task (a positive note to start the article). But it is completely doable if you have the patience and the discipline. The bad news is that you have to study a lot to land a job in a tech company. The good news is that there is a shortage of skilled MachineLearning Engineers, even in big tech, and the salaries are crazy. Seriously crazy. Is it worth it? For me it totally is. But that’s up to you.
So how do I start?
Before even thinking of applying, you have to know the basics. And by basics, I don’t mean Convolutional Neural Networks. Not even K- Means. I mean basic computer science principles. Algorithms and Data Structures, Programming languages (preferably Python), Debugging, Testing, Version control, Cloud computing. The list goes on and on.
But remember. A Machine Learning Engineer is first and foremost a Software Engineer. He is not a Data Scientist or a Data Analyst. To learn everything, I personally would choose this amazing course by Coursera on Python programming and this by Udacity on Algorithms and Data Structures
Not as important as the first step, but still useful. You should familiarize yourself with basic algorithms such as Regression, Decisions trees, K Means and get your hands dirty with data preprocessing and modeling. Again, don’t go too fancy. Companies, in general, don’t look for people who can prove mathematically back-propagation. They look for developers to code and build their machine learning pipelines. And in those pipelines machine learning takes about only 5% of the work. Again these courses byCoursera and Udacity are yourfriends.
For a more comprehensive list of resources, you can also check out my blog , where I publish Machine Learning and Artificial Intelligence articles AI Summer.
Assuming that you know the basics ( and you should), the next important step is to get experience. I recommend to start working on some personal projects you find interesting (maybe you can predict bitcoin price with neural networks or run quicksort in a massive dataset, I don’t know), participate in one or two Kaggle competitions and maybe land a few small freelancing gigs from clients.
The important thing is to build the whole thing from scratch. From the database and server to the deployed API in production. It is the only way to really comprehend the whole stack and get in touch with all components of the pipeline. Trust me. No course or lesson can match this. It will immediately give you a whole new perspective.
Now that you’re feeling confident and you have worked on some real-worldprojects, it’s time to build your resume. However, your resume is not just apdf. It is a personal website showcasing all your projects and courses. It is aLinkedIn account (extremely important) with all the up to date information aboutyou. It is a GitHub profile containing all the code you wrote over the pastmonths. And maybe is a blog showcasing what you have learned so far. Preferablyis all the above.
That’s how you will grab the attention of the recruiter from your dream company.That’s what the hiring manager will discover when he googles your name.
Now to the fun (not so much) part. You have to prepare for coding interviews.Don’t assume that you know what you’re doing. Even if you have a master’s from MIT. Let me say it one more time. You have to prepare.
If you feel confident in your Algorithms and Data Structures skills, here what you’ll need to do. Grab a copy of Cracking the coding interview (the bible for software interviews) and open a Leetcode account. Start practicing on easy problems.Try to come up with a brute force solution, then try to optimize it. When you are stuck, think about what other data structures you can use. Or check the book for similar problems. But don’t give up.
Then do another one. And another one. As you’re solving more and more, you start to identify the patterns and you can proceed to medium or even hard problems.How many problems you should solve? The more the better. Perhaps 150 if you want to work in a FAANG. Otherwise about 50.
Also, my advice is to try and simulate the actual interview experience as soon as possible when you practice. Set up a timer. Explain your thoughts out loud.
One integral part of interviews is system design rounds, where you describe how you would build a popular architecture such as Instagram or Netflix. It evaluates all your technical abilities, your background and your general knowledge. Hence, it’s not something you can learn overnight.
Although you can prepare. You can start by dive into the system design of the 10 most popular apps and then try to design a different one. And repeat the process until you feel confident.
You should also emphasize in Machine Learning architecture such as recommendation systems or search autocompletion. In general, this is the round where the company will test your ML background. But keep in mind that it’s avery high-level talk.
The final step is to start applying. You can, of course, submit applications onthe company’s online platform. But don’t expect any results. To expedite the process, I would focus on 3 things:
Find recruiters on LinkedIn, send them a friend request expressing your interest in a position and let your CV / GitHub account / Website do all the work for you. But do it subtly. Express your interest in the company, ask for an informational call etc.
Ask a friend who works in a tech company for a referral (50% of people hired are via referrals).
Attend job fairs and networking events
That was it? It’s that easy? Lol. Arguably it’s a long process and it takes courage and determination to continue after rejections. But don’t discourage yourself. There is not a single person who hasn’t been rejected. You should also know that unfortunately, it’s also a matter of timing and luck.
But eventually, all your efforts are going to pay off. And that’s not a matter of timing or luck. It’s a certainty.