He spent two weekends writing it. Twenty-two pages, architecture diagrams, a phased migration plan, risk analysis, resource estimates. He was the most senior backend engineer at a logistics SaaS company with twenty-eight engineers, and he had been flagging structural problems in the routing engine for eighteen months.
First in retrospectives, where they were noted. Then in architecture reviews, where they were acknowledged. Then in backlog tickets, detailed, scoped, estimated, where they were groomed and deprioritised. Then in one-on-ones with the engineering manager, where he was told the timing was not right.
The twenty-two pages were his last attempt. He had learned that technical arguments did not produce decisions, so he formatted it as a business case: cost of inaction, incidents mapped to architectural weaknesses, engineering hours lost to workarounds. He was thorough, precise, and exhausted.
The presentation took thirty minutes. The CTO and VP of Product asked sharp, engaged questions. They took notes. It felt, for the first time in eighteen months, like someone was listening. "This is really well thought out," the CTO said. "Let me discuss it with leadership and get back to you."
Two weeks of silence. No follow-up, no questions, no status update. Then a Slack message: "The timing is not right. We have Q3 commitments. Let's revisit in Q4."
He did not revisit in Q4. He accepted another offer three weeks later. The exit interview said "career growth." But anyone who had been paying attention knew what had happened. The twenty-two pages were not a proposal. They were a test. The test was failed.
The twenty-two pages were not a proposal. They were a test. And the test was failed.

