Great thread. I don’t know anything about getting hired into a company but I do know a few things about freelancing.
I switched from iOS development to ML about 4-5 years ago (when I was 38-39) and currently am making a good living doing ML consulting work (remotely).
I think there are a few ways you can do freelancing:
- Build a reputation for yourself on sites such as Upwork. I’m not a fan of these sites, but they offer a reasonably easy way to get some experience if you’ve never freelanced before.
- Build a reputation for yourself on your own website.
- Get gigs through people you know. Hard to do when you’re just starting out, but will become easier over time as you get to know more people in the field.
When I started in ML, I picked a niche: ML on mobile. This was not something a lot of people realized was possible at the time, but it seemed inevitable to me. So I got in early and was able to establish myself as “expert on iOS machine learning”.
I invested a lot of time into building that reputation, by writing an in-depth blog, several books, publishing open source, etc. It’s something that requires maintenance as well — whenever a new efficient model architecture comes out, I need to study it in order to be able to provide my clients with up-to-date information. (This is why they hire me: so they don’t have to do this themselves.)
I’m sure this is also why Jeremy encourages people to write blog posts. But I’d say you need to take it to the extreme: focus on a particular topic (such as recommender systems) and write exceptionally good blog posts about them. Make your blog so good that it becomes the go-to reference for this topic, and clients will come to you.
Show people that you know what you’re talking about, so they’ll hire you to solve their problems.
(Of course, the key is finding a good topic. The more niche the topic is, the easier it is to establish yourself as an expert in it. But of course, if it’s too niche, there won’t be enough clients.)
I believe the same thing is true for getting hired as an employee: you can go on interviews and hope to convince the company to hire you. Or you can first establish yourself as an expert, make the company reach out to you (rather than the other way around), and do the interview on your own terms (for example, it allows you to insist on working remotely). It puts you in a much better position to negotiate if they’re the ones who need you, rather than the other way around.
I’m sure that “become recognized as an expert” sounds daunting, especially if you’re just starting out. But rather than just doing one MOOC after another, do them with a purpose: Take the things that you learned in the MOOC, dive deeper into them, and then write about it. This will 1) make you learn things much more in-depth than other people, 2) improve your skills in explaining stuff (essential when doing consulting), and 3) work towards building up a “portfolio” that demonstrates your skills.
Example: I just spent several days figuring out why bilinear interpolation works differently across ML frameworks and how this affects Core ML (the ML framework for iOS). Not a lot of other people have gone this deep into this topic before – and even if they did, they didn’t write about it. Having in-depth content like that will help to convince people you really know what you’re doing.
(And if you’re worried you don’t have anything to write about: You don’t need to know everything already. I didn’t necessarily know everything about bilinear interpolation when I started writing that blog post. But as this was a problem I wanted to figure out anyway, I might as well put some extra time into writing about what I have learned, which helps to get more work in the future.)
Anyway, not sure how helpful this is. I just wanted to point out that you can take matters into your own hands and market yourself as a capable ML engineer / data scientist, so that companies or clients are more likely to be interested in you than someone else who did the same online courses and read the same books.