I'm at a medium size software company, but still sometimes I find it really hard to get promoted if I don't fight for or create a golden project in the org. With almost 5YOE approaching, I still find myself struggle to advance to next level in my role. People I worked directly on my project are both at least 2 levels above me, they're at Senior II or Staff eng level.
I am now in a really awkward situation where I don't know if I should just interview at other similar level company for senior position or change teams internally.
The # of years to get to Senior Eng depends very much on your team, your company, and your projects. So don't feel bad if you feel like you're not advancing as quickly!
I'd answer this question by combining:
With 5 YoE, there's a decent chance you can actually land a senior role directly if you interview well. It's harder now in 2023 compared to 2021, but still possible if you spend a bunch of time in interview prep.
Also consider going to startups which will be more lax about the senior role. If you go to a series B/C startup, you should be able to land the senior role, and after you spend a few years there, you will by default be assumed to be Senior or Staff.
I'm at a medium size software company, but still sometimes I find it really hard to get promoted if I don't fight for or create a golden project in the org.
I understand that this is hard and can feel really sucky, but this is a feature, not a bug. By having to fight for or create good opportunities, you mature as an engineer in many ways:
I'm not going to lie - Going through these above 3 things was painful for me as I went from E4 (mid-level) to E5 (senior) at Meta. But it was a trial by fire worth taking, and being forced to build these skills helped me progress to Staff much faster interestingly enough (I got Exceeds Expectations in my very first half as a fresh E5).
If you need help building up these skills, check out the following:
To answer the top-level question though, engineers generally progress to senior after 5-10 years (some go faster, some go slower and there's no shame at all in going slower). Senior is when the bands start getting really wide, and there's a lot of variance in people's careers. Also, "senior" is just a string next to your name so don't worry about level too much - They aren't standardized across companies. If you really wanted the "senior" title that badly, you could go to some jank startup with inflated titles, but that's not worth it.
It took me 15 years to go from "Software Engineer" to "Senior Software Engineer". That's certainly on the slow side. However, there's more to the story.
Before I became "Senior", I had the title "Lead Software Engineer", which to most would sound more senior than "Senior". It wasn't, but that was at a company with a very odd set of job titles. There's no standardisation, particularly when comparing between different size companies.
A big reason for taking longer than average was staying at the same company for too long. By too long I mean beyond the point I was learning at a good rate.
I do regret taking so long, but it also helps alleviate some of the imposter syndrome.