Of all the career decisions I see engineers get wrong, the most common one is when to leave a job. People leave too early, in a fit of pique after one bad sprint, and lose two years of compounding context for what turns out to be a sideways move. People leave too late, after staying through three reorgs and a manager change, having quietly stopped learning eighteen months ago. The two failure modes feel different from the inside. They cost about the same.
I’ve left jobs three times. Once too early, once too late, and once roughly right. This post is the framework I wish I’d had the first two times. It is mostly about distinguishing “I’m having a hard week” from “this place is structurally not for me”, because that’s where most of the bad decisions live.
The bad week vs the bad fit
The single most common mistake I see is conflating a bad week with a bad fit.
A bad week looks like this. Your sprint slipped. The PR review you needed didn’t happen. Somebody on Slack was abrupt with you. You skipped lunch twice. By Friday afternoon you have updated your CV and you are scrolling LinkedIn jobs, telling yourself you’ve had enough. Two weeks later, the sprint lands, the abrupt colleague apologises, you take a long weekend, and you have completely forgotten the urge. Knowledge work has a high floor of friction, and your nervous system will occasionally tell you to flip the table. Don’t flip the table on a Friday. Don’t flip the table while tired.
A bad fit looks different. It is not a week. It is a pattern that, when you are honest, has been there for six or twelve months. You’re not learning anymore. Your last three quarters look identical to your first three. Your manager is fine but doesn’t grow you. Your team has shrunk and your scope with it. You can write down five concrete examples of being held back, not five examples of being annoyed.
The first one calls for a long weekend. The second one calls for a job search. Mixing them up is how good engineers leave good jobs in week three of a hard project, or stay in mediocre jobs for an extra two years.
Signals that say stay
It is easier to spot leaving signals than staying signals, because grass-greener bias is real and pervasive. So let me start with the ones that should give you pause before you hand in your notice.
You are still learning. Not necessarily on a steep curve, but still. The graph of “things you can do now that you couldn’t do a year ago” is non-empty. Compounding is real here. Two years deep into a system is qualitatively different from six months. If you bail at month seven, you lose the part where the investment starts to pay back.
You are trusted, and you have agency. This is bigger than people realise. Being trusted means you can propose a thing, get a yes, and ship it without ten layers of approval. Agency is rare in a career. It does not transfer automatically to a new place, and “I’ll have agency at the next company” is one of the lies job ads are best at telling. If you have a manager who lets you run, count that twice when you weigh whether to leave.
Your compensation is fair-enough. Not “the absolute top of the market”. Not “I could squeeze 15% by interviewing aggressively”. Fair enough that you’re not actively grumbling, fair enough that you’re not subsidising the company by ten thousand euros a year while telling yourself it’s fine. If you’re in that range, comp is not the deciding factor, and treating it as one usually backfires when the new place turns out to be worse on every other axis.
The team has senior engineers you can learn from. This one I underrate every time. A team with two strong seniors and an average culture will grow you faster than a team with no seniors and a great culture, every time. If you have access to people who are five years ahead of you and willing to teach, that is a bigger career investment than most things you’ll find on the open market.
If three or four of these are true, you are probably in a “hard week, not bad fit” situation, even if it doesn’t feel like it.
Signals that say go
Now the other side. These are the patterns that, in retrospect, were always there, and that I should have left sooner over.
Your manager doesn’t grow you. A good manager in a one-on-one will, at least sometimes, ask you what you want to learn next and where you’d like to be in eighteen months. A manager who doesn’t grow you talks only about delivery: what’s slipping, what’s blocked, what’s next on the board. They aren’t bad people. They’re running a delivery role rather than a development one. After a year of that, you are self-managing your career, which works for some people but is much harder than having a manager invested in you.
The team has zero senior engineers and you’ve been there two years. If you joined as a mid-level and after two years you’re still the most senior IC on the team, you’re no longer learning from peers, you’re teaching them. One version of this is great for you (you become a senior fast through sheer necessity). The other isn’t (you hit a ceiling because there’s nobody to push you past it). If no senior has joined and none is coming, the second version is what’s happening.
Your scope is shrinking. This is the quietest, deadliest signal. Two years ago you owned the data warehouse. Today you own the staging layer. Last quarter the new feature went to a different team. The reorg moved the interesting work elsewhere. Nobody is doing this on purpose, usually. But scope, like a glacier, only ever moves in one direction at a given company, and once it starts shrinking, it almost never reverses. If you can write down three pieces of work you used to own that you don’t anymore, you are on a slow exit ramp whether you’ve noticed or not.
You are not learning anymore. This is the one to take most seriously, because it is the most subjective and the easiest to rationalise. Internal motivation can paper over an environment for a while. After eighteen to twenty-four months without new problems that grow you, it tends to give out.
Compensation is significantly off market. Not “off by 10%”. Significantly. You interview at a couple of comparable places out of curiosity and discover you’re 25% to 40% below the going rate. Loyalty is sweet but it is being paid for by you alone, and the company will not retroactively fix it just because you’ve been there a while.
If three or four of these are true, you are probably in “bad fit” territory, even if no individual day at work is unbearable.
The Italian context: contratto stability, growth, and a real question
I want to add a piece that doesn’t show up in most American career advice, because I’m in Italy and a lot of the readers here are too.
A contratto a tempo indeterminato is a real asset. Once you’ve passed the periodo di prova, the legal protections are genuine, mortgages get easier, life logistics get simpler. That stability is valuable, and switching jobs costs you a prova period and some risk, which an American engineer juggling at-will employment doesn’t quite face the same way.
The mistake, though, is treating that stability as a reason to stay forever. The Italian career trap I see most often is engineers who have a perfectly fine indeterminato at a perfectly fine company and have stopped growing for three years, but who can’t bring themselves to move because the new place “isn’t a sure thing”. The cost of three stagnant years compounds in a way that is invisible until you go to interview elsewhere and realise you cannot competently answer questions about anything that has changed in the field since 2022.
The question I’d ask, more useful than “should I stay or go”, is this: is the next step in this company even available? Is there a role above mine, on this team or an adjacent one, that I could plausibly grow into within twenty-four months? If the answer is “I genuinely can’t think of one”, you are not in a career, you are in a job. Both are fine, but they should be a deliberate choice and not a default.
The exercise: last six months in three paragraphs
Whenever I’m wobbly on this question, I do one exercise. I sit down with no laptop, just a notebook, and I write three paragraphs describing the last six months of my work. Not what was on the Jira board. What I actually did, what I learned, what I’d put on a CV.
If those three paragraphs are interesting to me on rereading, I stay. If they bore me, especially in the same way the previous six months bored me, I start looking. Not panicking, just opening the conversation. Updating the CV. Talking to two people I trust. Doing one interview to remember what the market looks like. Most of the time the looking, in itself, is enough to clarify what’s wrong.
Takeaway
The leaving question is one of the few career decisions that is actually reversible badly: leave too early and you lose context, leave too late and you lose years. The fix is not to be brave or cautious, it is to be honest about which signals you’re seeing. Bad weeks are not bad fits. Compounding context is real and worth waiting through some friction for. Shrinking scope and a manager who doesn’t grow you are not waited out, they are exited. And if you can’t write down three interesting paragraphs about the last six months of your work, the work is talking to you. Listen to it before the bad week pulls the trigger for you.