Hi everyone, I have about 0 experience with machine learning and I'm thinking of ways to significantly increase my value in the future. My ideal plan is to get promoted to E5 in < 1 year and then change domains to ML (or ML Infra and work closely with ML engineers). I have almost 0 experience with ML directly, but I think they make much more money in the long run? I'm currently a backend software engineer.
Basically I want to know if it's worth investing my time & effort this or if it would be better to just eventually go for engineering management in the domain that I am already familiar with.
First, I recommend this discussion from another Meta SWE interested in transitioning to ML: "Software Engineer interested in ML - How would a transition work?"
While it's true that MLEs tend to get paid more than other SWEs (I recently found out that Google pays 25%+ more for MLEs compared to SWEs), my advice largely remains the same for these switching scenarios: Take it up if you're genuinely passionate about it.
To me, it seems like your primary motivation is compensation. While money is important, I feel like most engineers I know who hyper-optimized for compensation had slower career growth than those who treated it as more of a secondary motivation/lagging indicator, which I talk about more in this video here.
If money is the main reason you want to do ML, I wouldn't switch into it, even if you have some interest for it (not super relevant if it's the secondary motivation). There's 2 other factors in play:
This link was super helpful, thanks Alex! (https://www.jointaro.com/question/6ZaGA1FUTL1OaPlQOkan/software-engineer-interested-in-ml-how-would-a-transition-work/)
I'm honestly not sure whether I would enjoy ML, does anyone have any recommendations on how to start on machine learning side projects?
I found this article about machine learning side projects, which seems decent.
To make the side project more sharable, I'm thinking you could make some sort of API or utility tool that uses ML underneath.
In terms of what to build with side projects, I highly recommend looking for inspiration among your interests and day-to-day life: That's when the most effective side projects arise. When it comes to ML/AI for me, a good example is Deep Leffen Bot. For context, I'm a big follower of competitive Smash Brothers Melee. These engineers trained a bot on the thousands of tweets of a prominent Melee pro and has its auto-generated tweets shared to that Twitter account (which is absolutely hilarious).
Here's the masterclass I gave around coming up with a great side project idea where you will actually follow through.
If you're fairly close to getting the E5 promo, I like your plan to first secure the E5 promo. That effectively becomes a floor for future roles, effectively guaranteeing your seniority.
I wonder if you could de-risk some of the move to MLE by:
I broadly agree that ML in general will become more and more lucrative, and there will be more opportunities in the coming years. However, you want to ensure that you'll have staying power. You can likely get a short term comp bump by switching into it at Meta, and then leveraging the "Meta AI engineer" brand for a great offer elsewhere.
But the massive comp bumps will come from understanding the AI landscape, upcoming trends/companies, and having opinions about them. Could you develop that now as a way to ensure you'd be happy with the transition?
In addition to the other answers, I'd add the following notes:
Every team is different. Being an MLE in a research oriented/R&D team will involve implementing and productionizing algorithms, often directly from papers. Being an MLE in an AI inference or edge team will involve a lot of low level code and optimization. Being an MLE in a core ads team might involve a lot of testing, experimentation, and statistics to help evolve a complex system. (In fact, testing/experimentation is probably the most useful skill you can pick up if you're trying to go into an ML role at Meta!) As Rahul mentioned, sitting with an MLE is a great way to find out what their day-to-day life is like. I would also poke around their diffs, public posts, authored docs etc. to see even more specifics about what individuals are doing.
But I wouldn't let that discourage you from learning ML or trying side projects for fun. Give it some sort of time box window - like a month - to hack on something you find meaningful. Afterwards, identify the parts of it you enjoyed doing, and the parts you didn't. (For me, the parts I enjoyed were always designing the model architecture + seeing the optimization process happen in my notebook. The parts I hated were always data cleaning :) If there's enough of it that you did enjoy, then it's probably a good bet.
Also, it's worth mentioning that being in eng management for both an ML team and an SWE team will become more and more similar the higher you go - less about the specific technical decisions, and more and more about people, process, and culture management overall. I don't know about compensation at higher levels, but I don't think it's so different that it should really be a huge decision factor in the long term. However, MLE at Meta is good in that you are potentially more layoff proof, and can work on some high priority projects like ranking/recommendation.
I hope this helps :)