Acquiring Experience for Machine Learning Jobs: A Roadmap for Beginners
I've done some courses, what do I do now? Hint: touch the stove.
Manuela emailed me the other day asking the question:
How can a beginner data scientist/machine learning engineer like me gain experience?
It followed with:
I've done some courses and some projects, but some interviewers said: ‘I liked your formation but you don’t have the minimum experience we want, come back later!’
I replied with some points I’m copying to this article.
Disclaimer: I’m not going for a machine learning job.
So you might ask, well then, why would I take advice from someone not going for a job?
And you’d be right in asking that.
Always be sceptical of advice from someone who hasn’t learned it through their own experience.
My explanation is, no job I’ve found suits me, so I created my own (this could be an article on its own, in fact, my advice is: don’t get a job, start a business instead).
However, if I was going for a machine learning role (and in turn, the experience it requires), here’s what I’d do.
The courses and experience gap
Online courses are commodities (a very common thing).
Yes, I say this as someone who teaches machine learning courses online.
Online courses teach foundation knowledge.
Working on projects of your own creates specific knowledge (knowledge that can't be taught).
So my first question back to Manuela would be, when you say you’ve done some courses and projects, how many of the projects are projects of your own versus the ones you’ve completed as part of a course?
Here’s my definition of experience: things you’ve tried on your own (or in collaboration with others) without knowing the outcome.
Here’s an example.
How many times did your mother and father tell you that the stove was hot?
My guess is you never learned until you got burned.
Listening to your parents is the equivalent of listening to instructors teaching you a course.
Sure, you can take in what they say, but until you try it for yourself, the knowledge won’t really sink in.
So gaining experience (before actually starting a machine learning role) is the equivalent of touching the stove.
If you’re like me and have course certificates and course projects coming out of your ass and are looking for this elusive thing called experience, now’s the time to start asking yourself:
Have I touched the stove yet?
Start the job before you have it
Find out the ideal kind of machine learning role you’d like to go for, then start doing it.
If this sounds outlandish, treat it as part of your research.
If you’ve got the ability to learn data science and machine learning skills, you’ve got the ability to figure out what different kinds of roles require.
Let me give a concrete example.
Say you were after machine learning freelancing roles, but all of the opportunities demand experience.
And there’s one there for building a computer vision model for identifying whether or not a doctor's tool was present on an operating table (this is not made up, I’m drawing this from an actual project I was asked to work on).
You read the role task, and go, "wow that would be interesting, I’d love to do that” you keep reading and see “3+ years experience required”, and think, “well, I don’t have 3+ years experience, so I’m not going to apply.”
Then spend the rest of your day thinking, “well, looks like I’m not good enough for any of these roles.”
I’ve been there.
And it’s the wrong thought process.
You decide not to apply because you’re afraid your abilities aren’t up to scratch.
The truth is, many roles involve plenty of figuring it out on the fly (after all, that’s the science in data science or the engineer in machine learning engineer).
So what can you do instead?
You could take the job description for the project and build it yourself.
Spend a week designing and planning how you might do it (perhaps less, you're far smarter doing than you are thinking), four weeks actually doing it and then a week sharing what you’ve learned.
Worst case, you’ve spent 6 weeks figuring out what doesn’t work (for a particular problem), best case, you’ve now got something to show someone what you’ve actually done (without the helpful guidance of a course project).
Something you can say, “I saw this project, took it upon myself and decided to build out a proof of concept.”
For the doctor's tools problem, you could search the internet for different pictures of tools, create your own dataset (doesn’t matter if it’s artificial, what matters is figuring out how to create such a thing), build a model which detects whether tools are missing or not and then deploy your proof of concept using Streamlit or Gradio on Hugging Face Spaces into a nice user-facing application.
If a future employer doesn’t call that kind of initiative “experience”, you don’t want to work there.
A side note: When Andrei (my business partner) and I hired a teacher's assistant for our machine learning course(s) (shout out to Shubhamai), we hired a student who was already answering the questions of others on their own. Shubhamai started the job before he had it.
Never see a rejection as a once and forever thing.
As Manuela said, the interviewers stated, “you don’t have the experience we want, come back later.”
Let’s change one word, “you don’t have the experience we want yet, come back later.”
If someone tells you “you haven’t got the experience yet” and you take their word with good faith and go and practice your skills, namely, doing something like starting the job before you have it, you should follow up with them.
Show them what you’ve worked on (note: this requires actually going and improving your skills).
Say, “Hey, based on our last conversation, I wanted to let you know I’ve been working on my skills, here’s what I’ve built in the meantime. If you’ve got any openings, I’d love to be reconsidered.”
Most forget the follow-up.
Not just with interviews but with anything.
Any kind of relationship can be improved by someone taking the extra step to loop back.
Many results in life are nonlinear.
If someone emails me once and I forget to reply within a couple of days, I probably won’t reply ever.
But if they follow up and remind me of my slackness (thank you), I’m far more likely to reply within the next 24 hours.
Does this always work?
Of course not.
But it shows far more initiative than just pumping resumes through multiple job portals.
Get to know someone
Many machine learning job openings aren’t even listed.
My first job at a technology company came from someone seeing what I was posting on LinkedIn who happened to know someone who knew someone who might be interested in talking to me.
I ended up meeting this person (shoutout to Cam), who turned out to be a complete and absolute living legend, had a conversation on what I’d been working on, he asked if I’d like to come in for a day next week, I did, then another day and after two days, I was offered a role.
What should be noted in this scenario is I did have foundational skills, far from world-class, but I wasn’t walking in there not knowing what a pandas DataFrame was or how to troubleshoot and lookup questions on Stack Overflow (yes, many hours of my days, even months into my job were spent researching and Googling things, as an engineer is by definition, someone who "figures things out").
For many of our future hires (especially juniors), they were because someone knew someone.
I see it like this: job portals are dead.
They may work for some but to me, I pretend they don’t.
I tell myself, it’s easy to apply through that button, but it’s harder to go above and beyond, find the person I should talk to, talk to them, show them what I’ve been working on, take their advice, listen to their feedback, work on my skills, follow-up and show them and potentially get an offer.
Whereas, if I apply through a job posting, it’s an instant no (maybe not, but again, that’s what I tell myself).
Of course, in an ideal world (though, maybe not ideal), companies would hire based on of talent and ability alone, but that’s not how people work.
People like to work with people they like.
Okay, so how do you get to know someone?
If you’re going the digital route, keep it simple.
Just as Manuela emailed me (Manuela emailed me a very succinct and specific email, as you’ve seen above).
Short and sweet.
Be direct with your questioning and intentions.
I got an interview at Airbnb because I sent a hiring manager (found by doing research), a message on LinkedIn.
She replied within a day saying, “Hey Daniel, are you available for a call tomorrow?”
I didn’t get the job but I’m certain I got closer than if I had applied through their job portal (which I didn’t even do).
Again, this process is not guaranteed.
You may message 100 people and get 0 replies.
Similarly with applying for 100 jobs and getting 0 offers.
And if your scorecard does end up looking something like this, take it as feedback, your way of approaching things may need to improve.
Digital is efficient and remote work is becoming far more commonplace but people still like interacting (perhaps surprisingly to tech nerds like us) with their meat bodies, as in, being in the same room as each other.
This means going to events (when social conditions allow), talking to people, going the extra mile to follow up (see above) with Dave from company X who told you about the project he’s been working on for the past few months.
The tech company I worked for hosts an artificial intelligence Meetup every month.
Before I worked for them, I went to one of the Meetups not knowing who they were or that they even existed, 7-months later, I was working there.
Share your work
This should be clear but if it’s not, I’ll put it here again.
If your attempts at outbound opportunities have failed, make them come to you.
This starts by creating things and sharing them in public (finished or not).
All of the best opportunities I’ve had in the past five years of learning, teaching and creating things with machine learning online have come from someone stumbling upon my work (I’ve been writing online since 2016 and about machine learning since 2017).
Yes, you should have your own blog, use it as the central hub of your portfolio and other social media platforms (GitHub is possibly the next most important and you can figure the rest out) as the spokes.
Think about it.
How do you learn anything?
Chances are you’ve searched around, stumbled across a great blog post about the topic and used it in your own work.
Well, guess what?
You can become the creator of one of those helpful blog posts.
This ties back in with the above.
Start the machine learning job before you have it and share the work you've done on it (there’s your experience!).
And once you’ve worked on something related to a previous declined offer, follow up and say, “Hey, here’s what I’ve done.”
Let’s be real, hiring someone without experience is a major risk for any company.
Because chances are, you will lose the business money in the short-term (as you learn and build upon your foundational skills).
So you could think of your primary duty being to mitigate that risk.
The points above are plenty to get started with. But if you’re interested in learning more, the following resources will help:
- So Good They Can’t Ignore You by Cal Newport — a book that explains itself by the title. If you're so good they can't ignore you, the machine learning jobs will come to you.
- How to communicate and share your work — an article I wrote that talks about an important aspect of technical roles, the non-technical skill of communication.
- Don’t call yourself a programmer — another great article on the topic of starting a role (if you don’t have a role you may read this as a “well, these don’t relate to me”, but you should view the points as something to reverse engineer, remember: start the job before you have it).
Questions? If you’ve got any further questions, feel free to email me.
PS I made a video version of this article.