A few years ago I signed off on a senior backend hire who interviewed beautifully. Sharp answers, confident on distributed systems, name-dropped the right papers. Nine weeks later we were unwinding a payments reconciliation change he had shipped that silently double-counted refunds for a subset of merchants. The fix took two engineers eleven days, plus a very uncomfortable call with our compliance officer about whether we had to file anything. He was gone by the end of the quarter. On paper, that hire cost us his prorated salary. In reality it cost us a great deal more, and almost none of it showed up on the line item labeled "salary."
The number people quote for a bad hire is usually some multiple of annual compensation. That framing is comforting because it is tidy. It is also close to useless, because it hides where the money actually goes. I want to walk through where it really goes, because once you see it clearly, your whole posture toward hiring changes.
The salary is the cheapest part
Say you hire a mid-level engineer at 120k. If they don't work out and you part ways at month five, the salary you "wasted" is around 50k. That is the number a spreadsheet shows you, and it is the number that makes people shrug and say hiring is just a numbers game. But the salary is the one cost that is bounded, predictable, and recoverable. You stop paying it the day they leave.
Everything else is the expensive part, and most of it is unbounded. The salary is the deductible on the policy, not the claim. When I think about a bad hire now, I mentally throw the compensation figure away entirely and look at the second-order damage, because that is where six-figure holes actually get dug. The comp number is a floor, and a low one.
The tax they levy on everyone else
A weak hire does not just fail to produce. They actively consume the output of people around them. Your best engineer now spends two hours a day in code review untangling submissions that shouldn't have been opened. Your tech lead is re-explaining the same architectural boundary for the fourth time. Standups get longer because someone needs hand-holding through work the rest of the team would have done silently.
I have watched a single struggling hire drop a five-person team's effective velocity by what felt like a third, not because they did nothing, but because they redirected everyone else's attention. That is the cruel math of it. The cost is not the empty seat; it is the four productive people orbiting the empty seat trying to keep it from making things worse. And your strongest people feel this most acutely, which brings me to the part that actually keeps me up at night.
The quiet resignation of your best people
Good engineers have options. They always have options. What they are quietly measuring, every single week, is whether the environment respects their standards. When you hire and then tolerate someone who ships sloppy work, misses obvious edge cases, or coasts, your best people read that as a signal about what you actually value. Not what you say in the all-hands. What you tolerate.
I lost a genuinely excellent staff engineer once, and in her exit conversation she was blunt: she was tired of being the cleanup crew for other people's work. She never named the specific person, but I knew exactly who she meant. Replacing her took seven months and a recruiter fee that dwarfed anything the original bad hire "saved" us. The bad hire cost me a great hire. That is the transaction, and it is the one nobody puts in the spreadsheet.
The true cost of a bad hire is rarely paid by the bad hire. It is paid by the best person on the team, in the currency of their patience, and they pay it right up until the day they stop.
The manager hours nobody budgets for
Managing out a bad hire is slow, deliberate, and emotionally expensive work, and in a regulated environment you cannot cut corners on the paper trail. You need documented feedback, a real performance plan, clear milestones, HR alignment, and enough runway that if it ever gets contested you can show you acted fairly. That is not a bad thing; it is how you treat people like adults. But it is dozens of manager hours that are not going toward the roadmap, toward growing the people who are thriving, or toward hiring the replacement.
I budget roughly six to eight weeks of meaningful management drag around a serious underperformance case, from the first honest conversation to the last day. During that window the manager is running at reduced capacity on everything else. If that manager oversees a team of six, you have effectively taxed all six for two months. Multiply that by whatever your fully loaded manager cost is and the figure stops being abstract in a hurry.
Enjoying this article?
Get more like it in your inbox — practical engineering leadership, fintech, and AI. No spam, unsubscribe anytime.
The decisions that quietly rot
This is the one that scares me most in fintech, and it is the hardest to see coming. A weak hire in the wrong seat doesn't just write bad code. They make decisions. They design a schema, pick a queue, model a ledger, choose how idempotency keys work on a payment endpoint. And those decisions calcify. Six months later, three other services depend on the shape they chose, and the shape was wrong.
The refund double-counting bug I mentioned at the top wasn't really a code bug. It was a modeling decision that treated a partial refund as a distinct entity instead of a state transition on the original transaction. That single wrong mental model propagated into reports, into a reconciliation job, into a merchant-facing dashboard. Ripping it out touched four systems. A bad hire's worst legacy is not the ticket they fumbled; it is the assumption they baked into your foundation while everyone was looking somewhere else.
The costs that never hit a ledger
Some of the damage genuinely never shows up as a number, and pretending otherwise is dishonest. There is opportunity cost: the feature that shipped a quarter late because the team was firefighting. There is reputational cost: the merchant who churned after the third billing discrepancy and never told you why. There is the trust cost with your own leadership, when you have to explain, again, why a committed date slipped.
When I try to give people a feel for the full picture, I list it out plainly rather than hide behind a single multiplier:
- Recruiting and onboarding spend, sunk the moment they leave
- The productivity tax on everyone who reviewed, mentored, or unblocked them
- The management and HR hours spent documenting and exiting
- The rework to undo decisions that hardened before anyone caught them
- The morale hit, and the very real risk of a top performer walking
- The opportunity cost of every roadmap item that stalled during the mess
- In our world, the regulatory and audit exposure if their work touched money or customer data
Add those honestly and a bad mid-level hire can run three to five times comp before you count the great engineer they drove out. The multiplier people quote isn't wrong because it's too high. It's wrong because it's a single number pretending to be a distribution.
Why we still rush it
Knowing all this, why does everyone keep hiring in a hurry? Because the pressure is real and it points the wrong way. A team is drowning, a manager is begging for headcount, a quarter's roadmap is at risk, and an empty seat feels like a bleeding wound you have to close now. So you lower the bar by a hair, tell yourself you'll coach the rest, and extend the offer. I have done it. I have talked myself into a "good enough" candidate because the alternative was another two months of searching.
That instinct is exactly backwards. An empty seat is a known, bounded cost. It is annoying and it is visible and it hurts, but you can plan around it. A wrong hire is an unknown, unbounded cost that also feels like progress, which is the worst possible combination, because it stops you looking. The seat you didn't fill can't drive your best engineer to quit. Slow is not the enemy here. Wrong is.
What I actually do differently now
I stopped optimizing my hiring process for speed and started optimizing it for the cost of a false positive. Concretely, that means a work-sample stage that looks like the actual job, not a whiteboard puzzle. It means at least one interviewer whose only job is to find the reason to say no, so the enthusiasm of everyone else has something to push against. And it means I would genuinely rather pass on three good candidates than accept one wrong one, and I say that out loud to the panel.
It also means being honest that no process catches everyone, so the other half is moving fast once someone is clearly not working. The kindest and cheapest thing you can do for a mis-hire is act early, with a clear plan and a straight conversation, instead of letting it drift for two review cycles while everyone around them quietly burns out. Most of my expensive mistakes were not hiring the wrong person. They were knowing within six weeks and doing nothing about it for six months.

Conclusion
So here is the reframe I'd hand my younger self. Every offer letter is a bet, and you have been pricing it wrong your whole career. You have been staring at the salary, the one number on the table you can actually afford, while the real stake sits off-screen: your best engineer's patience, your team's standards, a modeling decision that will still be wrong two years from now. Price the bet by its downside, not its sticker. Do that, and you will slow down in exactly the places that used to feel too slow, and you will move fast in the one place it counts, which is the day you finally admit a hire isn't working. The most expensive hire I ever made looked, on paper, like a bargain. They almost always do.
Get new posts in your inbox
Occasional, practical notes on engineering leadership, fintech, and building with AI. No spam, unsubscribe anytime.
Comments (0)
Leave a Comment
No comments yet. Be the first to comment!

