Some of the advice is about expanding yourself, that's good advice.
Some of the advice is about how you milk your current position. You said 6 years in industry so I'll take that at face value. Without promotions I'm assuming you'll be working till retirement even at google. Even an early retirement at 55 or 60 is another 25-30 years of this. Unless you're a hero out of Dilbert fiction you won't be able to milk things that long for many reasons.
I'm an PE at an Amazon subsidiary so I end up getting involved with engineers and teams who are having issues a lot, so this is advice from what I've seen. I've also got a lot of mentees and all of them have hit lulls (short or long) in their careers. This can happen with high performers or career in role type people and those who decide software isnt' for them (managers and go do somthing elsers).
What I see often are people who think that they're treading water but to their managers and leads they're slowing degrading. Unless you are somehow objectively measuring your performance versus your past self this is very likely happening. Lowering motivation leads to slower work. Unless highly trusted, managers avoid giving critical work to unmotivated emplyees. And worst off I usually see people in your place turn salty / bitter / angry. Then things really start to go down hill.
The real enemy here is boredom. As yoda once said "Boredom leads to stagnation, stagnation leads to getting passed by, getting passed by leads to salt, salt leads to PIP."
So now you're 30, pissed at your current job, salty, and not sure what to do. Not a great place to be and it shows in interviews.
I have one friend who this happens to every few years. They get tired of their current projects and get frustrated. Then they stop caring and think they're doing OK. Then about 6 months to a year later they get the talk (pip, letting you go etc). By this point it's usually too late, salt and mistrust have built up and it's hard to break free. (Note: unless you have a manager who is very good at managing your carreer path, they won't notice this slide until year review time when it's likely to late). I have a deal with them now that whenever they feel bored they talk to me and we try and find a good new place for them.
There's nothing wrong with staying at a certain level forever at a company. Some people really like that and love the work life separation. You gain trust with managers and mostly you are able to build what is needed and go home at the end of the day. The deal here is to just make sure you a) aren't bored, and b) you are providing value to the manager/lead and they trust you, talk with them often, c) your company will allow you to stay at that level forever. The last one is a kicker, some companies will manage out people who say stay at SDE1 for more than 5 years as low potential.
I've dealt with others who were actually performing well for their previous role but had stopped growing. They were promoted into place so they would grow and fill the expanded role. After several years of that person (lead) coasting, the team wasn't in a great spot. I got called in to evaluate poor team performance. This ended up with the lead leaving the team and essentially down leveling.
What I'm saying is it can happen to anyone regardless of trajectory.
The fix, however, is hard. You need to find what motivates you. I can't answer that for you. This is the worst / most annoying advice I give my mentees, or hell my teenager. This is because you don't know what you don't know.
Some people find the fix is job hopping. This is a great way to stay well compensated and working on greenfield projects while in a up market. However it does make it quite hard to grow to a senior position as you don't stay long enough to build up those relationships, and is harder to do in a down market. You also take on the risk of the new position not being what you expected.
So again it comes down to figuring out what drives you, as this is the best overall fix. And to that, I'd say what I said at the top differently: "Go Find Yourself". You said you're coasting anyway. Figure out what actually motivates you. Both at home (don't just consume content), and at work (If you still have trust, ask to experiment with roles).
> From the individual perspective, staying too long slows down your rate of learning because you aren’t coming into contact with new people and technology at the same rate. Anecdotal, but lately I’ve interviewed some 8+ year tenured candidates that I wouldn’t rate above SWE II because it was literally a “one year of experience 10 times” situation. I try to change things up every 4 years or so to avoid ending up this way myself.
Should be noted, this is applicable to the same position specifically, not any one company. Some of the best engineers in the world have only ever worked at places like Google, Microsoft etc, but they make sure they're constantly learning, working with new teams, switching to new positions once they've mastered their previous one, etc. In many cases these folks actually have a big leg up vs new external hires due to product and institutional knowledge, while also constantly learning new technologies.
I have hit L6 after 7 years of steep upward trajectory. I have been hired with a PhD and four years of part-time industry experience. I got it now because two years ago our org got a new leader with a mindset very similar to mine, while at the same time a solution I've been developing for a couple years was just found by a tens-of-billions-usd problem.
Sure, over the 7 years I've met a couple engineers with a similar trajectory and one with a steeper one. But the vast majority will either take more time to get to L6, or plain decide to stay forever at 4 or 5.
The advice that I would give to myself in my early 20s is (1) nobody cares about your career except you: people come and go, change companies and have their own careers; (2) the only way to move up the ranks is by shifting between companies and getting multiple competing offers; this applies even to outstanding devs; so you are expected to move every 3-4 years if you don't want to get stuck at your entry level pay.
Personally I have found a rather different factor has been at play in my career - I have been in the industry for 15 years and made several side-steps, including working as employee #1 at a startup (which I cashed out from a buy-back), working at a GPU company on the driver and much else. I've also contributed to the linux kernel, chromium, the go programming language and a number of others.
I have never lacked the ability to make a change in my career even when it was scary, including taking the early stage startup job at a >30% reduction in pay + they only had 2-3 months money in the bank max.
However I've found that my career progression has been stalled by each and every move. I'm back at the bottom of the ladder and those years of experience? Worth absolutely nothing.
It's felt like every move to another position for whatever reason (typically to have a more interesting, fulfilling career in my case) has absolutely reset my career every time.
I'm 39 years old and last week a 25 year old was promoted in my company above my position after he'd been there for 3 years. It's pretty galling to think that I could be in the same position as not far off a graduate engineer in my early 20's.
My experience has consistently been that only your experience at $CURRENTJOB counts for anything when it comes to progression.
By all means, seek out the best job for you, but don't be surprised if there's a cost in progression of any kind. I don't regret taking risks and aiming for happiness but I do regret that I was naive about how to do it in a smart way.
I think part of the issue is that many technical roles (note: I have never worked for FAANG so maybe different there) do not have a well-defined or sensible technical promotion route, so only managerial experience matters in terms of progression.
It's alarming that there's an idea among a people -- possibly bay area -- that mid-career is six years of experience. You are your own worst enemy with that kind of belief. People reinvent themselves and their careers many times over a lifetime. It's hard to return to certain types of technical work but never impossible, especially for those who are sufficiently motivated.
You will reach the limit of a pay scale, but everyone eventually does, in all professions.
And even if the start of your career feels meaningful or fun, you'll possibly (probably?) "grow" into a position where that's no longer true. I enjoyed writing software, but after 15-20 years, they expected me to spend most of my time managing others (which I was bad at) or working with customers (which I hated). That greatly reduced my happiness, and so I retired early (mid forties) to get out of it.
Maybe I could've told them, "Don't raise my salary and increase your expectations", but that never really seemed like an option.
> I am sure companies where promotion from within and strong rewards for developers exist, but I don't think they are that common, when talking to peers it seems the only more or less guaranteed way to get promotions, recognition and significant salary bumps are to leave and go work somewhere else.
This is what I've personally experienced from both ends. I was at one company for a very long time and as a result I was dependent on the variable annual salary review (which was at least consistent) but in the last decade or so I feel that compensation for needed jobs outpaced that growth. I've also noticed that viewing the profiles of various software engineers that a lot of people move around a lot. They might stay there one or two years but no more than three or four. I wish I had learned this early on in my career. Also I think as a developer you learn more and grow by experiencing different domains and problems. It's bad to get complacent.
> It's also surprising how many companies will allow great engineers with 5-10 years of domain experience to leave with just a "ah, it's normal, attrition happens" without actually trying hard to keep them, but I guess they figure that if they reward one for staying, others will want rewards as well, and so it's easier to just not do anything (which is of course helped by the widespread notion that engineers are just replaceable cogs, so if one leaves you can just get another or hire 3-4 offshore replacements for the same amount)
I sometimes wonder if long-term employees are a liability for companies. Or if they view them that way at least. Because of the nature of work maybe they need people for a few projects and if they go that's okay. They got what they needed from them (and maybe so did the employee).
There is a sort of stagnancy that can surround people who have been there for years though.
For many devs, the first 3ish months you lack context to be super useful, then that first 2-4 years of hard work and enthusiasm are probably your peak productivity. It gets harder to maintain enthusiasm as the years go by, so some devs who are cruising with 5+ years might actually provide less long term value than a new hire.
Yep. You probably wasted your time. Been There Done That.
I stayed at one company for 9 years between 2000-2008 between the time I was 25 and 34. My skills atrophied, I was woefully behind technologically - we were still using VB6 in 2008.
Suck it up, try to sell your maturity and soft skills, be prepared to check your ego at the door and learn modern technology and processes from people who are a lot younger than you.
You’ve got a lot of grinding to do, but you won’t permanently be behind. There is a point where you get “get enough” for your local market and where any increase in experience has diminishing returns as an individual contributor.
More formal education is not the answer. “There is no compression algorithm for experience”. You’re going to have to work longer hours to stay caught up and to produce at the level you should until you catch up.
Worked for a long time as a developer and architect (where architect still codes, explores new tech, just thinks more about system issues). I won’t say how many years but let’s just say “many”.
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.
> However, a lot of times the "want to do it forever" part could be a sign that the candidates doesn't want to learn anything new, which is indeed a very bad sign.
While that is true for a lot of jobs, there are also a fair number of employers that are perfectly content to have an employee that does job X at their company for as long as they are of working age. In the software world it pretty much follows from the fact that the largest chunk of development jobs out there are just CRUD apps and processes that feed them. Many companies do the same things with largely the same software for years and years and years. As long as an employee is getting the work done, many of those employers are thrilled to have a long-term employee doing the same tasks they've been doing for years.
Written from a limited perspective; novice expert wisdom. Certainly it's valuable to stick around to really understand long term effects of things your immediate predecessors and then you yourself did. You do start to understand things. I agree that staying at one job for 5 years, not 5 jobs over 5 years, makes one senior. You also have to be capable of learning such wisdom within whatever constraints may be in place.
But you don't then need to repeat this ad nauseam. Once you then go into your next job after your first long stint, you should instantly recognize the tradeoffs and be able to ascertain whether they were known or unknown. After a few years doing that, then you are probably ready to be staff level, although the likelihood of internal promotion is likely slim.
I'd say the ideal tenure history looks similar to (not precisely):
new grad > 1-2 years > 1-2 years > 5 years > 3 years > whatever
You need those quick hops initially to a) see at least a couple different work environments, and b) to get your salary up quickly, which is especially important early on. Then, yes, after 2-3 of those shorter stints you need at least one longer stint to gain the real wisdom that you didn't get with your early on "same year of experience multiple times". Then you need to hop again for both salary and promotion, and to see how your wisdom applies to another environment. After that, optimize for whatever your life wins and losses have guided you towards.
Of course (!) YMMV. Sh_t happens. Or you might have hit a lottery at your very first company. Who knows what else. I'm just suggesting what an "ideal" progression might look like, not considering how life throws things at you, or how companies vary in their quality making it bad to stick to some prescribed progression.
EDIT: I see the author actually followed (is following) my exact suggested trajectory. I find it a little odd then that the advice given doesn't capture that at all.
It certainly doesn't make you a bad anything. Your level of ambition is a personal thing. It's yours alone, and no one gets to look down on it[0]. This idea that a person's worth is tied to how far they want to and are able to go in their career is something that needs to die.
If you're happy with where you are, and happy with your salary and status, then it's fine to stay there! Certainly, as you say, continue to learn new things, make quality contributions, and get your work done.
Many companies will have what they call "terminal levels" for individual contributors (most probably don't really advertise this unless you specifically talk about it with your manager). The idea is that you can work at a level where you can get your day-to-day work done with minimal guidance, even if you need guidance on the bigger picture stuff (like what you should be working on, and why). You should certainly talk to your manager about this, if you feel comfortable. And if you don't, and/or they keep pushing you to climb the ladder further, then yeah, you should probably find a new gig.
One caveat: ageism is still an unfortunate thing in our industry, and as you get into your 40s and beyond, if you're still "only" a "senior software engineer", you may have trouble getting new jobs.
Companies don't want to get stuck with people who are perpetually "junior" and need a lot of hand-holding to get their jobs done. That's of course ok for a while someone is learning and growing, but if they aren't growing out of that, they're a liability and time sink. But once you're past that point, you should be ok. The only problem is if you end up at a weird place where no one wants to progress up through staff/principal/architect/fellow, in which case I wouldn't be surprised if everyone starts getting pressured to up their ambition. But that sort of scenario seems somewhat unlikely?
[0] Well, unless they are in your immediate family and your lack of ambition is putting their livelihood at risk in ways they can't mitigate. But I'm assuming that's not the case here ;)
Thank you for contributing this. I'm 22 years into my career, mostly spent in mundane engineering roles compared to the deep research I worked on as a hobby but really wanted to do professionally. After pushing very hard for many years, I finally landed that deep R&D gig and am well compensated.
My skills and interested are more hardware oriented in a company that brought me in is much more software and math. I've felt obligated to become much more software and math capable, spending very late nights and weekends studying. It's not a bad thing to expand one's mind, but at the heart, I know I'm really doing it more so to 'fit-in' better and less to communicate with my peers better.
I will take this advice and double down on bringing my hardware skills/passions to the table, which as my wife has repeatedly told me the past several months is really why they brought me on. They didn't bring me on to mold me into a clone of researchers they already have.
> That's a natural result of favoring short term goals over long term investment
It’s extremely hard to justify investing in junior engineers when the trend in our industry is to jump between jobs every 1-3 years. What’s the point of hiring and training/mentoring anyone if the industry average tenure is less than, say, 5 years?
I think calling it artificial is going a bit too far.
At least from my perspective, our entire industry is relatively new (if you look purely at the average / median years of experience in out industry).
5-7 years is often considered “senior”, while in other industries it can take 10-15+ years to really be considered “senior” in your role.
It’s not surprising that many companies want “senior” level experience since “senior” really just means “not a beginner” at many companies. And not surprising that companies are reluctant to hire junior devs when jumping between jobs is so commonplace.
This sounds like it makes sense but in practice I've noticed two things:
a) Many people who have only ever worked at 1 or 2 companies have some really critical gaps in their technical breadth. Every time I've switched jobs, I've had multiple "I can't believe we didn't use this at my last job" moments.
b) I've seen many "lifers" in big companies who built some great big system at some point in the past and now do very little other than maintain this hairball. It's very rare that, for someone who has been in the same role for 10 years, their last 5 years were as productive as their first 5. Despite promos and all. You get older, the job gets easier, and you get lazier.
Some of the advice is about how you milk your current position. You said 6 years in industry so I'll take that at face value. Without promotions I'm assuming you'll be working till retirement even at google. Even an early retirement at 55 or 60 is another 25-30 years of this. Unless you're a hero out of Dilbert fiction you won't be able to milk things that long for many reasons.
I'm an PE at an Amazon subsidiary so I end up getting involved with engineers and teams who are having issues a lot, so this is advice from what I've seen. I've also got a lot of mentees and all of them have hit lulls (short or long) in their careers. This can happen with high performers or career in role type people and those who decide software isnt' for them (managers and go do somthing elsers).
What I see often are people who think that they're treading water but to their managers and leads they're slowing degrading. Unless you are somehow objectively measuring your performance versus your past self this is very likely happening. Lowering motivation leads to slower work. Unless highly trusted, managers avoid giving critical work to unmotivated emplyees. And worst off I usually see people in your place turn salty / bitter / angry. Then things really start to go down hill.
The real enemy here is boredom. As yoda once said "Boredom leads to stagnation, stagnation leads to getting passed by, getting passed by leads to salt, salt leads to PIP."
So now you're 30, pissed at your current job, salty, and not sure what to do. Not a great place to be and it shows in interviews.
I have one friend who this happens to every few years. They get tired of their current projects and get frustrated. Then they stop caring and think they're doing OK. Then about 6 months to a year later they get the talk (pip, letting you go etc). By this point it's usually too late, salt and mistrust have built up and it's hard to break free. (Note: unless you have a manager who is very good at managing your carreer path, they won't notice this slide until year review time when it's likely to late). I have a deal with them now that whenever they feel bored they talk to me and we try and find a good new place for them.
There's nothing wrong with staying at a certain level forever at a company. Some people really like that and love the work life separation. You gain trust with managers and mostly you are able to build what is needed and go home at the end of the day. The deal here is to just make sure you a) aren't bored, and b) you are providing value to the manager/lead and they trust you, talk with them often, c) your company will allow you to stay at that level forever. The last one is a kicker, some companies will manage out people who say stay at SDE1 for more than 5 years as low potential.
I've dealt with others who were actually performing well for their previous role but had stopped growing. They were promoted into place so they would grow and fill the expanded role. After several years of that person (lead) coasting, the team wasn't in a great spot. I got called in to evaluate poor team performance. This ended up with the lead leaving the team and essentially down leveling.
What I'm saying is it can happen to anyone regardless of trajectory.
The fix, however, is hard. You need to find what motivates you. I can't answer that for you. This is the worst / most annoying advice I give my mentees, or hell my teenager. This is because you don't know what you don't know.
Some people find the fix is job hopping. This is a great way to stay well compensated and working on greenfield projects while in a up market. However it does make it quite hard to grow to a senior position as you don't stay long enough to build up those relationships, and is harder to do in a down market. You also take on the risk of the new position not being what you expected.
So again it comes down to figuring out what drives you, as this is the best overall fix. And to that, I'd say what I said at the top differently: "Go Find Yourself". You said you're coasting anyway. Figure out what actually motivates you. Both at home (don't just consume content), and at work (If you still have trust, ask to experiment with roles).
reply