The escalation arc nobody tracks
What happened to that engineer follows a pattern so consistent that you could draw it on a whiteboard and every senior engineer in the room would nod.
It starts with retro feedback: a specific concern raised in the structured forum designed to surface exactly this kind of input. The concern is noted. Nothing changes.
It moves to backlog tickets: the engineer invests real time scoping the problem, estimating the fix, documenting the impact. The ticket is groomed, acknowledged, and deprioritised in favour of feature work.
Next comes the one-on-one escalation: the engineer raises it directly with their manager, then with the manager's manager, trying to find the right person with the right authority. The concern is heard. Nothing changes.
Finally, the formal proposal: a document substantial enough to force its way onto a leadership agenda. This is the rewrite proposal. It is the most effort the engineer will ever invest and the lowest their belief that anything will happen.
The logistics engineer's eighteen months fit this arc precisely. His retro feedback was specific and technical: the routing engine was untestable, the service boundaries were wrong, any change to dispatch logic required coordinated releases across three services.
Over time, the specifics disappeared. By month twelve, his contributions had shifted from "the engine is untestable and here is why" to "we need better prioritisation of technical work." When specific complaints become vague, the engineer has stopped believing that specifics matter.
Meanwhile, the refactoring ticket graveyard was growing. Eleven improvement tickets filed over fourteen months. Each one groomed, estimated, and ready to be picked up. Each one deprioritised when the next feature deadline arrived.
These tickets were the incremental alternative to the rewrite. The small, manageable fixes that would have prevented the system from reaching the point where only a dramatic intervention felt possible.
By systematically deprioritising them, leadership eliminated the incremental path. The engineer was left with two options: accept that nothing will improve, or propose something dramatic enough to force attention. The ticket graveyard is not incidental to the rewrite proposal. It is the direct cause.
The wrong fix for the right diagnosis
The rewrite should not have been approved. Not because the problems were not real, but because the solution was not viable. A full rewrite of the routing engine would have required migrating eighteen months of business logic, maintaining backward compatibility with three downstream services, and running dual systems during the transition while an operations team retrained around the new one.
His estimate was four months and two dedicated engineers. Realistic? Closer to twelve months and four engineers. Most rewrite proposals underestimate migration complexity by a factor of three to five.
And even when the rewrite is approved, it often fails. An analytics company with fifty-five engineers approved a pipeline rewrite. The proposal was sound. The team executed well. The new pipeline was clean, well-tested, properly documented. Within eight months, the same patterns that had degraded the old pipeline were degrading the new one.
Features shipped without tests under deadline pressure. Refactoring was deferred because the roadmap was full. The principal engineer who had led the rewrite made the observation that should be carved above every CTO's desk: "The cause was not the old code. It was the organisational pattern that created the old code."
The engineer likely half-knew this. Not in the sense that he was being dishonest, but in the sense that the twenty-two pages were not really about the new architecture. They were about forcing a conversation that "we need to refactor the OrderProcessor" had failed to force for eighteen months. None of the quieter signals had produced a decision.
The rewrite was the engineering equivalent of a dramatic gesture after every reasonable request has been absorbed without response. What he actually wanted was permission and capacity to fix things incrementally.
An escalation tactic, not a blueprint.
This does not make the diagnosis wrong. The fourteen-thousand-line routing class, the service boundaries that forced coordinated deployments, the test suite that covered 12% of the critical paths: these were real.
The engineer was right about the problem and probably wrong about the solution. Leadership's mistake was conflating the two. The CTO's "let's revisit in Q4" rejected both the proposed treatment and the underlying disease, delivered in a format that pretended to be a postponement.
The conversation that matters is never about the rewrite. It is about whether the organisation is willing to change how it allocates time and responds to feedback about structural problems. Approving and rejecting are both inadequate if the underlying pattern goes unaddressed.
The rejection gap: where trust goes to die
The CTO said no to the rewrite. This was the correct decision. Then: nothing. No improvement budget. No protected capacity for the incremental fixes the engineer had been requesting for a year and a half. No acknowledgement that the pain was real. No alternative.
I have been that CTO. The rewrite lands on your desk as a technical proposal, and you evaluate it as one. But the engineer is not asking for a technical decision. They are asking whether you heard anything they said for the past eighteen months.
The engineer heard "no, we will not fix this." The CTO meant "no, not that way." But "not that way" without "here is what instead" is indistinguishable from "never."
"Not that way" without "here is what instead" is indistinguishable from "never."
The gap between rejection and alternative is where engineers are lost. Not during the proposal. Not during the presentation with its sharp questions and engaged note-taking. During the silence that follows.
Two weeks of nothing is not a neutral event. It is a message. It says: your eighteen months of escalation, your eleven tickets, your twenty-two pages of architecture and risk analysis, none of it was important enough to warrant a timely response.
What 'no to the rewrite' should actually sound like
A CTO who rejects a rewrite proposal has an obligation that most never fulfil: to respond to the diagnosis, not just the proposed treatment. The rejection and the alternative must happen in the same conversation. Not "let's revisit in Q4." Not "we will think about it." In the room, on the day, before the engineer leaves the meeting.
The response has three components. First, acknowledge the diagnosis. Not the proposal, the diagnosis. "You are right that this system has serious structural problems. I am aware that you have been raising them, and I should have responded sooner." Without this, everything that follows sounds like a polite dismissal.
Second, reject the specific remedy with a clear reason. "A full rewrite carries too much migration risk given our current commitments, and the realistic timeline is closer to twelve months than four. I cannot justify that investment right now." The engineer may disagree with the estimate, but a substantive technical objection is something they can engage with. A vague deferral is not a reason. It is a deflection.
Third, commit to an alternative with accountability. This is where most leaders fail, because a genuine commitment means protecting resources from the very forces that created the problem. "Starting next sprint, we are ring-fencing capacity for structural improvement. You identify the three highest-priority modules. We review progress monthly. I will personally attend those reviews. If we are not making measurable progress in two quarters, we revisit a bigger intervention."
The specific percentage matters less than the structural commitment. What matters is that when the next feature deadline arrives and someone suggests borrowing from the improvement allocation "just this once," leadership says no. That is the test.
The logistics engineer's eleven tickets died because every sprint brought a reason to defer them. The allocation needs a named owner, defined scope, and protection from the same forces that filled the backlog graveyard.
What a substantive rejection includes
Acknowledge the diagnosis. Confirm the structural problems are real and the feedback has been received.
Reject the specific remedy with a clear reason. Migration risk, timeline reality, resource constraints. Give the engineer something substantive to engage with.
Commit to an alternative with accountability. Protected capacity, named owner, defined scope, quarterly review. Defend it when the next feature deadline arrives.
This conversation almost never happens. Not because CTOs lack the skill, but because the rewrite proposal arrives framed as a technical decision and leadership responds in kind. Pulling up the trail of deferred tickets, reviewing the retro history, understanding the full arc of eighteen months of escalation feels disproportionate to a single proposal.
But the proposal is not a single event. It is the culmination of a feedback loop that has been failing for months, and the response will determine whether the engineer stays or starts interviewing.
The cascading failure he predicted
Six months after the logistics engineer left, the routing engine had a cascading failure during peak hours. A minor bug fix triggered an unexpected side effect that corrupted scheduling data for two hundred clients. Eleven hours to resolve.
In the post-mortem, a junior engineer pulled up a document on screen. It was the logistics engineer's architectural proposal, page fourteen, where he had described this exact failure mode: a race condition in the batch scheduling process that would surface under concurrent load when the routing cache was invalidated.
After the incident, the CTO approved a partial decomposition of the routing engine. But the engineer who understood the system best was gone. Two engineers took eight months to complete what he had estimated at four. They did not have his institutional memory, his understanding of the edge cases, his intuition for how routing logic interacted with the scheduling subsystem.
They rebuilt from the architecture diagrams and the test suite, such as it was, and discovered three more structural problems he had documented in tickets still sitting in the backlog. Groomed, estimated, and untouched.
His exit interview quote, the real one, not the "career growth" he gave to HR: "I did not leave because the rewrite was rejected. I left because the rejection proved that nothing would ever change."
His story is not unusual. The twenty-two pages, for all their futility, represented engagement. He still believed the system could be fixed. The worse state is when engineers stop proposing anything at all.
Pull up your backlog right now. Count the improvement tickets that have been groomed, estimated, and sitting untouched for more than two quarters. Check when the last senior engineer proposed something structural. If the answer is months ago, the feedback loop is already dead.
Somewhere on your team, an engineer is deciding whether to spend another weekend writing the proposal, or spend that weekend updating their CV. The rejection gap is not a concept. It is a window. And it closes.