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!
I feel like the ability to work from home in my sweats on simple problems as a senior engineer and receive a 75th percentile income relative to my neighbors in one of the best neighborhoods in my new home state is the most societal progress I will ever experience in my lifetime. I'm a lifelong bachelor by choice. Why bother striving for anything career wise when I am on track to retire comfortably to focus on my mostly free hobbies no later than the age of 50? For a house with a 3rd bedroom I don't need?
No, best to appreciate what I have and leave the striving for the next generation of engineers.
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.
Essentially no meetings and I design and build stuff all day every day and it's great.
It's true that IC roles are less common at this level but they are definitely out there, especially in big tech. In the US anyway, it's basically a 2-tier system: $700K+ total annual comp or sub-$200. I didn't discover the former even existed outside the Bay area until the last few years, but boy am I glad I did. If you love what you do, in the right organization you'll have autonomy, creative freedom and potentially influence org-wide. And I'm not gonna lie, the money is great. (Side note to my US-based friends: at the high end, Salary.com, GlassDoor, etc is absurdly low). To the OP: if you're feeling constrained by your existing environment, consider looking around. The last 2 companies I interviewed asked virtually all design/architecture & leadership questions, no "leet code". There are definitely lots of opportunities from FB, Google, Apple & Amazon for PE roles in Europe so consider looking around. But that all assumes you fundamentally enjoy what you do (not talking structurally, actual system & technical leadership — the building & shipping part). I work hard at times, but honestly these days I could do most of my job in a couple of hours per workday. I wish you the best.
I too, just want to build things—too many legos as a child (and adult), I guess. I work at a smaller company where the software side is pretty small (5-ish), so I enjoy a huge amount of autonomy.
Having interviewed around a little, I find a lot of places that have a hole, and they’re just looking for a peg to fill it.
I already filled the hole at my current company, and wpuld be leaving a much larger holder if I were to leave.
My problem is that I’m somewhat anxious financially; a number of people depend on me for the salary and benefits I bring home. So while many people tell me I would be a strong consultant type, the insecurity frightens me. I’m good at at inventiveness, initiative, entrepreneurial behavior _when_ it’s under the umbrella of someone else’s money and I feel secure.
I’ve graduated to tech lead, semi manager, three times, and never really liked that. I just end up frustrated with those that I’m responsible for. I work better in a “we’re all dribbling the same ball” context.
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
Here's the deal, you're 40, you write code for money, and you're asking what's next.
What's next is that your brain is going to be slowly deteriorating, so yeah there's going to be some choices.
Like do a job that doesn't involve writing money for code, do a job that involves being a people person. One of those. I couldn't do that. I don't "get" people, maybe you do. Good luck with that.
Another choice would be to go back in time and invest money when you're in your early 20's and none of this is an issue. Time machines are great. I'm a time machine. I came back here to tell you kids to invest their money in index funds so that half a century from now, everything is going to be OK. It's going to be beautiful.
People hate time machines.
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.
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?
Ignoring titles, the problem with high level engineering roles (beyond their difficulty) is finding problems that meaningfully grow you technically as you can reach a practitioner within the field. These roles are rare because most businesses don't actually need nor benefit from them.
The other challenge is that the title inflation really messes with people. For example, a key aspect of higher level engineering is not just technical but understanding organizational shit as well. For example, it's now just about execution but planning and thinking about execution in context of 50 to 1000 people.
Take the Amazon curve: SDE I - 0 SDE II - 1 (an intern) SDE III - 5 (a team) SDE IV/Principal - 25 (a big team) Senior Principal - 125 (an org) Distinguished Engineer - the company
Using the people scale and how much you impact an organization lets you know where you are within the FANG universe (and the FANG generally are in alignment with titles and pay-bands). This represents another challenge is that being a high level engineer requires a tremendous amount of trust from management to influence everything under their empire.
What I recommend is scoping the places where the frontier is being pushed which align with what you want to work on. Second, test the waters if they have a technical hierarchy which can support you. Third, put the problem first rather than titles/comp and be willing to build trust within the organization. Influencing over 5 people requires tremendous trust.
The unfortunate aspect is that the duality of building trust can make it exceptionally rare to achieve that level. It's not a trivial level because it requires both the technical AND people skills. The only way I've seen to short-circuit it is to be absolutely a beast on the technical front, and this can be done via an open source project of exceptional merit OR building a company.
Of course unless you were terribly underpaid or you spent all the money on whatever...
I am going to be 35 this year and I was working on FIRE - while I cannot really drop the job for the rest of my life. I think I have enough, like flat with no mortgage in quite OK place so I don't have to spend most of my salary on renting. Now I am looking into cutting my hours, because with my current rate working 4 days I still could save money.
I will probably stick with current company as long as possible because I hate interviews and then if I will have to I will take whatever job will be there if things go south.
But that is me I like low fuss life, keep it small and steady. Happy that I can get some beers over the weekend and play with some raspberry PI. No need to get a sports car at all :)
My point is, I worry less about my "career goals" and spend my time learning about my employers and how to produce high value for them, whatever form that takes. I have never worried about or feared for my job.
Yes people will tell you can be pricipal dev or whatever but the pyramid narrows quickly, its only for people who are really good tech and people wise. That might be you but most devs assume they'll get there when they wont.
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.
I switched to a cybersecurity startup in February 2021. I was Engineering Manager. I thought I could call the shots for all engineering decisions and hiring of software engineers. I was completely off! Not only did I inherit 2 sub-par engineers with poor work ethics, the CTO did not have a clue on what he was doing. It's a long story which I can elaborate in my blog; but I left in July 2021.
What I concluded after this experience, in terms of salary, impact and respect....all this doesn't really matter. I think the most important thing is you got to love working for your boss. The boss is the most crucial factor to consider. A good boss will be able to provide you the 3 things you mentioned. Titles don't matter either. Just make sure you aren't underpaid for someone with your experience level, then all's good.
One more thing in my list of must haves: the company you join must have people that you consider way smarter and experienced than you are. This sort of environment allows me to learn and upskill myself.
I chose to keep being a software writer, and lean into mentoring. I'm 50, and don't have trouble with respect or salary. I don't know European employment law, but over in the states it's common for higher performing devs to shop their skills around every couple of years to find a better salary.
- Be an expert in a single domain, eventually up to the point where you are pushing the state of the art of that domain forward with conference presentations etc.
- Be someone who takes a broader perspective on efforts and ensures that sound technical choices are being made and organizational/ technical roadblocks to getting those technical choices implemented are resolved.
Either way, your role is as a force-multiplier, and you are having a broad impact on the org. Cross-team leadership is perhaps more assumed with the second role than the first. But it is rare I think to come into an engagement having built up the networks you need to operate at that level, so a year spent as a senior engineer and building up those networks might not be so bad if the fit is right.
Hope that helps!
The hardest part I’ve found being over 40 is mustering the will to prove value. The older I get, the more time I have to spend rebuilding reputation whenever I enter a new company.
I think the best advice I can give is find a company you won’t mind being at in 5-8 years so you can really learn how things are done there and can affect change.
You seem to have the mindset that you can receive some form of personal fulfillment from your career and that your employer is there to provide that to you in return for services rendered.
In the perverted corporate world in which most companies operate, it is in their best interest to keep you dissatisfied for as long as you expect that fulfillment or happiness can be achieved by working for them.
If you want salary, impact, and respect then you should probably continue on the management track but you'll have to accept that the impact and respect components are a fabrication.
So if you love creating stay technical, if you like dealing with management issues take that route.
I look forward to writing code and solving interesting long term problems again.
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.
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 design questions should be a long conversation about building systems, not just “what points did the candidate mention that I was expecting them to.”
Coding interviews are more of a hazing than indicator of future performance. And as more people study, the bar gets higher and higher until it will reach absurd levels. I have staff or senior staff level experience but I’m applying for E5 level positions because I would rather get into a company and work my way up than try to come in at a level where the expectations are mentally ill.
However this sounds like something FAANG companies have positions for. I just think they will be very limited and very hard to get.
I am in your age demographic. My current title is simply ‘Engineer’ without modifiers, but in the business hierarchy I am on the same line as VPs, so I interact with them as peers; and they are. The Directors, Managers, etc. that report up to my peers do not take orders from me, but I can override their decisions on concrete technical matters.
What I’ve found is that in a non-startup (ie corporate) environment your row in the org chart determines your level of agency, not the title as it appears in your HR file.
https://www.reddit.com/r/cscareerquestions/comments/o6d481/h...
I know I'm underpaid for my experience and skills, but I try and be a leader in my field, and try a train as much as possible. As others have said here, the extra time I have at home gives me the energy to work on other projects (hobby, etc).
This was my experience anyway. Others may have seen things differently.
For your first 15 years you can be a body, moving up the ladder doing what they want and getting better people will hire you because engineers are in demand. But after 10 years you start running into diminishing returns and by 20 you really can't grow that way. Note that this is about the time you hit 40, but that isn't about age.
At 40 you can hang on, your raises should (but won't!) Track inflation ,but no more. Many do this because they are happy, or don't want the next step.
Your other option is to be better in other ways. There are many answers. You can be the one who mentors all the junior engineers. You can join the relevant ISO committee and write the standards your company will implement. You can be the expert in something hard that your company does (I'm the goto guy for our start all the threads in sequence without deadlocks scheme) you can be the person who goes to all university events telling people how awesome your company is. You can be the person who introduces new technology (be careful, I know a company that spent billions on something that resulted in better quality but things that took a week in C took 2 months: the champions of that are gone)
There are hundreds of others. You need to figure out what will get you recognition. Be careful, I know of companies that didn't have a problem because some unrecognized senior person did the work, they let him go for not being productive in things that mattered, a year latter there was a whole department doing what he was doing. You need to ensure someone is tooting your horn.
I ask because we have (what I believe to be) a very interesting engineering problem to solve but a lot of the recruiters out there will plug the hedge fund and fintech jobs because those guys are willing to pay absolute top of market and therefore pay more in commission to the recruiter.
I wouldn’t get caught up thinking about titles because they mean different things to different people. There’s really interesting work out there for someone of your experience and increasingly more interesting startups in the Uk. You just gotta look a bit harder for it.
We are searching for a ‘principal software’ engineer to join our team. I think we have a different engineering setup to many startups because it’s very multi-disciplinary in nature: plant science, ml/optimisation, software engineering, sensor/embedded tech. So our idea of a principal swe is someone who spends some of their time as an ic and some of their time helping others to upskill in software engineering - this could be junior swes or senior plant scientists. I know that for other companies ‘principal engineer’ could be a product owner role or it could be a chief architect role or it could be more of a floating mentor.
> Now I think to plan switching to a EM track or to Technical Product management. Thank you!
I think you should refine a bit on what you are really looking for. Roles with 30% coding and a TPM role are extremely different. Is the most important thing to you large scope? Deep technical work? Or a high compensation? All of them are available, but potentially at different companies and not all at once. At Amazon a principal engineering role usually comes with the huge scope you described - but many engineers on that level will not be 30% hands on coding due to other responsibilities taking up time. I heard its a bit different at the other big companies, where the scope might be more on the team level as you described. For startups there is likely nothing in common.
If you like technical work and think you add a lot of value there - you might want to stay on this path (whether its the wide or deep one). The management path will be very different.
One thing you might want to consider for the principal IC path is that it will require significant investments to stay on top of this role: Technology is constantly changing - we have new programming languages, new tools (containers), new environments (cloud), new paradigms (devops), etc. In the most senior roles you will always be expected to be on top of those things and know more about them than the average senior engineer who you can guide. So I think you definitely should bring in a far amount of curiuosity to learn new things at a very deep level to keep staying successful.
My advice is to think about what you’ve enjoyed most in the last twenty years, and optimize around that.
My core take-away is: create value and more around laterally in the company. You will gain valuable knowledge and you will be respected.
There are a number of companies where there are older folks in senior SW roles if you look for them. I find that it's harder to work with younger folks as they are less likely to have families so have this mentality to work longer and then go out on the town. Not interested.
Two euros.
They are great late stage careers and typically involve a lot of architecture and consulting type work.
Context, I am also a FAANG engineer earning FAANG salary but still faced with the reality that in order to increase salary (more so due to inflation) I just have to Leetcode and re-interview every year to renegotiate.
Until what point do you stop Leetcoding/re-interview every year? I think at some point I will hit a salary plateau, what to do after this? For an average (majority) of FAANG engineers, what are their salary plateaus? I probably need to just aim for that and then stop Leetcoding/re-interviewing after that.
> 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
At some point I felt that I had just two options on my table: - Stay in the company as technical director to continue growing but with limited expansion possibilities. Write less code and make more boring meetings basically. - Continue doing more coding as senior developer and be happier with my life without all the meetings, but that would mean even more limited growth possibilities.
So like in most things in life, in the end I found out that there are not just 2 options, but thousands. In my case the best solution I found was keep working with my daily job to have the stability that makes me feel "safe" when I go to sleep, and at the same time spend most of my free time in doing what I like the most: coding on some project that is 100% mine and where I have total control over.
I tried this approach a few times with some SaaS projects and even if they didn't became unicorns and some generated barely 30-50k$/year, they were totally worth the effort in creating them, because on top of the money, the most valuable thing you get in return is to learn how to create a project from start to finish, with all the non-technical components like marketing included.
Over time I found out that you'll need to be lucky enough to find someone good enough like you on the design and marketing side of it as well, but if you finally find the right team, then it will become 100x better than working on any company. Both financially and in terms of happiness.
Of course it's not a recipe that will work for everyone because you really need to be passionate about something to spend most of your free time on it, and you will risk of getting burned out, but from my experience is definitely worth the effort!
And the most important part of this, is that you will have the ability to jump into any technology you want!
In my case I felt like the web2.0 was getting pretty boring and repetitive for me after doing all the SaaS projects, but now I'm about to launch a web3 project that I built within 5-6 months without any prior knowledge of smart contract in any way. You can't find a job that will give you the opportunity to make such drastic changes in your career and will allow you that level of freedom.
You just need to make it for yourself!
My ideal working environment is a small team of very experienced/talented engineers working on greenfield projects. I've had that a few times in my career, though not currently.
My mother is well into her 60s and still working as a software engineer (also mostly remote now). She declined promotions that would have taken her out of coding over the years - so we're at about the same level of seniority now. I imagine she'll keep working as long as she's able - she seems to enjoy the work more than I do.
I also just turned in my notice last week. 12+ hrs are the norm, I have to "tattle" on other VP's who want to promote their own agenda.. burned out and not present with my family.
Will happily take a pay cut and work a "9-5" with late nights at my choice.
If you stay technical, work on 'building the brand' and team-building skills. You can't be the 'super tech' worth the huge paycheck-- nobody is that good. Period. It's the team builders that get big things done.
So write some Call for Papers submissions, work on giving great technical presentations, and look for any way to add value to your projects. (Many of these will involve gathering and rendering metrics. Look for valuable metrics nobody is reporting!)
Good Luck. As you grow out of the 'IC' role, you will have to find new ways to get job satisfaction. They are out there-- just different than 'working code' all the time.
The problem is that i originally did a PhD in Computer Science (Machine Learning / NLP) in 2010 and had papers at SIGKDD, ECML etc. So this business software thing is terrible boring for me but in Germany it was reallly hard to find interesting - well paying positions - at that time in this field.
And now i have no idea what to do next, because i fear that all my experience as a “Development Manager“ will not be accounted for if I apply somewhere in a more deep technical role like FAANG.
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.
I realise it isn't for everyone, but there's no shame in acknowledging that software engineering is sadly structured to be a field for mostly young people, and moving on to greener pastures. I mean, I can still enjoy programming, just as a hobby instead (which is what it started out as anyway).
First: I've been working in tech for ~20 yrs. First 6-7 as an IC, then 8 as a dev manager, then 5 as a senior IC (I'd grown weary of middle management and wanted to have fun coding again) before beginning the latest job search.
Of FAANG I interviewed with 3 - Amazon, Netflix, Facebook.
Amazon's process was the least worst IMHO. Programming questions seemed less gotcha, less Leetcodey, altho major negative demerits for forcing candidates to memorize Jeff Bezos' "leadership principles" and demanding they share canned anecdotes from their career how they demonstrated them. The biggest problem however was the hiring manager was the very last interview and he ended up being an aggro jerk with little or no visible social skills, the kind of horror story you read about on HN. Shouldn't he have been the first? No offer and I would have rejected one anyway, especially because their comp sits behind a 4-year vesting cliff.
Netflix was odd: I applied for a senior full stack role only for the hiring manager to tell me mid-interview the job was actually a front end role, dashboarding Netflix's internal tools. Why misrepresent it then? They ended up ghosting me, but no more front end for me, ty.
Facebook was by the far the worst, and I interviewed 2x for 2 different roles. YMMV but 2 Leetcode q's read off by bored, mid-level employees. Not a single question about anything else. Maybe that's a fine process for college grads but for someone with decades of experience? As a former hiring manager I honestly found it comical.
I interviewed with 6 other companies before landing at my current gig as a Principal Engineer for a global media company. None of them made me offers but I wasn't too passionate about pursuing them. Often I didn't believe in the business model (e.g. "AI to solve customer support!", "ML for more accurate real-estate appraisals!") but maybe I just sucked too? Idk.
When I interviewed for my current role my hiring manager seemed really smart and had 10+ yrs of experience beyond mine. He also gave no coding tests (!!) and instead just had me speak to a lot of other senior people.
I'm six months into the role and so far, so good. No job is ever perfect but I'm happy I made the switch, and I feel like it's a good pathway into an executive role at a startup or some other company.
My general advice would be to keep at it, be patient. In some ways it's just a numbers game. Or maybe more like dating, where you can go on 500 bad dates but number 501 could be the one. Don't take an offer just for the money if you don't get a good vibe from the people. Also a huge salary becomes less and less important the older you get, find something that makes you happy.
Good luck.
You should be the best possible direct report, one that helps your eng manager learn in the best possible way and which sets an example to the more junior ICs in your team and org. You’ll probably begin at the very beginning, by letting them close the most senior hire of their career to date, as a hiring manager.
The flip side: this is largely useless in a big org. The flip flip side is that it is invaluable in a high growth environment.
I am a technology principal in my part time job and it’s very rewarding when I’m not playing senior manager or director.
My primary career is largely dead. I am a JavaScript developer and I have no interest in tripping over beginner things and framework nonsense. I would rather program and focus on building better products in a world where most JavaScript developers are focused on tools and how to write code.
I spend a lot of my time thinking about open source and decentralization.
yes go for EM-> senior EM -> director.
Coding has no minimal respect, very limited impact and deadend salary progression.
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.
My advice as someone in a similar life phase is to play something different. I understand you want money but all that chatter about roles, levels,... It bores me to death, which by the way is not that far. Pick something you actually like because most probably you are not going to get much further.
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.
I think lack of definition, or the perspective that an advertised role is just senior+ software engineer, is probably fairly normal. Unsurprisingly employers do a bad job of describing something that ideally ought to be flexible and self-directed. Our ads would probably look a bit like this too, but the jobs themselves are varied. The question should be whether you can actually do what you see fit, in role. You will need to explore each specific opportunity to try and fathom this.
I think you could do with some of that flexibility yourself though. You have quite a specific ask (who you would report to etc) and I don't think all of it is material to enjoyment. Given that your other options are doing something that is specifically *not* what you describe, like line management or product, I think you should ask yourself what you're willing to compromise on here in order to be happy.
I know you're talking about your ideals but it also seems to me to be a rigid (and may I say somewhat cynical) idea of what value you might bring or be able to bring. Try thinking about it as more responsive to a problem space with an element of self-development. I feel like at present, if you talked about it on these terms with an employer, you're presenting them with a set of assertions and constraints - 'I want to do architecture whether you like it or not, I will not do mentoring'. My role has presented me with new aspects which I didn't know I liked, and it's helped me develop as a leader and particularly an empathetic leader.
My job is mostly about figuring out how I can provide the most value right now, and then doing that, and it's constantly morphing. When I started, I decided the best use of my time was firefighting and putting a neglected house in order with some big technical rework pieces. Now we have a junior-heavy team and until we have a critical mass of seniority, it's mostly skilling them up. There's lots of strategy and a little architecture too but there's only so many hours in the day.
I like my job a great deal. I keep doing this line of work because I like engineering, problem solving by whatever means, improving the engineering culture, and helping people. You could have this too if that's what you want - don't let your own barriers and conditions prevent it.
Can't help you with compensation though - I definitely don't make a huge amount of money. Doesn't really bother me.
I think the easiest thing to do (if money isn’t #1 priority) is joining a startup. Gives you the most breadth and ability to impact and learn.
And 18 years experience is a lot. Something wrong with the companies you interview for?
What does a welder, carpenter, or plumber do when they've hit 35 and mostly mastered their field? Answer: come to terms with the fact that their mastery is not very much in demand, they will never make more (inflation-adjusted) than they do now, and either plan for retirement or find a new job (usually management or small business owner) where their hard-won skills are mostly wasted. It's not that there aren't super-hard welding jobs that only a master welder can do; it's that master welders outnumber those jobs by 1-2 orders of magnitude. Almost all of the welding can be accomplished by almost all of the welders; once you're good enough to do it, that's it, you're topped out.
But software is totally different from the trades, right? I don't think so. We imagine ourselves to be more like doctors and lawyers because we make six figures and have conferences and work sitting down. But I think that's an illusion; we're a trade, and the only reason 45-yo devs make more than 35-yo devs is because our field has been growing in size continually for its entire existence. 45-yo devs demand, and get, higher salaries and titles because the industry would rather pay them extra than make do without them. But, like welding, almost all of the software we need can be written by almost all of the developers. (If you think this is wrong, get your head out of FAANG/AI/ML land and think about the legions of programmers working at govt agencies and non-sw corporations. How many mortgage application portals have we as an industry produced so far? 10,000? 100,000? And yet, we keep remaking them every two years. That's not art and it's not science, that's a trade.)
Point is, software titles work the same as in other fields until you hit III, and from there they veer off in to crazytown where there are no rules, because no other trade needs to pay a 45 year old significantly more than a 35 year old. (And you've probably already noticed that even software tends to lose interest in people once they get past 50. If the size of our field ever stabilizes, that number will only get lower.)
So, there is no real answer to your question. Principle/Staff/Architect means different things at every company because every company is handling the "how do we keep this old-but-still-good programmer around" question differently. Some program a lot, others don't; some are tied to one team, others float; some mentor, some sit in an office and read research all day, some kind of fuck off and do nothing beyond attend meetings and dispensing wisdom. It's all over the map and there's not much you can do except apply for a bunch of high-paying jobs and ask a lot of questions during the interview.
Right now, I work for a failing old school tech giant. I am have comfortable position with very good wok life balance. It seems you can easily not do a thing at work. No one wants change. Most of the company is made up of middle managers and non-productive compliance approvers. Seems like a great place to work for unmotivated. I have my moments where I want to accept company’s culture and move into middle management. Just coast as much as I can. But then I get frustrated and feel like I did nothing all day and feel like parasite on society.
So I apply for other jobs, sometimes at other large tech companies but talking with their developers it seems they are not much different from my current company. Then I apply at startups but I got family and I will not work more then 40 hours a week. Then I apply at FAANG or FAANG wannabe companies and I can never pass Leetcode. Also I did spend a few hours studying for Leetcode but I have family, I am not going to take time away from them to study something useless.
And yes my family, I love them but things are not exactly how I imagined they would be. I would love to live near beach and have more outdoors life. My goals were live modestly, retire early, read more, watch less TV/web. But my wife don’t want to make any big moves. She wants to live in suburbia, have a big house, vacations instead of live on the beach, etc.
When I turned 40, I seriously started to think how I can have more fulfilling life. It was either have more fulfilling personal life or more fulfilling work. I cannot change my family, so only option is to change work. So I am on quest to find more fulfilling work. Not more money but higher paycheck would be nice. I would retire once we have 3M in 401K.
For work, I enjoy working on interesting programming challenges but not so much that you find in typical large corps. Also programming is fun when working on my projects but not so much when working on other’s projects.
So after reading so many comments here, I think I want to transition to freelancing and consulting. Yes that means constantly interviewing and looking for next project. But I might be able to work on more interesting projects, control what I work on, avoid office politics, and take 3 months vacation whenever I want. Also it seems this may pay pretty well especially if I niche down.
The other thing is programming while enjoyable is still not as much as fun as my hobbies or when I had some. After thinking more about what I can do with my kids, I am looking into photography as a second income source. Photography is a hard field to make money in. But it is funner and it maybe more fulfilling than programming. I am building my photography portfolio (Instagram) and hopefully one day actually charge people for it.
I think combination of portrait photography and programming gigs should cover middle class lifestyle in suburbia, and give me more fulfilling life.
Again I don’t know if it is a good plan or even if I will be able to quit my job.
However, most of these "ageism" or "life is over after 35" things are absurdly doom and gloom. So I'd like to offer a different perspective that may be helpful to younger folks.
Hitting a plateau in your mid-40's is not... that... bad! First and foremost, I have two children in middle of their formative years, and that's where my focus primarily lies today. Maintaining a healthy marriage with my spouse, and avoiding the mistakes of my dysfunctional boomer parents. On evenings where my son has hockey practice and my daughter has dance, and so me and my wife have to work together to get them both to their respective things, I am simply NOT going to bail and make my wife have to choose between them because something came up, or I'm having to work the same hours as the VP's and C-levels in order to fit in. I have finally achieved that mythical "work-life balance", and I enjoy it.
Secondly, even if you lack the clout to DECLARE what a company's tech stack is going to be, you can still find yourself learning new tech stacks every few years. I spent the first 15-20 years of my career in Java shops, and felt like I had no agency in the matter. That's just what I happened to stumble into as an entry-level dev out of college, and from there no one would hire me for anything else. But awhile back I was playing with .NET Core, and thought, "I'd like to work with this". So I just went and found a job doing C#. It was easy to find, and I was making slightly more money as a C# newbie than I was as a Java veteran. This past year I decided that I wanted more exposure to data science and machine learning. So now I'm in a Python shop for the first time in my career, and I'm charged with giving direction and mentorship to younger developers who quite frankly are much more knowledgeable about Python. All of these things are exciting, and keep me fresh and on my toes and engaged with the field.
In a lot of discussion threads, where people bemoan that they've reached their 40's and "can't find a job anymore", I have to assume the issue is that they keep looking for substantial promotions or raises over their previous jobs, and are simply in denial about having reached a plateau (or if they haven't been willing to continuously learn new tech, may be in decline). Yes, most companies are NOT being realistic when they talk about having "parallel career tracks for managers and IC's". Rarely does the title "Principal Engineer" REALLY put you on-par with a Director or VP. It is what it is. Management will always be what people "advance" into, and individual contributor roles will always be for those "who did not advance". At some point in your career, you will likely have to make your peace with that, because there simply aren't enough TRUE "Principal" jobs (as described in the original post) for more than 1 out of 10 of us to reach.
But I really don't think that "Senior++" is such a bad fate. I'm in the top 5% of U.S. household incomes, I have wonderful work-life balance, and I enjoy my work and feel like I am continuously growing. At some point, you need to take... the... win, and stop trying to convince yourself or let unrealistic social media convince you that you're a loser.
In startups and tech-focused companies seniority comes with skills, not years on the job.
Why is reporting to someone less experienced than you undesirable?
I've come to the belief that in a broad range of circumstances, high level ICs aren't especially critical. There's quite a lot an engineering org can do with sharp senior engineers working on relatively autonomous teams overseen by a couple tiers of managers who may have little understanding of the technical domain. Adding some ICs who e.g. report to a VP and jump back and forth between areas can be seen to complicate processes, planning etc. We want technical impact above the level of a single team, which often means cross-cutting concerns or improvements which pass through several systems. But in many cases, even without a technical IC who has a technical view of the larger picture, narrowly-scoped teams can still come to a decent if sometimes convoluted local optima.
My conclusion is if you like building stuff, but you get bored of building the same stuff, and you don't want to people-manage, there are basically three options:
- pursue a staff+ role at a large organization which can't afford not to have those engineers contributing at a higher level. If not FAANG, now there is a tier of slightly smaller public or late-stage private companies who can't avoid having high-level technical experts -- but competition is pretty fierce
- some form of consulting which allows one to move between technical projects
- keep changing fields to do sr level engineering in an unfamiliar area
- retire early, and putter on open source
This year I moved from a principal role to a staff role which lets me explore some areas of technical interest which weren't used at my previous company. If staff doesn't let me have sufficiently broad impact, at least I get to explore a new technical area. And perhaps it will be my last job.
_But_, an option which I haven't really seen, but which I must exist out there somewhere, and would love to hear about is if there are some niche companies that actually appropriately value engineers with many years of experience. If one believes that these experiences let us anticipate upcoming issues, design better solutions, pick up new tools and frameworks faster etc, and requires less from people managers, then shouldn't there be room for a company which disproportionately hires very experienced engineers, compensates them appropriately, and produces better/faster/lighter solutions?
I’m intending now to build software outside of the day job until I’m bootstrapped into doing that full time. I feel this is a setup which absorbs risk while giving both future opportunity and a high quality of life in the meanwhile.
I’m tempted at times to go for some super high paid position which I’m very qualified for, but it always comes back to a preference for near total freedom to live my life.