This started as an email reply. Then it turned into the June 2020 edition of Eat, Move, Learn, Make (my newsletter). But I decided it's worthy of its own post.
Manuela emailed me the other day asking the question “How can a beginner data scientist like me gain experience?”.
It followed with, “I did some courses and did 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 job. So you might ask, “Well then, why I 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 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 an online machine learning course.
An online course creates foundation knowledge, working on projects of your own creates specific knowledge (knowledge which 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 role) is the equivalent of touching the stove.
If you’re like me and have course certificates and course projects coming out 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 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 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 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 doctors 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. It’s a fear-based decision rather than a growth-based decision. You decide not to apply because you’re afraid your abilities aren’t up to scratch.
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 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 teachers assistant for our machine learning course (shout out to Shubhamai), we hired the student who was already answering the questions of others on their own. Shubhamai started the job before he had it.
Another neglected point. Never see a rejection as a once and forever thing.
As quoted, some interviewers said, “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 (it should be noted: 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.
Remember, many results in life are nonlinear. If someone emails me once and I forget to reply within a couple of months (email is a blessing and a curse for me), 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?
No. Of course not. But it shows far more initiative than just pumping through multiple job postings.
Get to know someone
Many job openings aren’t even listed.
My first (and only) job at a technology company came by 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, remember, an engineer is 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, 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 off 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 you emailed me (Manuela emailed me a very succinct and specific email, as you’ve seen above). Short and sweet. Be direct with your questioning.
I got an interview at Airbnb because I sent a recruiter (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 more and more of a thing 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 3-years have come from someone stumbling upon my work (I’ve only 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 (you can figure these 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 job before you have it and share your work 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 — almost explains itself by the title.
- How to communicate and share your work — article I wrote which talks a little more about these points.
- 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.