In contrast, staying too long at a single place could make it seem like a developer doesn't want any changes.
What is your opinion on this?
It is much easier to work on shiny stuff and jump ship than taking ownership of crappy stuff. Remember, what is shiny initially can become crappy over time and I want engineers who have been through all of it. Not just the good parts.
You are missing the (most common) case that those bad stuff are already there when you join the new company. Switching jobs doesn't automatically mean starting from a clean slate.
On the other hand, if you just want something done in a short term frame, might not be a bad deal. Don't pay "senior" salary or put them on strategic longer term projects, they are a very experienced junior engineer.
Think about it from the owners’ POV: healthy turnover gives you a constant stress test for the system that is your business. You need systems that are able to hire, ramp up, and train people.
Sure, you need a few key people that keep lots of detail and skill in their heads, but relying on that at scale is no way to run a business.
Also, let’s tear down our manufacturing plant and rebuild it from scratch every 2 years just to make sure we can.
This doesn't make sense, new jobs don't reset your level. There's a difference between the responsibilities you get in your first year as a junior and the first year at a new company as an experienced hire.
Disagree. Coming into a new company and seeing the results of decisions that were made before you started can be quite informative.
2 years is often enough to see whether design/approach has failed and what were the implications.
Unless you're doing very specific things like programming language design, operating system design, then why would you need e.g half of decade to figure out what went wrong?
So, whether X years is enough is dependent on what are you doing.
SpaceX? probably it isn't enough,
web dev? probably it is.
The rate asymptotes but there's still significant benefit for a tenure of 3 - 5 years.
If you're pretty senior, try moving every 3-5 years. If you're less than that try to stick out a year. There's exceptions, but honestly just be able to talk about why you did it.
For instance, when I got out of the military I was chronically underpaid in tech during a time when it was okay for companies to ask my previous salary while also being from the South where techies make substantially less than average. I left companies once a year for nearly four years. They knew what the deal was, they were getting a deal on my talents but knew I wasn't passionate about their stuff.
One more thing I would add: promotion at a company is very random but hugely impactful across a career.
My current company is filled with relatively young engineers, but many of them got promoted during the time when the company was small and now manage massive teams at a publicly traded company while still relatively inexperienced.
Early in my career I got quickly promoted to a reasonably high level role... but the company went under. Had that company been as successful as my current one who knows what type of role I might be in today.
I have another friend that joined a massive company hoping to just blend in and have time for other project: 2 years later they've had multiple promotions and are now very well compensated and a much higher level. This same person struggled to get any promotion in a much smaller company they worked harder for and had a much higher impact on.
Some people join an early stage startup and end up a C-level at a well known company, and a very similar person can join and early stage startup that disappears and they end up taking a senior software engineer role for their next gig.
All of this to say, long-term commitment can have wildly divergent rewards that all boils down to being in the right place at the right time.
If your salary has only increased 4x over what you made doing tier 1 support it is likely you are leaving a massive amount of money on the table.
Check https://levels.fyi
Now you might not be willing to do the work to pass interviews at higher paying companies. That’s fine too, but I wanted to make sure you know what the actual numbers are.
IMO: Tenure at a company should increase with experience. It's hard to do monumental software engineering in a short stint; but there are often good reasons to "get in and get out" too.
IE, it's good for someone to have shorter tenures early in their career, as they're still understanding the industry. Very few of us are lucky enough to have an entry-level job that we want to turn into our career. Also, it's really hard for a candidate and company to mutually evaluate each other in the interview process, so short stints for an experienced software engineer will happen.
I wouldn't jump to the conclusion that someone who stays in a job for a long time is underpaid or doesn't like change: These are the people who often develop into the archetypes described here: https://lethain.com/staff-engineer-archetypes/ (https://news.ycombinator.com/item?id=33112915)
All of that said, I probably left a ton of money on the table by not grinding for money in my 20s.
This is the primary problem. American companies aren't willing to give 100% raises year after year to keep up with their competition and retain their employees.
I don't really think anyone cares about long term commitment. I was asked once to stay at least a year because recruiting me was very expensive and they wanted to get their money's worth. I appreciated the frankness of the request.
Does the company regularly¹ adjust worker wages to account for inflation and employee growth? (I.e., a two-year tenure employee should be worth more than a 0-year employee simply because they know how stuff in the company functions. I.e., they don't need to be trained!) That, in rough English, is "appreciating" it. Yes, normally, there's some lip service the company will give, but actual rewards in the form of compensation is the real "appreciation".
But a surprising number of employers, AFAICT, don't do that. Shockingly, SWEs tend to jump ship a bit after 2 years of not getting anywhere. (And write their own salary adjustments on the jump.) It's incredibly detrimental to continually hemorrage that experience, but I feel like places I've been at don't get it for two reasons: management is too disconnected to know it, and it's all they've ever known, so they don't know how bad it is, as they've no relative basis to judge. Dunning–Kruger, essentially.
¹I'd argue yearly, but at least bi-yearly.
Sorry, but no. Maintenance requires understanding the code, which requires reading the code. Experienced¹ eng are far more likely to be able to grind through code they didn't write, as they've read more code over the course of their career.
¹actually experienced, i.e., has actually gained knowledge. Not just "has been in the industry for more years" which seems to be frighteningly common.
He'll tell you magical "knowledge transfer" and won't think twice about making a raise for seniors and will proceed on hiring people to "transfer" the knowledge to.
Also at least one long position is a bonus, shows the person will stay given the right circumstances.
Everyone knows that you can and get those pay bumps if you switch jobs, but want to penalise it.
I will say this differently, if you see short stints as a bad thing, there are two options:
1) you want to explore people that have difficulties negotiating/interviewing
2) you will hire dumb people (because unless you are curing cancer, anyone that rejects 20-50% pay bumps every couple years is just dumb)
A lot of people switch jobs frequently because they feel it's the only way to advance, or at least the most cost efficient way. That's not the case for me: I would love to find a place to work for the next 20 years, and if they give me cost-of-living increases and the occasional attaboy raise, I'm not asking for more than that. I make plenty of money, am not looking for a fancy title, and run the other direction from leadership positions. I don't even care about "solving interesting problems at scale" or whatever people say they're chasing.
BUT, the reality is, I haven't found a good company — one where I think I'd like to stick around due to culture and stability and so on — and in this industry we have the option to move on without penalty. So, why not do that, until the right company shows up?
In fact, in the case of the second employer, that actually did happen, and I stayed specifically because I thought that management could fix the issues and that I could help them. Both of those things were true, and because I was helping us move in the "right" direction, I experienced a ton of professional growth, but then the culture shifted again (we were acquired) and the place simply became inhospitable. I was part of the initial exodus of engineers who left. I've heard from colleagues who have remained that ~50% of engineering has turned over in the last year.
I suspect that I will have some short tenures (1-2 years max) on my resume now, as I try to navigate my way through to another long tenure employer.
Not at all.
The only thing they appreciate is that you're cheaper than your potential replacement.
I have 10 years at the same company and a masters degree. I'm a midlevel dev who was passed over and screwed over a few times.
And that your potential replacement may take 1-2 years to be as productive as you.
So colleagues and managers don't appreciate loyalty per se. But they appreciate competence. And long tenure can increase someone competence in two ways: on one hand many companies sit on top of large and complex systems. With long tenure you not only get to be familiar with these systems, you start to know their history, you have your war stories, are familiar with past solutions to recurring problems, and not least, are able to teach new joiners. And on the other hand, you have an extensive network, which can increase your productivity tremendously, because in many cases the best solution to a problem is not to roll up your sleeves and work on it, but to ask a favor to a friend who can do it ten times faster than you.
Because of all these things, you'll see often people with 20 years or more of tenure being considered as pillars of their organization by their peers and managers.
Unfortunately, there are sometimes people with long tenure who are not that good, and don't have strong networks (because the strength of a network depends on how often you were able to help someone else). They are just "lifers". Competent enough that it's a headache for managers to replace them (and so they escape various rounds of layoffs), but not so competent to be appreciated and loved by their colleagues. Those people just attained "job security". Nobody appreciates their "loyalty", because it was not actually loyalty that made them stay in the same place.
To this day the best company I’ve ever worked for is a crucial part of my network as my former coworkers respected me greatly and formed a diaspora across the industry after we all left. Unfortunately that company is nearly nonexistent now thanks to mismanagement after a private equity acquisition.
I don’t think people “job hop” on a whim, they do it because companies don’t treat employees decently. It’s not necessarily pay, it’s basic respect and autonomy.
There might be a company out there that appreciates it. There might be a company out there that rewards it. I haven't experienced either of those things.
I was convinced by everyone else's horror stories that my job was so great, and I wouldn't find a better one. I should have changed jobs more often. Every 2 years like you say, would have been about right.
I have rather seen the opposite. Each time I have switched companies I've always gotten big pay rise. If I wouldn't I would still be earning like half of what I make today.
The issue is that companies rewards moving every 2 years and as long as that is the case, that is probably what I will do.
Unfortunately, most middle management in most companies stopped caring, hide behind processes and would like to treat employees as commodity. And most upper management are either powerless or uninformed and in most cases both. And both would prefer to use any budget increase to hire new employees rather than compensate the ones they already have.
As to software engineers, over the years of interviewing (but also changing jobs myself) I changed my attitude.
My new thinking is that if the company does not value staying loyal when their engineers are quickly getting experience and increasing their value on the job market, when changing job is the only option to get your salary corrected to reflect your market realities, then I cannot fault the person for changing jobs rapidly.
So rather than penalise people for being disloyal, I am asking probing questions, dig a bit into their explanations, the types of projects they were working on, and see if their progression and explanations check out.
https://jacobian.org/2022/oct/14/when-is-short-tenure-a-red-... with HN thread here: https://news.ycombinator.com/item?id=33309342
Every now and then you do find a company which has no alternatives like SpaceX or Renaissance Technologies or Steam. People don't leave those easily.
Though, "appreciation" has nothing to do with it, it's really about the somewhat fixed overheads of integration, de-integration, and re-hiring. My sensibilities would be different if costs were higher (desiring longer tenures) or lower (more relaxed on even shorter tenures).
I mean, who knows, we currently can measure gravitational waves via LIGO, so scientists may eventually create instruments sensitive enough to measure something as miniscule as a company's actionables toward its long-term employees, but I wouldn't hold my breath.
For example, its easy to be a "dead wood" employee at a large employer. You can stay there as long as you like, and get away with not doing much - in relative terms, I'm not talking literally twiddling your thumbs as the years pass by !
Meanwhile long service at SME size companies is worth more because there is nowhere to hide.
On the short side of the spectrum, absolutely without any doubt whatsoever, anything less than 2/3 years pattern is a MAJOR alarm bell.
Why ?
Because less than 12 months basically means you keep getting fired on your probation periods and you probably should not be touched with a bargepole.
Less than 24 months and it sort of smells like itchy feet syndrome.
So (IMHO) 3–5 years is sort of the sweet spot in tech. It shows you have a degree of loyalty, but also want to keep one eye on career progression - assuming your CV clearly reads like career progression, not ship jumping !
I know they'll likely leave after 2-3 years and knowing this allows me to prepare and organize the team in a way that a departure is not seen as failure but rather as normal evolution.
Candidates who stayed +5 years at the same company, even more those who worked under the same manager, typically trigger yellow flags during my hiring process: 1) What is the precise reason for the departure and how am I proposing something better? 2) Has the candidate reached a tipping point, either emotionally or physically (e.g., exhaustion, mental breakdown, etc.) and what is the stage of that crisis? 3) Has the candidate's personal life taken a turn recently? (e.g. newborn, death, difficult marriage, sickness in the family, unbearable debt, etc.)? 4) Did the candidate leave because the employer could not offer the right salary (easiest cases)? 5) Did the candidate leave because there weren't any or acceptable opportunities for evolution (easy to understand, but difficult to solve)? Etc.
With frequent job switchers, I don't usually dig too much. I assume that I can easily fire them whenever I'm not satisfied, it goes both ways.
I don't see a person jumping ship every 2 years as a liability, as long as they onboard quickly and get their job done. It's always great to retain more knowledge but we move on if it doesn't.
Those who job hop every 2-3yrs do so (usually) for career advancement and nice pay bumps along the way. The salary bumps are unlikely to match if they stayed at one place.
That said, I hate the use of the word "commitment" here. If a company hits a rough financial patch, they'll dump the most loyal and committed employee in the blink of an eye to make life easier on themselves. It doesn't matter if you just bought a house or your wife is due for a baby or your kid is suffering from cancer: you're expendable 100% of the time. Tough to use words like commitment or loyalty in that environment.
I think it also depends a lot on tech ecosystem where you live too. There's a lot of dead startups where I live. The dream jobs are probably oil and gas jobs, some telco that thinks that having colorful offices will make them the next Google, or a bank with an ATM machine in "the metaverse". I can't imagine that staying too long at these places are a good sign.
Low/marginal performers need to stay in each job long enough (2 years?) to show they can hold it down and are not being let go frequently because of incompetence. Job security has value for these people who are the main beneficiaries of tenure since the more competent don't need tenure, at least until they near retirement.
Middle performers can afford to switch a few times but often need to stay 4 years until their options vest. Generally the rewards are higher if you switch frequently up to a point. It's hard to get pay raises that match switching jobs.
So I think once you’ve worked somewhere long enough, there’s a good chance much of what you know how to do doesn’t “fit” on a page anymore. So when you see a boring long stint, I wouldn’t trust it. This “I know you’re ‘lying’ to get a job” feeling always applies, but now instead of thinking the applicant did “less” it’s the other way around. You now have to wonder if you will offer enough for their experience and if they’ll get bored.
It's been pretty well proven statistically that 2 years (here in the UK, 1.5 in the US) is the optimal time to spend before either leaving or getting a significant promotion. If you leave more than 6m before that, it's too soon (then it is a red flag), if you stay longer you start to earn less. Those are the stats and you cannot argue with them...
various summer jobs pre-graduation, 2 yrs, 2 yrs, 10 yrs contractor but assigned to same large company, 5 yrs, 5 yrs, 1 yr Dot-com startup #1, 2 yrs Dot-com startup #2, self-unemployed 5 yrs, 5 yrs contract, 6 yrs hired by same company, terminated during company-wide layoffs - retired.
Most of the times, you probably should jump around every 3-4 years.
That said, I have been at the same company for 7 years and the company has always compensated me well for my hard work.