One thing that I wish was more obvious to me when I was starting my career on how to get promoted - work for a growing org in a growing company. If your company and org are stagnant or shrinking - there is likely a cap on how many people at certain levels they will support. And even if not, promotions will be slow due to budget.
This is gold. Beyond the second level (or third level if they're thin levels) of SWE/IC, promotions are at least as much about there being whitespace that needs filled as they are about your individual trajectory/ability.
If the entire pie is expanding at a breakneck, nearly unsustainable pace, there's so much whitespace that modest performers can get quick promotions. If the entire pie is static, even strong performers will be promoted far more slowly.
Because the first few promotions are (mostly) about the individual ability/capability, it can be tempting to assume that mid-career and late-career promotions are "more of the same". They're not.
It's all about who is the favorite. I had a tech lead who didn't know what SCCM was even though we supported a thick-client that was installed using SCCM. He had numerous other deficiencies in things like system design and wanting/trying to avoid implementing security fixes to bring us inline with standards. But he knew how to talk to management and the business to make them like him. He was very much a 'yes man'. Unfortunately I speak my mind, so I am just intermediate.
Nope. He didn't understand the business either, he just agreed with everything they and management said.
I had a story with incorrect requirements where the business and the tech lead would not listen to me, even when I explained it in multiple ways. It wasn't until I spent 3 weeks building it and had a consultant raise my same concern that they realized their mistakes. In my opinion it came down to them being classist assholes - don't listen to a midlevel dev, only the highly paid consultant.
I'm actually not that well versed in the nitty gritty. I tend to be more of a big picture and concepts guy. I had at least some respect from other tech leads on that project, just not my own. Perhaps my tech lead felt threatened or just enjoyed talking down to me and talking shit about me. I had two other tech leads find out that I was only a midlevel dev and they both said that wasn't right and I should have been a senior (technically the role I was filling was supposed to be for seniors).