It’s no secret that machine learning ("ML") and artificial intelligence ("AI") are making their way into almost every industry.
Chatbots, writing tools, self-driving cars... the list is endless, while the percentage of job posts on Hacker News with the term “AI” has been rising steadily for the past five years:
But despite this rise in jobs, it's still hard to get hired!
Why? Well, there’s a funny concept in the tech world that getting a job and being good at the job are two completely separate skills...
It's not enough to simply have the skills for the role. You have to be able to do well in the interview or even attract employers in other ways.
In light of this, there's really two steps to getting an ML job:
The first lets you do the job but it's the second that helps you get hired.
Now, there’s no shortage of resources on learning machine learning and AI skills including my own 3 beginner-friendly courses:
Likewise, there's some great resources out there on acing the interview and preparing for FAANG interviews.
The acquiring skills and learning part is simple enough. It's takes time and dedication but it's "simple"... Take a course, follow along, build the projects, etc.
But how do you take care of step two? How can you market your skills and get that lucrative machine learning job?
Well I'm going to give you 5 steps to take and I'm willing to bet that they aren't the same generic steps most other posts tell you.
The first step (that most people don't do) is to share as you learn!
One of my favorite articles is Learn In Public.
It applies to any kind of learning, including machine learning, but the principle is simply to learn in public. You learn and share what you're doing, and get on peoples radar.
Fun fact?
This is exactly how I got my first job in machine learning.
I created my own AI Masters Degree and posted online about what I was learning.
Most of the time, I had no idea what I was talking about, but pretty soon people started pointing out where I was wrong and where I could improve.
Even more awesome, they started offering me resources to get better, and so I went from not knowing how to code and driving Uber on the weekends to working as a machine learning engineer in nine months.
Learning in public really is a great way to make jobs come to you.
It seems simple but becoming known as an 'expert' on something is often just a repeated process of doing the thing and sharing what you find. And yes, you can apply this formula to machine learning.
A little secret about machine learning is this: most other people are figuring it out too.
So if someone sees that you’re figuring it out and sharing your work, pretty soon they might come asking you for help.
Takeaway: Make the jobs come to you by inverting the internet.
Inverting the internet simply means instead of applying to 100s of jobs where 1000s of other people apply, make them come to you.
This isn’t saying never to apply to machine learning jobs. It’s saying to at least be open to the possibility of machine learning jobs coming to you.
So let's look at another technique that compliments this method.
Ah tutorial hell, my old friend...
I learned to code via online courses and now I teach online courses so trust me, I see the value in learning from a course.
But the thing is, eventually you'll outgrow the courses, and that's a good thing.
It means you've learned the foundations of a certain topic and are able to do the role.
The trick is to make sure you're not just learning as an excuse to not do the scary stuff. The building, the projects, the job applications, etc.
Change is scary, so it's easy to stick in the learning phase and we all do it. However, if you want to get better and seriously stand out, you need hands-on experience.
This is where the value is, and it's why you should be working towards specific knowledge versus general knowledge (i.e. practical experience).
However, specific knowledge can’t be taught. It can only be figured out through trial and error, through experimentation, through play, through sharing your ideas and having other people pick them apart (see the above point on learning in public).
As course creators we can build the best courses possible and add the most important projects for you to create. But it's up to you to get out of your comfort zone and start making your own stuff after that.
It's so important for your experience, confidence and even retention of what you're studying!
Eugene Yan calls this type of learning going off the happy path.
Courses do much of the work for you (i.e. if you write the code from the course, it should work). But what most leave out (not mine 😛) are all the errors you’ll run into when trying to build something of your own!
And so if you want to stand out, start trying to acquire some specific machine learning knowledge through building or trying things of your own.
A fantastic example of this is Riley Goodside tweeting some prompt engineering hacks that he figured out via his various experiments working with GPT-3.
Sidenote: Prompt Engineering is a technique to get a language model to perform a specific task.
Eight months later, he was hired by Scale AI (a billion-dollar company!) to be their Staff Prompt Engineer. This was an entirely new role they created just for Riley!
See the top right tweet? That’s the CEO of Scale AI saying Riley is now their Staff Prompt Engineer. All from experimenting and sharing what he learned.
As of April 2022 (when Riley started), careers for prompt engineering didn’t exist!
Takeaway: Practice the general machine learning skills you’ve learned through courses and apply them to a project of your own.
Why?
Because this is what you’ll be doing in a machine learning job when you get one: applying your machine learning skills, so you might as well practice now!
Added bonus?
It's great to have a portfolio of projects. It's even better to have additional projects in there that your competing interviewees haven't completed 😉
Here's another way to get ML jobs to come to you, and it's one of the key techniques I've talked about before with my students and readers.
The technique? Starting the job before you have it.
But how can I possibly start a job before I have it?
Simple!
This method seriously works.
For example
Just the other day I built a small prototype of a machine learning app I’d like to exist for a website I enjoy. The app basically turns talks into transcripts and then makes the text searchable.
It's a fun project, it's something new to learn and enjoy, and it's an easy way to create a relationship with the website.
Anyways, I then went ahead and sent it to one of the people who takes care of the site, and they quickly replied saying how much they liked it and would I potentially like to turn it into a commercial venture!
I’m not even looking for a machine learning job and I would’ve done it for free, but now I’ve been offered a machine learning job that previously didn’t exist, all because I started the job before I had it.
Sensitive details are blacked out but the $$$ chat is underlined in green.
This method works so well, and you could repeat this process for almost anything you’re interested in.
Have a favorite podcast you listen to?
Transcribe their entire catalogue with machine learning and send them an app built with Gradio and hosted on Hugging Face where you make the talks searchable.
Have an open-source company you’d like to work for?
Find their GitHub repository and go to their open issues and start trying to fix them by committing code.
Simple!
Even though it seems like the big tech companies have a fairly good grasp of machine learning (and they do), there are far more companies across almost every industry that are still thinking about how they could use it.
Takeaway: Starting the job before you have it means at the very minimum you’ve got the initiative to work on things that interest you.
If you’ve got no previous experience working in the machine learning field, this technique is one of the best ways to gain it.
Heck, you might even stumble on an idea so good you can sell it and make more than any job offer!
OK so what if you've done all the above so far and still haven't had any offers come through?
Well then, it's time to go on offense, and the classic first step in applying for machine learning jobs is preparing a kick-ass resume.
However, the reason I say to go through the above steps first is because you have to actually have something to put on that resume! Not only does it look good to share unique projects but it also stands out, because let's be honest - reading resumes is frigging boring.
I know when I’m hiring, I would much rather see what people have done vs. a list of skills, so make sure you do the steps above before trying this.
For example
Even if all you have to share are links to blog posts with project write-ups or GitHub repositories with code and demos of machine learning projects, it's still better than just saying you 'know Tensorflow'.
And because I find resumes boring, I'll be the first to admit that I’m not a good resource for how to write a good machine learning resume.
ZTM have some great info on improving your resume but I also love Chip Huyen’s excellent What we look for in a resume.
Two things to note on resume writing:
Of course, there are exceptions to the rule.
Chip’s machine learning resume guide talks about how she tries to hire for her small machine learning company, Claypot AI, but I think the principles can be applied to almost any machine learning job.
Chip breaks down what she looks for in a machine learning resume:
Which of course, is what we've been recommending in this article also!
Sidenote: You can see elaborations on each of these in Chip’s machine learning resume guide.
I’d also highly recommend checking out the tips section which includes helpful tidbits such as:
"If you’re applying to a small startup, say, of less than 20 people, spend some time researching who works at that startup and email them directly".
^^ I’m a big fan of going straight to the source. Totally worth the time, especially since most people won't do this. Simply find their email address, craft a personalized email and connect with them on socials. (Defo find the email, as a lot of sites want you to be verified before you can chat on social now).
Takeaway: There’s a trend here, and it's the fact that people generally prefer seeing what you’ve already done.
Think about it from a hiring perspective. It’s a risk hiring someone you’ve never worked with before, so it makes sense that the hiring manager would like to reduce the risk as much as possible.
Seeing someone who's learned new areas and pushed their skills shows determination and the ability to learn new things. Skills are great but its character points that help make job offers!
So to recap: You've worked on projects in public, built your own things, got out of tutorial hell AND you have a nice new shiny resume, so what's next?
Well, assuming a job didn't land in your lap already, it's time to practice for the interviews.
Other than the required revision of common Data structures and algorithms, or even FAANG technical question prep, I would also recommend reading Chip Huyen’s phenomenal Introduction to Machine Learning Interviews Book.
The book is so good, simply because it has perspectives from both sides of the interview table:
Boom! You can learn what it's like to interview AND what the interviewer is looking for.
Some of my favorite chapters include:
And my top favorite, Do I need a PhD to work in machine learning?.
Short answer: no!
The book goes wide and deep so don’t feel bad if you look at it and get overwhelmed. That’s why it’s written in a book, so it can be referenced when needed.
As the book says in the introduction, the use of machine learning in most industries is still pretty new, so many companies are still figuring it out as they go.
If you’re serious about preparing for machine learning interviews then I would suggest:
You could easily turn these writing sessions into readable blog posts for other people to see. Then, after three months you’ll have a collection of resources you can show potential interviewers!
I can just imagine the conversation now:
Interviewer: "Is there anything you’ve done outside of several online courses?"
You: "Yes, I’ve been spending the past few months creating resources on several machine learning topics such as data structures, data sampling and creating training data, objective functions, metrics and evaluation and more, you can see these [insert your blog or GitHub profile]".
#Micdrop!
Takeaway: Every company’s hiring process will be different, so don’t overthink and try to optimize for every possible kind of machine learning job interview.
Instead, pick a few things you’re most interested in and become good at those.
Also, don’t be afraid to admit when you don’t know something.
Instead, explain how you might approach figuring it out (another secret: even senior engineers use Stack Overflow and Google simple things).
The benefit of having machine learning projects you’ve already done is showing someone you can figure things out which is incredibly underrated, and a key skill employers are looking for.
Learn in public. Open-source your machine learning knowledge and start being “the person” for something. Like Riley Goodside became “the guy” for prompt engineering.
Once you start being known for something, people will come to you for help, and some of these people will want to pay you.
Start the job before you have it.
Do you feel unready? You might not feel ready but no one ever does. Imposter syndrome is huge in careers like this.
But remember, everyone else is still figuring it out and feeling like a fraud also. Especially since outside of the big tech companies, many companies are still figuring out where machine learning best helps them, and your job is to show them.
So if everyone is still figuring it out, including me, then it means you’ll never be 100% ready. If you think you’d like to apply, apply.
But don’t treat the application as an endpoint, the practice must continue.
Rejection happens. I’ve been rejected and it sucks.
But are you still alive? Yes. So keep learning, keep creating, keep applying.
The reality is that there’s no limit to what questions to prepare for.
I recommend spending 3-4 weeks reading Part II of Chip Huyen’s Introduction to Machine Learning Interviews Book.
Then start answering 10 questions a month, sharing your work publically, applying to machine learning jobs and going through interviews until you’re successful.
Of course not! There’s enough here to last you years. One of the most important skills is selecting what you’d like to work on, and then keep it fun by following your own interests.
That’s what I’m doing with my company Nutrify: take a photo of food and learn about. I love food and I love machine learning so I’m combining them.
All of the resources linked above have extensive resources linked and attached to them, but this article is more than enough to get started.
Remember the overall theme: you’re often smarter doing than you think.
And people, especially hiring managers, like to see what you’ve done rather than what you’ve thought about, so it's always best to try making something with your machine learning skills than to stay thinking about it.
In short:
You've got this. Simply follow these steps, put in the work, take action, and the job will come!