// post

· 6 min read

Professional Antipatterns: the promotion that was always one year away

// Seven years at Senior while leading Staff-level work, a promotion promised for the following year that never came, a request to align level with scope that was called blackmail behind my back, and an email nobody answered. Why a permanent veto and the silent treatment cost an organization its engineers.

// contents
  1. The work above the level
  2. The mistake, and the veto
  3. The second ask
  4. The silent treatment
  5. What it cost them
  6. What a healthy alternative looks like
  7. Why this is an antipattern

I became a Senior Engineer in 2019. Seven years later I was still one, while the work I was asked to lead kept growing. This post is about how that happened, and about the email I sent at the end of it, which nobody ever answered.

The work above the level

After the promotion to Senior, I kept getting handed work that sits above that level in any career framework I have seen. In roughly chronological order:

  • A flagship product: I led it and its transfer abroad for several weeks.
  • A sandbox solution: I led its due diligence, then refactored it into a Kubernetes-based application so it would fit the rest of our ecosystem.
  • Greenfield analysis software: I led the development of a state-of-the-art analysis product from scratch.
  • A cloud core application: I led the team building the greenfield core application of a cloud solution running on AWS and Kubernetes.

Leading products, setting technical direction across teams, and owning greenfield architecture is what Staff engineers are usually expected to do. I was doing it with a Senior title.

The mistake, and the veto

Around 2019 I made a communication mistake. My team was in a release crunch, and DevOps was modifying the production CI/CD and bringing it down without telling anyone. Under a lot of stress, I wrote something like “Why the f*** are you playing around with the production hosts?” in the company chat. The question was fair. The way I asked it was not, and I own that. The context explains it, but it does not excuse it.

In 2023 I applied for a Staff role. One person objected: the Senior Director of Engineering. The reason given was that communication from around 2019. I was told that if nothing wrong happened in the following year, there would be no obstacle to the promotion. In practice, that meant a promotion in 2024.

Nothing wrong happened in that year. No promotion came either, and nobody explained what had changed.

The second ask

In 2026 I was asked to lead another greenfield project: a new major version of one of our flagship products. I said yes, on one condition: that my role and level be aligned with the scope, which in concrete terms meant the promotion I had been promised years earlier.

I meant it as the opening of a negotiation, not an ultimatum. Something like: watch my performance on the new product for six months, and if it goes well, promote me. There are many reasonable versions of that deal, and I was ready to discuss any of them.

The Senior Director of Engineering declined again, citing the same 2019 incident. They admitted that they had known nothing about my work for years. They still did not try to find out.

The silent treatment

Then the conversation stopped. Nobody from the leadership contacted me about it. Instead, I heard from multiple people, second-hand, that my request had been characterized as “blackmail.” I never heard that word from anyone who had used it, and I was never asked what I had meant.

Four-panel comic. Top left: a manager in a blue suit points from a tangled "Legacy Flagship" server stack to a shiny SaaS cloud and says "We need you to turn our legacy flagship into a modern SaaS. Lead the multinational team as tech lead, lead architect, and final technical decision-maker!" while a tired developer in a black hoodie with a coffee mug replies "Sounds like a promotion." Top right: the developer raises a finger and asks "Could we finally discuss the promotion you've promised me for five years?" as the manager stares back, alarmed. Bottom left: the manager, red-faced, throws papers and spills coffee, shouting "BLACKMAIL?! You're holding the company HOSTAGE!" while the developer says "I asked about a job title." Bottom right: the manager storms out yelling "THIS DISCUSSION IS OVER!" with an HR colleague following, the laptop reads "Project status: no tech lead", and the developer sips coffee: "At least the scope got smaller."
Obviously AI generated, and more theatrical than reality. Nobody shouted at me. Nobody said anything to me at all.

So I wrote an email to the Senior Director of Engineering, with the CEO and HR on it. It was my last communication on the matter. The key asks were three. First, why there had been no direct conversation before my request was labeled blackmail:

Before accepting such an interpretation, I would have expected a direct conversation in which I could explain my position and hear any concerns you might have.

Second, why the discussion had been closed without an up-to-date view of my contributions, given the admitted lack of visibility into my work over several years. And third, what I was actually asking for. In my own words from the email: “I am not asking you to automatically agree with my request for a promotion.” I was asking for a fair conversation about how the scope would be recognized, how my current performance was assessed, and what development path they saw for me.

Nobody replied. Not the Senior Director, not the CEO, not HR.

What it cost them

I started looking outside the company, because it was clear I was not valued there. It was not easy. Finding the next role while AI is reshaping the whole profession, and the hiring market along with it, took a lot longer and a lot more persistence than I expected. I kept at it, and in the end I landed a position that matched my expectations. I did not end up with a Staff role, and not even a Senior Staff one. I landed a Principal role, on the strength of the same experience and skills that had not been enough to move past Senior in seven years.

What looking for a new role is like right now deserves its own post, and I will write about it soon in an upcoming article.

That is the part I would want any engineering leader to take from this story. As long as I was asking, arguing, and writing emails, I still wanted to make it work. The email was not a threat. It was the last sign that I still cared about the outcome.

It is not a problem when an engineer complains. It is when they stop complaining, because by then you have already lost them.

This has a name in economics. Albert O. Hirschman’s Exit, Voice, and Loyalty (1970) describes two responses to a declining organization: voice, which means speaking up to fix it, and exit, which means leaving. Voice is cheaper for everyone, and it is what loyal members try first. An organization that answers voice with silence leaves people exactly one option.

What a healthy alternative looks like

None of the fixes here are expensive. Most of them are a meeting.

  • Pay for the work at its level, or stop asking for it: if someone leads Staff-level scope for years, either recognize that with the level or give the scope to someone at that level. Keeping both the work and the title gap is the problem.
  • Give past mistakes a shelf life: address a conduct issue when it happens, agree on what good looks like, and then let a clean record actually count. A condition that is met should close the matter.
  • Keep the promises you make: “no obstacle next year” is a commitment. If something changes, say what changed, in person, before the date arrives.
  • Assess the person you have now: a decision about someone’s level should rest on their current work. If the decision maker has no visibility into it, the first step is getting some.
  • Treat a condition as a negotiation: “I will do this if my level matches the scope” is an offer. The answer can be no, or a counteroffer such as a trial period. Labeling it blackmail and going quiet is not an answer.
  • Talk to the person, not about them: concerns that reach someone second-hand from multiple colleagues have already done the damage a direct conversation would have avoided.

Why this is an antipattern

Keeping an engineer at a lower level while relying on them for higher-level work, vetoing their promotion indefinitely over a years-old mistake, and answering their request with silence is an antipattern because it presents itself as caution and works as attrition. The intent is to hold a high bar and avoid rewarding past misconduct. What it actually incentivizes is the opposite of what any organization wants from its strongest people: it teaches them that delivering above their level earns more work rather than recognition, that a promise about their career is not binding, and that raising the issue directly gets them labeled and ignored. The damage follows predictably. The engineer stops asking, starts looking, and takes the experience the company spent years benefiting from to an employer that will recognize it at its actual level.

What I work on these days is collected at lezli01.is-a.dev.

// thoughts? reply by email

// comments

// comments load as you scroll here. They live in GitHub Discussions; sign in with GitHub to join in.

← all posts