Yeah, I think part of the issue is the horribly broken career progression model that most companies seem to use.
Graduate -> Software Engineer -> Senior Software Engineer -> Team Lead -> Non-Technical Manager (???)
Then again, unless a company is scaling at the same speed as your career, you're eventually (probably before 40) going to hit a wall where there's no higher level for a tech person to go, because there are no bigger problems to solve. If you want to earn more money or get more recognition, you're going to need to move to another company which can offer harder challenges.
Graduate -> Software Engineer -> Senior Software Engineer -> Team Lead -> Non-Technical Manager (???)
Then again, unless a company is scaling at the same speed as your career, you're eventually (probably before 40) going to hit a wall where there's no higher level for a tech person to go, because there are no bigger problems to solve. If you want to earn more money or get more recognition, you're going to need to move to another company which can offer harder challenges.