Thanks.
That said, as a developer in their mid-40s, here's my take:
1. In general, mid-level engineering management jobs (which I consider Manager to Senior Director level) pay significantly more because they are shittier jobs. Sure, there is the rare soul that loves these kind of jobs, but I think most Directors would freely admit they liked their day-to-day a lot more when they were coding. I find that the type of folks who succeed in these roles have basically stopped caring about work so much and are much more invested in their family life. I.e. they don't "love" their job, but they do well at it because they want to make a nice living for their family.
2. I went the senior engineer -> architect -> director -> senior director route, and honestly I hated being a director/senior director. I don't mind so much managing people, and I really enjoy mentoring, but at the director/senior director level you're doing a ton of managing up, which I hate, and there are a ton of logistical responsibilities at this level that I find mind-numbingly boring.
3. So I switched companies and am now a "principal engineer", which I love and I think is my sweet spot. I don't have any official direct reports, but I do a lot of mentoring and general "team management". Given my history, the senior execs at my company appreciate some of my "management-level input", but they know I'm most effective if I'm not involved in tweaking job-level band discussions. To echo another commenter, I do just enough management-level stuff to keep me involved at a high level, but I spend the majority of my time writing code, doing code reviews, and working closely with product management to give engineering input re: new features.
One thing that trips up some coders as they get older, is that on some level they expect to be able to stop learning new stuff, and settle into the role of grizzled veteran. While that is true in most fields, in software, it just isn't. If you are retiring in 5 years, you'd better be learning some new stuff now to be relevant/employable 2 years from now.
But, if you're willing to keep learning, then the fact that you have seen a number of tech trends come and go does give you a perspective which is worth something.
Lastly, you will probably make more money if you go into management or etc. But it's not like you have to be homeless if you stay a coder, so for me that's not much of a sacrifice.
I.e. you can proactively do just enough project management, meetings, and architectural discussions so that people leave you alone the rest of the time to code, but you get enough influence to get things largely how you want them to be (i.e. no surprises/stupid decisions forced on you by a PHB).
It requires some drive & gumption to decide to do these things yourself and then the requisite organisational & social skills to schedule the meetings with people, make connections between teams, start the shared design-doc/slides/whatever, generally get people together and "make things happen" etc, but I've found that "the management" value this sort of mini-manager thing hugely, with the bonus that you are not just a passive passenger on the decisions being made about the work you do, but you are actively shaping it because it is you who is out there driving the agenda by just enough.
I can easily see this sort of role being viable into retirement if I wanted - people seem to really value an engineer who can do this sort of thing.
This path is surely not for everyone. But it's certainly available.
I never wanted management, and don't think I'd be good at it.
As much as I wanted it to last forever, I eventually lost interest in being an individual contributor in favor of guiding others. My contribution was assessed not just on my own output but also on the output of those to whom I gave guidance.
Then I ditched tech completely and split my time between baking baguettes in the country and working as CS teacher.
Life and priorities change. Some fit naturally into a well trodden career path — such as going from an individual contributor to a manager. Some life and mindset changes will require you to find fulfillment elsewhere though. Techie to techie manager might not be enough change to sate you.
The most common pattern though, in my experience, is to switch to management because you want to. To that extent, assume this might happen to you too, and lay some foundations now just in case.
He also made the same amount as the guys who were senior engineers in their 30s. His salary growth basically plateaued in his 30s, after that it was just COL adjustments.
He was perfectly fine with that though. He enjoyed being a coder, got paid enough to support his lifestyle, and liked that he got to shut off at night, since he had no career growth aspirations.
Started in 1985 in Silicon Valley out of school.
Architecture is fine, but most of the time its the implementation and engineering details that prove out the architecture, and not vice versa.
Aim for perfection, as much as you can. There is always that middle ground, try to understand it but always strive and drive your peers towards utter perfection (as you understand it).
While ageism exists in some places, I don't find it to be an industry wide problem.
At the end of the day programming is just coding the correct if/else and working with other programs, and the OS. (Which is really just a program too)
Personally I love it. Building and extending these machines. Learning new ways of doing things, coding for new platforms.
The key part, and this is where it gets tricky is your cost vs value you directly provide. This is why most of those that I saw this happen for never got “high” ranking positions.
When you are an individual contributor, your value is directly a result of the work you do, you don’t get “multiplication” factors by making other folks more productive.
The effective consequence of this is that you are “capped” on how much you can “charge” for what you can individually provide as value to them.
To make this concrete, for a particular task, the value to them may be X. Yes you can do an amazing job and do the job as 5X, but they only needed X. So the most they will want to give you is Z, where Z = X/Y, where Y is some factor >= 1 + a factor. Note the Z will have to account for your “total” cost, which is salary + benefits + the overhead of having you in the company (managers, IT costs, etc).
So as long as you can have X >>> Z, you will always have a job. The trick is either making sure your knowledge gives a large X for your specific niche, or your Z is relatively low.
Hopefully this helps...
This impression is mostly generated by your head, to be more specific - by the social pressure to "make a career" and to regard technical skills as inferior to management skills. I don't think it's real, I saw many old people working as programmers, and there will be many more because there are more programmers among the current 20-30 year-olds, compared to the older generations. Also there's simply many more technical jobs available and there won't be enough management positions available to allow the switch for everyone. And the pandemic looks also like a quite big factor in reducing the number of management jobs (it looks like you often can work as usual without all the managers...).
If you choose to stay on this path, you'll likely make less money later in life. Is that ok? You may also find yourself involuntarily pushed out. Is that ok?
I'm in my early 40s, and think that the probability that my current dev job is the last one I'll have is around 75%. I'm ok with that - I write code how I want, I don't work more than I want, my retirement account already has enough money in it, my kids have fully-funded college accounts, etc. I've been doing various side-gigs for years and am thinking that I'll just continue doing that forever, making low 5-figures money, plus the required IRS minimum disbursement.
Does this sound like the kind of life you want?
Yes, if you work in a company that does some RnD and you have actual domain knowledge and expertise as opposed to being a generic, even if experienced, but nevertheless generic developer. I have many colleagues well into their 50s and some even 60s that work at Intel, NVIDIA, Ericsson etc.. They are not a rare sight over there.
Raytheon is not 'normal' company. And it gets risky when there are layoffs, but even those I know who got let go during a couple rounds of layoffs were able to find other work. I'd honestly rather code then manage people.
Still innovating and contributing as a technical guy. I've made it clear I'm not interested in management.
My problem when in my 50s was putting up with how ridiculous some of the people I worked with seemed to be. Shoehorning in the latest (now obsolete) technology where it did not benefit the end result was common. In the end I settled into being a Java full stack contractor, remote from internal discussions, just getting on with doing a good job. I retired myself from that at 63.
At my age I no longer want to look at a monitor any more and want to think and have others build products, so went i to product.
The pay question is interesting too. You need to work to have a couple million in bank by 45 and the investments give you a lot of flexibility in not chasing senior mgmt. Also stay healthy, employed, and dont get a divorce (1/2).
It was partly that I didn't want to advance my business into larger and larger projects that would have required me to either travel a bunch or hire coders under me, because I found the pocket I liked - a remote contractor/consultant that architects and delivers. And it partly might have been the reality that some of these technical skills are just becoming more commoditized.
But either way, for me it didn't really scale past a particular point. I ended up having a metaphorical rolodex of past clients that were all interested in hiring me as a hands-on-architect-level employee but wouldn't offer contracts, and I eventually accepted an employment offer as my last contract dried up.
I started with php/java, and had previously spent significant energy learning more functional/distributed-computing concepts and Scala/Akka, had a couple of good contracts with them too, but those skills are withering a bit while my current employer is paying me to bone up on React and Node of all things. At least I can influence my team to adopt more FP concepts. I miss Akka.
So, I don't know. As you get older, you get more skilled and senior, but that can top out (in terms of $$ benefit) long before retirement if you're not one of the very rare superstars. And the benefits of being senior are not easily measured and aren't really rewarded - for many hiring decisions, they're just looking for a tech stack - who cares if you're twice as effective on average if they can hire someone average for 80% of your salary? They don't have the counterfactual, they'll never know, they think they saved money. And if you look at entry-level salaries vs senior-level salaries, there's not a huge spread there, not on average. I make maybe 2x-3x what entry level salaries are now, and that's at the top of the salary band for senior level architects where I'm at. And big companies will continue to look for ways to take chomps out of the top end and tighten that range.
And I was always curious and interested in new technologies, methodologies and trends. And I think even outside of SW engineering it‘s becoming the new normal to constantly learn and adapt to the ever changing job market.
So it‘s up to you and I don‘t believe the younger folks are better at learning new tech. You just need a solid SW engineering background and need to invest in keeping up to date.
Seems possible to me, it's very understandable to not want to climb the corporate ladder, and I'd support any of my devs who feel the same as you.
So, yes. Just make sure companies you work for have a strong technical career track.
I think the challenge - and this isn’t unique to engineering — is how you define/value your career progression and growth opportunities. At my company, there are a small number of ICs that can have the impact/get the same pay as a CVP or EVP, but the options are much more limited. And you know what, I think that for many people, management or not, that’s OK. Many people I talk to are happy to stay at the same level and do the same work for an extended period of time.
I’m not like that. I’m highly ambitious and have an internal need to get to the next stage/goal, and the truth is, that probably means I’ll need to assert myself more to take on management — even tho I don’t enjoy the procedural aspect of that — I love to mentor and I’m considered a leader on my team, but I don’t currently have direct reports and honestly, I prefer that. I feel like I can get more done when my time isn’t taken up with the administrative stuff.
For now, I still have a growth path that I can definitely continue for a few more years. And if I’m honest, I don’t worry about being able to remain in that sort of role for the rest of my career. For me, the bigger worry is when that growth path dries up. When you’re high enough up the chain, most of management really is delegation and decision making and setting the tone/direction. The problem is that to get there you have to do middle management, which is where most people get stuck.
Historically what I do when I feel like my growth options are expired are switch teams/companies or even careers. I'm definitely open to that continuing.
If the question is, “can I remain employed as an IC for another 30 years,” then I think the answer is yes. If the question is, “will I have career momentum over the next 30 years if I eschew management,” then I think the answer is a lot more complicated. And again, a lot of people aren’t like me and don’t have the same aspirations or needs.
Now I am back to only-coding, and I love it. I begun learning a lot of new things and I will never stop putting some time on learning more about software development.
Managing is hard, consumes a lot of energy. Maybe some time in the future I will get back into managing, maybe the best solution would be a more engineering role as mentioned in several comments here.
You don’t need to be promoted out of your interest zone or past your competence level. I’d gently question the “everyone” in your stage, as there are fewer jobs available at those higher rungs.
Only regret is that I didn’t find an opportunity that let me retire at 30. I like making software and solving problems.
Looking back I'm happy but feel like going management route makes more sense and I should have been braver. However there aren't so many management roles either.
Probably? There's a number of elder folks at work here in engineer roles, and plenty of children in management roles. Seems fine?
I get to work as a "coder" with a lot of autonomy and without having to do any management type tasks. I attend very few meetings. I'm 0x3A years old and I love still love coding.
[1] I work for the client directly, not for a job shop that hires me out.
Personally I had to take a govt contractor job recently as I’m unemployable at lumbersexual shops.
But then I think of the long days and nights you must still be having at least occasionally and I would think that at some point, one could have a more normal schedule.
Several actually, since there are others in the commments.
edit: typo