Ask HN: Software Engineer hitting 40: what's next?
I like technologies and programming, I want to further improve my skills in designing and developing reliable and maintainable distributed system, make better technical decisions. Also, I want to keep learning and playing with new techs. I am now interviewing for the roles like Staff / Principal Engineer, My expectations for the roles like Staff / Principal Engineer are that while staying hands-on, say for 30%, I will primarily use more my skills in architecture, engineering, and communications to focus on large, important pieces of functionality, technical decisions with big impact, etc. I expect that I would report to a Director or VP level manager, so that I could be exposed to a big picture, collaborate with and learn from a professional who operated on strategic level.
In reality, I am now interviewing for Staff / Principal roles and see a few problems that make me rethink my carrier plans. First, the definion for the most of those positions looks Senior Engineers with a few more years of experience: so you are limited to the scope of a single team scope, report to an Engineering manager, just be a worker at a feature conveyor, just be faster, mentor young workers, maybe get some devops skill. I feel limited in impact in such roles, my borders and carrier are defined by Engineer Managers, who are usually less experienced in engineering and leadership topics than I am. The work is also very repetitive, there is not much meaningful progression, next level. I think those titles are created to cover problems caused by diluted Senior titles: an illusional career progression candy for ICs with some salary increase.
I saw a few Staff / Principal roles that put a very high bar on technical expertise, when only 3-4 percent of all the engineers have such levels, and again usually limited to a lot of coding and a single team scope. They usually have long exhaustive interview process.
An important problem with Staff+ IC roles is that there is a low salary limit as well, and you will face much more competition for top roles. Mostly salaries top at the level of a director of engineering. It is typical for a company to have 10 directors, but only 1-2 IC with a similar compensation.
I want to work hard, and see meaningful progression: in salary, in impact, in respect.
I would like to ask for advice. I believe there are qute a lot 35+ engineers here that faced similar problems and made some decisions for their careers. Now I think to plan switching to a EM track or to Technical Product management. Thank you!
372 comments
[ 20.5 ms ] story [ 1391 ms ] threadAre you sure about that? It seems to me the smaller the community and fewer the resources, the more 'intimate' the competition. Stories of feuds over parking spaces abound.
Last year I went from Staff to Senior taking another job. I make 30k more and do essentially the same thing. If you want more money just optimize for that and stop caring about title imo
I'm considering targeting the C suite given my social, communication, and strategy skills. I would be a little sad to give up coding, but since I do plenty of coding in my free time, I don't think it would matter much.
However this sounds like something FAANG companies have positions for. I just think they will be very limited and very hard to get.
Smaller companies tend to want principal engineers in theory, but as you are finding they can often struggle with how to utilize them properly. Often you see them playing a Chief Architect role or something similar which is more hybrid with PM than pure tech. So getting PM skills could help set you up for this direction as well.
Finally, you have said you did management for a bit before, so you should know if this is an interesting path or not. This is a very different role, so I would recommend you do this only if you have the passion and desire to do this full time. Most principal engineers I know have done management for a bit and gained a lot of skills related to it, but ultimately wasn’t what they wanted to do.
P.S. I'd argue that, for all their advantages within the company, those internal promotions are usually over promotions. People's attachment to that tech stack and development ethos, and lack of experience with any other, means there's an even sharper drop in their value going elsewhere than for outsiders coming in.
Life is always about trade offs.
> you need to climb the EM ladder
No. Many of these companies take pride in being "engineer first" but that's a false claim if engineers are discouraged from challenging the local orthodoxy too much and only high-level execs may do so. It's too easy for territoriality and NIH to set in, or for real progress to be replaced with mere churn. Didn't we learn these lessons with older tech giants like IBM or AT&T or DEC? They had the same pattern of people replacing one internal system with an almost identical one, because reaping credit and promotions that way was easier than fighting for true change. They had the same pattern of people who had learned those habits too well becoming DEs or fellows and using the same "guardians of the culture" excuse to enforce conformity for its own sake. And look where it got them.
Obviously those who wish to challenge the status quo need to balance that with productive work within the existing paradigm, and strong claims require strong evidence (which a VPE is unlikely to have BTW), but that's exactly why there should not be additional barriers. I was not the first or only person at Facebook to observe that the whole thing would come crashing down if not for an ever-changing cast of engineers determined to do the right thing despite the effect they knew it would have on their PSCs. In a true engineer-first culture challenges to the status quo would be encouraged and engaged, but in my experience that wasn't always the case. Corporate ossification wasn't only a problem for prior generations.
The Dilbert dream of no hierarchy (vice a hierarchy made up of engineers) has never worked beyond small companies.
A truly flat org is communism of corporate cultures—-great on paper, a disaster in practice. The dysfunction at these places isn’t because they haven’t flat org’ed hard enough or because of evil, devious middle management subverting the purity of the system—-it’s because the idea is bad in the first place.
Some, yes. Look at those goalposts go! Staff engineers are hired to bring skills and knowledge and perspective not already present. All I'm saying is that they should be able to exercise those assets, and all too often that is discouraged. I'm beginning to wonder if your accusation about disrespecting EMs is just projection of your own disrespect for higher-level ICs.
I’m not sure we disagree that much, maybe over where to draw the line, or maybe over how we talk about roughly the same outcomes. I’m content to leave the discussion here. Cheers.
I'm not sure start-ups are any freer on the dogma, so you'll still run into this unless you find a start-up that matches your own. Worse still -- start-ups have serious pressures that make debating dogma look like not carrying the load.
This might be a smaller factor for doing effective work itself, the number of new faces at all levels at big big companies might offset this. And generally, ppl working under this principal/staff+ engineer usually follow along.
But promotions would require connections to many ppl in many teams.
You need to be of the mindset that you're hired to help the company. The company has a certain tech stack and development ethos, so you're hired to help them with that. Just because you know there are better ways to do it, your job is still to help them do it their way.
It can be possible to get them to change development ethos, but this is a big deal and uses a lot of political capital. If you can really convince most people that it's better, you'll be seen as a senior tech leader for sure. But if you're optimizing for the best performance reviews -- in other words, the incentives the company has set for you -- then it's usually better just to work within the system.
"To be a leader, you need to have followers." So leadership isn't having the best product, e.g. the way Google is a leader in search. It's more like class elections in high school, it's a popularity contest. Your job is to figure out what people are complaining about or advocating for, and do those. Most likely, everybody is used to the development ethos and just thinks it's the only or obvious way to do things. So nobody is really complaining about it.
Mostly I agree with everything you say, especially about needing followers before you can lead, but I think this part deserves more discussion. At staff level (if not slightly before), "help the company" and "do it their [historical] way" are often not the same thing. As I said in another sub-thread, at that level you're hired to bring knowledge and skills and perspective that the org doesn't already have (or have enough of). Unlike lower levels, pulling in some direction is part of the job in this case. I think EMs at all levels understand this and often support it quite well. The problem I've seen is other high-level engineers who never knew anything but the current way and believe that it's generally the only way (except of course for the one part they personally understand and want to change). This sometimes leads to hiring people and then thwarting their efforts to do what they were hired for.
> uses a lot of political capital > ... > optimizing for the best performance reviews
That's the problem. These two should be aligned. You should reward what you want to see more of, and I think people using their best professional judgment qualifies. Relying on the continual presence of people who will sacrifice their own career/financial progress to make needed change (as I mentioned in another sub-thread) is not an effective or ethical strategy. I won't even say whether I believe I'm in that category myself, but I certainly saw other people who got tired of lying down across barbed wire so other people could run past them.
To be fair, at least in Google's case that's not difficult to do, because those technical decisions are grounded in reality and their infra and dev processes are some of the best in the world. And it's not like it used to be that you can't use your knowledge on the outside. The world is largely moving in that direction. In my estimation the rest of the world is now catching up to where Google was 10 years ago.
A bigger problem is activism. You have no choice but to see the most insane, unhinged behavior and rhetoric imaginable on internal social networking website, and that'd irk some, especially older folks who tend to be somewhat more conservative in their views. Nowadays you also don't get to ignore it sometimes (unlike, say, 10 years ago), because some of it is seeping into official company policy. It's unprofessional, and dumb from management standpoint to allow this, but the asylum is run by the insane at FANGs.
yes go for EM-> senior EM -> director.
Coding has no minimal respect, very limited impact and deadend salary progression.
Let me know where you’ve worked so I can avoid these places. I’ve worked for plenty of orgs where tech and those in tech add massive value and impact and therefore are held in high regard.
The "deadend salary progression" allowed me to retire at 40.
> The "deadend salary progression" allowed me to retire at 40.
Again, i made a general statement. Surely you don't think this reflects a general case?
Realistically, the vast majority of "senior engineers" stuck at random company are not really senior engineers skill-wise. Which is why they stay there year after year.
Thats besides the point. Ins't it?
Going into management is a better option for these 'vast majority' of people.
You are at the level where the choice is either become a technical expert, or become a leader. If you want to become a leader, you'll need to put the same effort into your people skills you've put into your technical skills. You'll also need to increase your visibility to non-technical leaders.
It is hard to hire in the bay area, especially leaders who have experience shipping high quality products (systems), so we built the team in India.
Many young companies like us struggle since a lot of the talent (definitely in the bay area) is locked up in the Faangs where poor fiscal/monetary policy in the US has inflated stock part of the compensation so much, that it makes no sense to leave.
So it is hard find principal engineers to do great work because they choose to go to large companies and get poor work for money.
The bar is high for us though, we’d look for engineers with specialized skills (compiler, database internals) and leadership on complex products. The middle is the dead zone (engineers with N years of experience wiring apps)
Not sure about the European market, but maybe you can try to go to a smaller company?
Not really. It depends on the opportunities and luck to meet the right people at the right time. Plus, people internalize experiences with different speeds. So, while in general you're right, you need to account for outliers that lived a particularly lucky life.
Though to be fair, people who got mountains of experience that way despite being young do not, in general, see themselves as next Jobs.
> Many young companies like us struggle since a lot of the talent (definitely in the bay area) is locked up in the Faangs where poor fiscal/monetary policy in the US has inflated stock part of the compensation so much, that it makes no sense to leave.
This is just patently not true. Netflix is just one examples and there are many more. You just want top shelf talent at bottom shelf prices. If young companies struggle to hire the reason is they underpay cash or equity and just refuse to accept that simple fact.
I’m a little younger than you (35), but can see a similar situation nearing for me soon. I’ve gone as high as I can at my current company as an individual contributor. I also was a team lead for a year with four direct reports. I love coding and building things, but I’m really starting to think I need to start making the transition into management or technical strategic leadership before I’m viewed as being too old to be an engineer. I have good social skills, enjoy public speaking, and get along with a wide range of personalities, so this transition wouldn’t be too uncomfortable for me. I can always code or do side projects on my own time.
You have the skills to consult. Pick an area that:
and start writing and speaking about that (even at a local meetup). After a month or two, reach out to former colleagues who might have the problem you want to solve and ask if they know anyone who does.Hiring junior devs will give you the opportunity to mentor but may force you to wear your sales and/or PM hat more than you'd like. You can start down this path by subcontracting and see how it feels.
Essentially no meetings and I design and build stuff all day every day and it's great.
I've watched far, far too many well paid tech workers over the years just go down the road of "Oh, my paycheck is larger, so I can afford this [insert luxury item here]." Cars and houses are the big road to ruin.
You get a taste for $1.5M houses, and $150k+ cars, well... you're going to be working the rest of your life. Figure out early on that a cheaper house (exact value depends on the area) and a $20k car get you around just as well for a lot less money, and you can go far.
An awful lot of industries exist by trying to convince you that enough isn't enough. You deserve better. You have to buy the new one every year... because! Etc.
And it's nonsense, but it's both very profitable to them and a great way to drain out your money without ever realizing where it goes.
Get a grip on all that stuff early, and it helps a ton. I've made tech worker money for many years of my life, and have a 9 year old car, a 24 year old truck, and a range of esoteric and cantankerous motorcycles, the newest of which is around 8. They all do their jobs just fine - we just did a long road trip (2500 miles) in the car (Chevy Volt) with zero issues.
I mean, sure, I could get loans for $100k class cars, but... why? What do they do that my current stuff won't? Well, phantom brake, apparently...
But to your main point, I honestly don't know what a difference Autopilot makes. I've dorked around with an older version for half an hour, and it drove like an autistic student driver. "This is the center of my lane and I will be in the center of it, because this is the center of my lane." "What about the trailer over there, not really parked entirely off the road?" "This is the center of my lane..." etc. It was quite frankly terrifying to see, because it had no awareness of anything resembling the environment around it except the lane lines. I have no doubt it would have clipped the trailer (parked... oh, a foot into the lane, because the shoulder wasn't wide enough for the rest of it) had I not taken over, and at that point, I may as well drive it myself. As I've suggested to various people over the years, let me know when Autopilot can handle a sprayer coming down a two lane highway, and reasonably figure out what to do about a cow in the road, and I'll pay attention. Right now, it seems alarmingly unable to reliably figure out that the road is clear with anything resembling a useful level of accuracy.
However, the point remains: I've chosen not to spend the money on that, which means I don't have to worry about spending money on it down the road. The Hedonic treadmill is very much a thing, and so by deliberately not adjusting my standards higher, I can live on less money going forward. I pity the people I know who have huge salaries for a while and buy $200k luxury cars, because I've seen, in a somewhat close friend, exactly what happens when those salaries aren't a thing anymore for one reason or another. The end result is prolonged pain and bankruptcy, because after you've driven a 700hp German luxury saloon, going back to something cheaper and slower (and more affordable) is really hard. I've enjoyed driving those briefly, but I've never owned one, so that my car is a bit of a gutless wonder cresting mountain passes at 8k ft, well... so it is. I can hold highway speed, I just can't run in massive excess of it. Oh well. Stupid-cheap to run for everything else, low maintenance, no complaints.
I could come up with justifications for spending all sorts of money, if I really wanted to - and my point is that the ability and willingness to not do that is a very useful skill. Humans are great post-hoc justification machines. Always have been, always will be. And knowing that, working around it, etc, reduces an awful lot of stress in life.
You claim a car that will more or less stay in a lane is worth $100k. Well, OK... I spent not an awful lot more than that on a house and have been slowly upgrading the property over the years as we have money. Though I might have to drop a chu...
I know people who have far more money sitting in their driveways (or garage, though having a garage clear enough for cars is a weird rarity anymore) than our entire property, including house, is worth. They claim it's worth it, and I'm not going to argue, but I could quite literally retire on the value of their house and car fleet. When I met most of them a decade or so ago, they were in the similar boat as me, vehicle/salary/etc-wise. They just inflated their lifestyles as their incomes rose, I fought that (and married someone who is far better than me at asking "... but why?" questions about anything nonsensical I suggest). I'm not retired, but that's halfway because I enjoy my work and halfway because I have plenty of things I can do that involve wads of cash at various points (the next one is buying a backhoe for a couple years of work on a greenhouse - yes, it makes sense to buy an old one, run it for a few years, and sell it, because they hold value very well at the age I'm looking for - it's a couple year rental for the cost of maintenance and maybe a set of tires).
My point is simply that if you can avoid those traps, you really don't have to worry about "How do I be a tech worker in my 50s and 60s," because you've either retired, or are near enough to retirement that you don't have to earn $500k/yr to support your lifestyle. It's a trap. There is no income so large you can't spend more than it.
Well... if the money is a means to an end, and if that end is highest quality of life, there's a good (but obviously personal and highly subjective) argument that optimizing around salary doesn't necessarily translate into max quality of life (though it sure helps to some degree).
But yes, the gap itself can be quite large but it deserves some context too: IME the large companies do start to pay absurdly well as you get higher up the chain, but startups still pay >=5x the US median income, so it's not like you're choosing an impoverished life or anything.
And if you can't get a startup to pay as much as you'd like but you do believe in the company, then use it to your advantage and negotiate for a much larger slice of the equity pie and/or start your own company.
Just food for thought of course.
Yep.
> My experience of a non-engineering-led startup is that there are more meetings than in a big company.
Ditto. I'm not 100% sure, but I think it may have something to do with the fact that meetings are often the anxiety outlet for people who don't directly produce value. (Oof, that sounds harsh. And yet...)
They are great late stage careers and typically involve a lot of architecture and consulting type work.
Over many conversations he conveyed to me that the technology industry is a young person‘s industry. Once you hit 40, you’ve got to find a way to progress to owner, senior management, or do something else.
[1] https://news.ycombinator.com/ask
https://www.reddit.com/r/cscareerquestions/comments/o6d481/h...
These are commonly used job titles for very similar roles, where you're leaning much more towards architecture and design, but some degree of hands on is still a must.
Why is reporting to someone less experienced than you undesirable?
> ...
> Unfortunately too often I’ve seen companies pull in “managers” from unrelated fields and/or with little to no technical experience.
I haven't seen either of these, so my comment was based on that. In my experience, first-line EMs are always senior engineers who choose to take the manager career track. In such firms, and only in such firms, I don't find anything wrong in Manager Is being equal to senior/staff engineers.
What I am calling out, if you can call it that, is that senior engineers refusing to report to anyone less than C-suite or VPs is doing the profession a disservice. People manager don't grow on trees - they have to grown and trained within the cohort of people practicing the profession. We need to collectively train these junior managers to be able to work with more senior engineers.
Senior engineers who don't want to take on people management duties will have to accept that there is a likelihood that they will eventually report to someone less experienced in some facets of the profession.
Insisting that the company find a people manager who is deemed worthwhile for you to report to is spreading the stereotype that senior engineers are difficult to manage, resulting in ageism in hiring.
> it's a bit odd for principle engineer to report to senior engineer/manager-in-training, no?
No. This is where, I think, we disagree.
In most startups, people report to a founder who is CEO-in-training. There are so many examples of these, that I assume that reasonable people don't find that odd. If that is the case, why should it be odd that a senior engineer reports to someone relatively early in their management role (but not new to technology profession)?
I look forward to writing code and solving interesting long term problems again.
Did you learned C for the new role or had experience working in embedded ?
Did you had to grind leet code for interviews ?
These interviews were thankfully of the more constructive kind, I didn't do a single test.
In my experience, this isn't what I've seen staff engineers doing. The expectations you laid out at the top are much more in line with what I've seen staff engineers doing.
The staff engineer's I've known are basically the technical version of a VP or a director. They're often not focused on individual features, but rather new products or large scale architectural changes. The mentoring they do is often mentoring strong developers into future leaders at the company.
The staff engineers at my current company are currently focused on how to integrate multiple products where each product has three to four teams of engineers working on it. At a previous company, I can remember them being focused on whether we stay with on-prem hosting or move to the cloud.
I'm not sure where you're interviewing, but to me it sounds like they may not be big enough to need what I would consider a staff engineer, but they just have seniors that they wanted to promote.
I’m so far 0/10 on interviews. The bar is so high now and the expectations of perfection in a 45-60 min interview are so ludicrous that I can’t find a job yet. I’m LeetCoding about 3-4 hours a day, focusing on medium and hard questions. I went to sleep last night at 1am after struggling to understand a hard-level LC question that took me about 2 hours to work through.
I know the drill, I’m not shirking away from studying. I’ve conducted hundreds of interviews myself. I’m old enough to have been through every single interview style that coders have had to endure since the Microsoft interviews of the 90s. But the sheer breadth of knowledge you need to know, plus the expectations of making perfect decisions in a limited amount of time is utterly ludicrous. It’s like people have forgotten that you can’t design Twitter in 45 mins or think about every single possibility. or that some of these coding questions that are being asked are PhD level problems, so if you’ve never seen it before, it’s going to be pretty hard to solve. Or that people can make honest mistakes and get on the wrong track for 10 mins out of a 4 hour interview, and then you get rejected. Or people also seem to forget that the interviewers themselves are so inexperienced at interviewing that they confuse their candidates with poor instructions, or they expect the candidates to guess what they themselves think the right answers are.
The most frustrating part is when you’re given a relatively “easy” question but you go down the wrong path, figure out your mistake, and then correct it and solve the coding question in the allotted time , and then be told that I “didn’t perform as strongly as they hoped”.
If I were told “study X,Y and Z. We will test you at LC hard only on this.” I could bang it out of the park. But I literally have to know every single topic in CS and every level. LC literally has thousands of questions. My brain can’t remember all of these solutions. I’ve been studying for 2 months solid and finished only 200 LC questions because some questions take me all night to understand and I’m exhausted.
The biggest insult is that a company I worked at before needs me to go through a full interview loop even though I have great performance reviews only a few years prior and my code is still running there. Not that I would return, because I left that place for a reason, but the idea that an interview is a better judge of my abilities than the years of performance reviews is completely mind blowing to me.
Everyone knows that interviewing is broken but it’s not broken. It’s mentally ill. It’s crazy. Interviews don’t test “how good of a performer will this candidate be?” It’s “how well will this person do on these random questions that we don’t know if it actually correlates to work performance.”
I was on an interview loop for my company where someone had a GitHub. When we suggested that we could check out their GitHub to see their coding, someone objected saying that we don’t know if that person actually wrote the code. The confidence people have that on-site interviews produce the best example of how smart people is a reflection of how insane things are.
Expectations are far too wide and as a candidate you need to know literally everything otherwise you won’t “perform strongly”. But it’s really just random chance. Coding interviews should be longer and less random. Give time for the person to mess up and get back on the right track. Isn’t that what you want in a co-worker? Systems d...
One reason for this is that large tech company have horrible diversity metrics and are trying to avoid getting sued for discrimination (bot just by candidates but also by the government). If every candidate is judged on the same robotic criteria then that makes a discrimination claim harder. A second reason is to avid managers building fiefdoms or employees having much more loyalty to their manager than the company.
Startups have a wider range of interviews but they also pay much less. Although you could get lucky with an late-stage startup that hasn't fully solidified it's interview processes yet.
Last 5 places I interviewed, 2 didn't ask LC at all, and I still failed at 4.
Also, for LC, you should work on it for 15-30 minutes and then look at the solution. It's the most efficient way. If you don't even understand the task, just don't do it. Similarly, sites like codeforces allow you to group tasks by algorithm and to sort them by number of people that solved them (and you can look at the solutions). This also simplifies the knowledge acquisition.
As for being a principal/staff engineer. This is all new to me and I have no idea how much these individuals code or what exactly they do (although I'm currently starting a principal engineer role in a company of around 300 engineers). So I assume either I'm silly or the title inflation is rampant. Although, the interview required operating systems, networking, algorithms, hardware, people skills, low/high level programming language knowledge that I guess I have. The questions were: "How does a UI library work?", "Describe this networking protocol?", "How many syscalls are triggered by npm install?", and whatever other question that they ask you to go as deeply as possible as you can.
The saddest part for me is the companies that just throw you a take-home exercise without even bothering to phone you first. You apply to a certain position and then, say a week later -or sometimes more-, they simply send you an email with some programming task to develop.
Frequently they are not small tasks but full projects which require multiple days of work. Just a few days ago: delivering a full web application to manage "map layers", with a DB, a back-end, and a "user-friendly front-end with a nice design"; testing included and all put into Docker containers, and a working demo somewhere published automatically from the repository.
And I mean, it's not just the assumption that you will spend however long it takes you on this for free, but that you will do it without even having had a simple conversation with them before.
----
Anyway, what I really wanted to say was: Good luck in your search. Stay sane.
I can get everyone but the least skilled interviewer to pass if I provide enough assistance in the interview. Similarly, I can fail anyone but the strongest algorithmic candidates by being unhelpful in the interview. The interview allows enough "smoke screen" that I can basically end up passing/failing in a manner that is pretty detached from their "objective" algorithmic skill.
Just a theory.
The Mathematics Department of Moscow State University, the most prestigious mathematics school in Russia, was [around 1975] actively trying to keep Jewish students (and other “undesirables”) from enrolling in the department.
One of the methods they used for doing this was to give the unwanted students a different set of problems on their oral exam. I was told that these problems were carefully designed to have elementary solutions (so that the Department could avoid scandals) that were nearly impossible to find. Any student who failed to answer could easily be rejected, so this system was an effective method of controlling admissions.