I have been generalist my whole career, I have moved from front end web development --> platform as a service web development --> microservices cloud development and now as a ML engineer, all on different tech stacks. I am pretty late in career now, 12-15 years in. What do you recommend, in terms of going forward, do I have a chance with trying to be a staff, or should I switch to PM/EM role? I would eventually want to be a good EM.
I'm sure you have a chance at becoming Staff: 12-15 YOE is generally a good range for that level. Most engineers cap out at Staff, so it's not like you're too old for it or something.
Becoming a Staff Engineer is also conducive to becoming an engineering manager as that's the level I generally expect for an IC -> EM transition to have a good chance of success. At Meta, it is effectively a hard requirement to get to Staff (E6) before transitioning to EM (M1).
Here's a good playlist on getting to Staff: [Taro Top 10] Senior Engineer To Staff Engineer (L5 To L6)
Check these out for the IC -> EM transition: [Taro Top 10] Software Engineer To Engineering Manager (IC -> M Track)
Now transitioning to PM, that's a whole different beast. For PM transitions, it's obviously better if you work closer to the product, which often means being a front-end engineer. Here's some great resources on that: [Taro Top 10] Product Management For Engineers
My question has originated from the courses by you and Rahul, and the general idea I got is I need to be the best in one domain and tech stack (Practice that one kick 1000 times, instead of 1000 kicks one time). From my background and tech switches I feel like I have lost that. How do I salvage my career now, if I want to get back on track? How many years do you think and what kind/area of effort should I put in? By switching to ML, did I move back to the fresher stage?
Unrelated: Is senior a terminal level at Meta, or is there an expectation to move to staff within x years?
Becoming a Staff Engineer requires an incredible amount of technical depth, so yes, switching to ML will definitely set you back several years at least with this promotion. Stuff like this is why I generally recommend against pivoting into the "flavor-of-the-month" tech stack as the cost is quite high.
I actually think most engineers come out net-negative with these pivots as yes, they're switching into the hotter domain, but they're losing all that domain expertise from before, which is awful for promotion and being a high-performer in general.
By switching to ML, did I move back to the fresher stage?
Definitely not as senior engineers like yourself generally have a lot of fundamental skills like communication, mentorship, and project management (you know, all the stuff we talk about in Taro) that allow you to add value regardless of tech stack. So hopefully it just moved you to the earlier-end of the senior spectrum, upper-end mid-level at worst.
Unrelated: Is senior a terminal level at Meta, or is there an expectation to move to staff within x years?
E5 is terminal. There is 0 expectation to move to E6. Being E6, especially in this economy, is extremely hard.
Thank you appreciate such quick responses and helpful guidelines and amazing courses. If you do have any tips to now move fast through the ML role (hoping to get promoted, not soon, but hopefully soon enough), please do share. Thanks again!!!
I'm not an ML engineer, so I'll delegate the technical advice to this discussion: "How to build depth as a machine learning engineer?"
Overall, I recommend being inquisitive (and humble!), adding value to others, and building relationships with talented ML people (and Staff+ engineers in general) so they'll teach you. In other words, following the advice from here: "What’s the most effective way to switch domains in tech?"