At some point you cannot become more productive as an individual and you need to start coordinating the work of many people if you want to increase your productivity.
This can of course take many forms, but the essence is inescapable.
Sure they review code and still get their hands dirty from time to time on critical pieces, but there is much more value in using your experience to lead your team in the right direction.
Neat. Another manifestation of the attitude regarding productivity of "more, more, and more still" as the default trajectory in the name of 'growth'. Calling it "inescapable" even. Sheesh. What's the point at which we realize "enough" productivity is exactly "enough" and give people the agency and autonomy to perform where they are most capable at a velocity of work that is stable, sustainable and...fuck it, I'll say it: sane?
Commenter, please understand: this isn't an attack on you for merely saying it, but is instead a full-frontal assault on the concept in general because honeslty...personally...I'm sick of it.
Alright, I'm done venting.
If you're happy with your current responsibilities as an IC then you should be able to stay at that top level (Principal engineer) and continue doing what you're doing today, just don't expect a higher pay.
Anecdote isn't data, but it's funny to read this given it's exactly what happened the moment I decided I wasn't happy in management and wanted to be an IC again: a 25% increase in TC pay. And I was very happy with, content with and able to provide for mine on the previous, lower TC (which was still well into six-figures) even though I wanted nothing to do with the work anymore.
The junior engineer solves an immediate problem. The senior engineer realizes it’s generalisable to similar problems of their team and solves them all at once. The principal engineer realizes it’s generalisable to their entire company (or broader industry) and solves it for everyone.
Many widely-used and industry-shaping pieces of software were (at least initially) the product of just a single programmer, or at most a small handful of core developers. When other people joined it, it is often after the software had some initial success.
The essence of capitalism is shifting resources from unproductive uses to productive ones, and they operate on global markets, which gives them unprecedented leverage. Capitalism is a skill just like management, and just like management, it consists of a number of subskills. How do you know what the market will value? How can you evaluate the competitive landscape? How do you make yourself aware of technological developments and new suppliers that might affect cost structures? How do you recognize emerging complements? How do you ensure the legal structures of your agreement make sure that you share in the profits of your investment?
The interesting thing is that developing these skills early, in high school and college, helps dramatically even if you don't have any capital to invest. Because you can apply the same questions toward the company you contribute your labor to, and then bargain for stock instead of cash. A junior developer who joined Coinbase in 2016 made a lot more than a manager who joined Facebook.
The owners and capitalists have been the winners, at least in my lifetime. Investing has been de-risked enough through monetary and political policy that it's a good bet. A good example of monetary policy is low interest rates. The ability to borrow capital and take "risks" hasn't been cheaper. A political policy to encourage investment is for example the 401k - most wage earner's retirement funds go straight to the capital markets. Even public employees retirement funds ride the capital markets with optimistic outlooks. I suppose that makes most Americans capitalists whether they want to be or not, so my argument has come full circle, but that money bubbles up to the people up top, since they make the compounding gains and have access to inside markets. Personally, A few times I've made more money from ownership and investment than from my labor. It certainly is a valid approach to a career.
It's that willingness to cut your losers that many people don't have. Lots of folks are miserable in their jobs (you see a number in this thread) but then perform all sorts of rationalizations on why it has to be that way. It doesn't: if you're miserable, that's your brain telling you that it's the wrong place, and you should go put in some effort to find the right place.
Again - easier said than done. It’s easy to say, “just quit and go to the unicorn that will make you mega rich”. It’s much harder to actually do it.
I’ve worked at a variety of places. All the way from research, seed, various rounds of funding, to going public, public companies, and long term enterprise. No one was any good at predicting whether these companies were going to make me rich.
The people I know who got rich were just lucky - that’s about it. They weren’t good at selecting companies or figuring out ideas. They just got lucky.
Spend enough time talking to people in SV and you get one thing above all - survivor bias is real and alive.
As a term of art, used by people writing the JDs for “manager” jobs (source: have wrote those JDs), it specifically means having people reporting to you, being responsible for their productivity, growth, and development.
The senior IC track does not (have to) involve management. It does involve a lot of communication, collaboration, and coordination, which may look like management if you squint. And there is overlap; in small companies, particularly startups, sometimes tech lead and manager hats are worn by the same person. But they are different roles.
And particularly, to the point of the article, they are different career tracks. You might wear both hats for a bit, but most careers will end up specializing on one or other track.
See https://lethain.com/ for lots of material on what it means to be a staff-plus IC, as well as engineering manager.
The way I hope to end my career is in IC, building tools that make other devs/the org more productive.
Building software that multiplies other developers output will also increase your output in a sense. You are vastly more productive because you “work through the people using your software”. Which I believe can be a position of very high status in and of itself. Imagine Guido, or the teams behind go, react, etc…
Most big organizations need people to work on their infra full time, and thats what I hope to end up doing someday, no need to mange people, you can still manage computers, only a lot more of them.
Its what Paul Graham said in one if his essays - as a factory worker you can’t increase your output much by working more, but as a software dev - you can, and with enough planning / luck that can be exponential.
This is my struggle. After about five years of head down all day programming I started to get more of a tech lead role, and the hours spent on explaining the work instead of doing the work crept up. I managed to avoid the management track by actively pushing back when pushed that way, but I eventually got the architect title instead, and now I can go months writing nothing but emails and spec documents before I manage to find a good enough excuse to write code. The upside is that I decide a lot of things, which as a pure coder I did a lot less. The downside is that I really wish I spent more time writing code.
Sometimes I think about going indie and building and selling my own product, but anything I can think of seems to involve a lot of time spent doing other business activities than coding, and that just does not appeal.
Don't underestimate the power of communication though. It would be well worth your time to have a frank conversation with your boss about what it is that you're interested in doing (ie, writing more code), and seeing if there's an opportunity to be more hands-on with the code. If there isn't at your company, then start interviewing with new companies and be explicit about what it is that you want to do.
Wishing you the best of luck with this. I know how frustrating it can be to not be able to write code as much as you want...