Most senior engineers at organizations require a significant amount of coordination and people-skills. If you're not managing a team, you're definitely managing the relationship with your manager and coworkers/project teammates.
Thats totally fine for folks who thrive in this kind of role. However, it does take away the ability to grow your career if you want to keep developing software. So for example, if you program for 20 years, and keep improving during this time, you would expect to be rewarded with some career progression for the progress you've made in years 10 - 20.
But as it stands, these days, if you run into someone who has been programming for 20 years, you can assume their career has mostly stagnated, and might even count them off as a low performer because they failed to grow. So it's almost a self fulfilling prophecy - staying a "true" IC has no growth, and therefore there is an incentive to just sit back and stop growing.
Yes, but you're not managing people. It's a lot of collaboration and leadership, certainly, but not doing any of the HR-adjacent bureaucracy that comes with being management.
Other managers will always try to change your mind on this. When layoffs come around, they usually are more likely to get laid off and their tech skills are now stale and they have to rely on their 'network' to get another management job if they're lucky. Not a position I want to put myself in.
Separately, there is also the Tech Lead track, where you don’t get reports, but rather final say over an increasingly larger area of influence and drive cross-team/org projects.
As for a technical track, read the stories on staffeng.com. And read between the lines when you’re viewing them. There are plenty of folks with technical track titles who spend most of their working hours in meetings of questionable value. And you will definitely find folks with management track titles that spend more time doing hands on work than their peers with technical track titles.
The ugly option you can try is good old-fashioned sandbagging. Knock out every technical assignment in record time, or quality, or whatever seems to be your leads KPI. Then tank any assignment which seems remotely conducive to management. Bonus points for explicitly indicating a desire to move into management. Your own leadership will think you are so miscalibrated as to believe they are doing everyone a favor by keeping you off the management track.
Edit: I realize you did not explicitly ask how to stay off the management track. Consider the last paragraph as just some idle, slightly sociopathic musing.
I think the term IC is a misnomer and is detrimental to our field. Afterall the code you write, the designs you make etc are part of the larger puzzle which completes the project. No work you do is in isolation.
You can do this, but you will have to accept the plateau. There's really nowhere to go beyond Staff/L6, unless you're some super genius full of brilliant ideas or luck into being involved in a game changing product launch. Everything beyond that becomes politics.
It depends. If you're able to side-step the middle manager doldrums to Director/VP, and you know how to play the game, the sky's the limit. But IC's are pretty hard capped at L6 short of being involved in the creation of a new business.
That said I totally agree with you overall and think the argument you are responding to is a little silly. You can have an absolutely fantastic career staying IC forever. The fact that you might cap out at “staff/principal/whatever engineer,” a hugely influential and generally very well paid role, should not be viewed as a downside to that track.
Even the CTO can have incredibly senior engineers reporting to them as a consultant of sorts. Sure, the probability of arriving at that role is low, but then so is the probability of becoming CTO.
More importantly, why would one always want to "go beyond" any specific role, assuming the pay is good?