HM NayemHM Nayem
All blogs

Hiring is easy. Firing is the skill no one teaches.

·14 min read

Hiring gets all the attention. The job posts, the interview loops, the offer letter, the small celebration when someone good says yes. That is the part everyone talks about, the part that feels like progress, the part you tell people about. But across a decade of building Stack Learner and leading a team that grew to thirty, the decisions that taught me the most were not the hires. They were the times I had to let someone go. Those were the hard ones. Firing well is the harder skill, it carries more weight, and almost no one teaches it.

This is not an article about being ruthless. It is the opposite. It is about the one leadership skill that stays uncomfortable no matter how long you do it, that founders avoid for years, and that quietly decides whether the rest of your team is any good.

Why founders avoid it

Letting someone go feels like a personal failure. You hired them. You believed in them. Some part of you decided this person was worth a place on the team, and now you are the one saying it did not work. So founders delay. They delay for weeks, then months, and the whole time the delay wears the costume of patience.

They tell themselves the person will improve. They tell themselves the next project will suit them better. They tell themselves it is a rough patch, that everyone has one, that it would be unfair to judge someone on their worst quarter. Sometimes one of those is true. Often it is a story you build so you do not have to sit across a table and have the hardest conversation there is.

Notice what those stories have in common. Every one of them lets you do nothing today. That is the tell. A real reason to wait comes with a plan and a date. "He will improve" is a plan if you have told him what improvement looks like and set a time to check. If it is just a hope you carry quietly while nothing changes, it is not patience. It is avoidance wearing patience as a disguise.

The delay feels kind. It is not. It is the most expensive form of avoidance there is. And here is the part that makes it worse: the founder is not the one who pays the bill. The rest of the team pays it. They pick up the dropped work. They sit in the meetings that go nowhere. They watch you tolerate something they would never tolerate, and they draw conclusions about you while you tell yourself you are being generous.

The cost of keeping the wrong person

When you keep someone who is not working out, three things happen. None of them show up on any balance sheet until it is late. All three compound.

  • Your bar drops
  • Your best people notice
  • The work quietly routes around the problem

Your bar drops. The standard on a team is not set by the best work you celebrate. It is set by the worst work you tolerate. You can put "excellence" on the wall and say it in every meeting, but the team reads the real standard off what you actually allow. If someone ships late, ships sloppy, and stays exactly where they are with no consequence, then late and sloppy is now the floor. Everyone saw it. You did not announce a new standard. You just demonstrated one. And people calibrate to the floor far faster than they calibrate to the ceiling, because the floor is where it is safe to live.

Your best people notice. This is the one founders underestimate most, so it is worth being blunt about. Strong performers know exactly who is carrying weight and who is not. They knew before you did. They work next to this person every day, they see the code that does not get written and the tasks that come back undone, and they have already done the math. So when they watch underperformance sit there with no consequence, they do not think "how generous." They think "so this is what is acceptable here." The message they receive is that excellence has no particular value on this team, because clearly the opposite of excellence carries no cost. And the people most attuned to this signal are the exact people you least want to lose. Weak performers rarely quit. Strong ones do, quietly, a few months later, and you never connect it back to the person you were too kind to let go.

The work quietly routes around the problem. This one is almost invisible, which is why it is so corrosive. When a person cannot be relied on, the team stops relying on them. Not in a meeting, not out loud. It happens in the small decisions. Someone gives the important task to somebody else. Someone double-checks the work without mentioning it. Someone stops looping them in because it is faster not to. The org chart still says this person owns their area. In practice the team has rerouted around them like water around a rock. That is real energy spent on management overhead that produces nothing. And under it runs a slow, low-grade resentment, because the people doing the extra work know exactly why they are doing it, and they know you know too.

Put those three together and the shape becomes clear. The cost of keeping the wrong person is almost always higher than the cost of the hard conversation. It is just that the hard conversation costs you one bad afternoon now, and keeping the wrong person costs a little every single day, spread thin across your whole team where it is easy not to see. So founders keep mispricing it. The pain that is loud and immediate feels bigger than the pain that is quiet and continuous, even when the quiet one is far larger. The bill for keeping the wrong person is real. It just arrives late, which is exactly why it keeps getting paid.

How to know it is actually time

None of this means you fire someone for a bad month. A bad month is not a firing offense. Good people have terrible quarters. Someone's parent gets sick, a project goes sideways for reasons that were never theirs, a strong performer hits one hard stretch and comes back stronger. If you cut people at the first sign of trouble, you will lose people who would have become your best, and you will teach everyone else that this is not a safe place to have a bad week.

The signal I learned to trust is a pattern, not an incident. One missed deadline is an incident. A shape that repeats across months is a pattern. The difference between the two is the whole judgment, and the way I check it is three questions.

  • Has the gap between expectation and delivery been consistent, not a single bad stretch
  • Has it survived honest feedback and a real, fair chance to close it
  • Is the person unable or unwilling to meet the bar the role actually needs

The first question separates a pattern from a bad month. The second is the one founders skip, and skipping it is not fair to anyone. You do not get to be disappointed by a standard you never said out loud. Before it is ever time to let someone go, they should have heard clearly, more than once, where they stood and what needed to change, and they should have been given a real runway to change it. Not a hint. Not a hope. A direct conversation and enough time to act on it.

The third question is the hardest and the most important. Unable and unwilling are different problems, but for this decision they land in the same place. Someone unable to do the job at the level it needs is not going to grow into it just because you waited longer. Someone unwilling has already told you their answer through their choices. Either way, more time does not fix it.

If all three are yes, waiting longer helps no one, and it helps the person least of all. People feel when they are not succeeding. They feel it before you say it. Dragging it out does not spare them anything. It just extends the stretch of time where everyone in the room knows the truth and no one is allowed to say it, which is a quietly miserable way to spend your working life. Clarity, even hard clarity, is more humane than a slow fog everyone can see through.

Doing it with respect

If it is time, the goal is simple to state and hard to do. The person should leave understanding why, treated like an adult, told the truth plainly and kindly. Clarity, speed, dignity. Everything else is a variation on those three.

Clarity means there are no surprises. If the conversation lands as a shock, that is not a sign you did it gently. It is a sign you failed earlier, because it means the person had no idea they were struggling, which means you were never honest with them about where they stood. The kindest version of this decision is built weeks before the decision, in the honest feedback that let the person see it coming. By the time you are in the room, the news should be a confirmation, not an ambush.

Speed means you do not drag it across weeks of hints. Once you know, dragging it out is not mercy. Do not go cold in meetings and hope they read it. Do not start routing work away from them and let them feel the temperature drop without a word. That is not softer. It is crueler, because it makes someone live inside a decision that has already been made while pretending it has not. When you know, say it, clearly and soon.

  • Do tell them the real reason, plainly
  • Do give them the news yourself, in person where you can
  • Do let them keep their dignity on the way out
  • Do not soften it into confusion they have to decode later
  • Do not litigate every past mistake to justify yourself
  • Do not let them find out from anyone but you

Dignity is the one people watch most, though no one admits it. How you let someone go is seen by everyone who stays. A team does not learn who their leader is from the good days, when everyone is winning and it costs nothing to be generous. They learn it from the worst moments. They watch how you treat someone on their way out, someone who can no longer do anything for you, and they quietly file away what that says about how you would treat them. Handle it with fairness and respect, and the people who remain trust you more, not less. Handle it with coldness or blame, and every strong person on your team makes a note. This is why respect here is not softness. It is the most practical thing you can do, because the audience is not the person leaving. It is everyone who is staying.

Hire better so you fire less

The best way to fire less is to hire better. And most hiring evaluates the wrong things, which is why most teams end up carrying people they should never have hired.

Screening engineers full time at Toptal taught me this in a way building my own team never quite did. When you build one team, you hire a handful of people a year, and every one of them is tangled up with urgency and hope and the specific hole you are trying to fill. When you screen engineers full time, you assess a large number of people against one consistent bar, over and over. That volume does something to your eye. You stop being fooled by surface signals, because you watch them fail to predict the outcome again and again.

Here is what those surface signals are worth. A polished resume tells you someone has done impressive-sounding things and can describe them well. A confident manner tells you they are comfortable in a conversation. Neither one tells you whether they can do the actual work sitting in front of them. I watched impressive people freeze on real problems and unassuming people quietly solve them, enough times that the two stopped being connected in my head. Impressive is a story about the past told well. Effective is what happens when you hand someone a hard, ambiguous problem and watch.

So the things that actually predict good hires are duller and harder to fake.

  • Can they solve the specific problem your business actually has
  • Do they think clearly under pressure, or only when the path is obvious
  • Do they own outcomes, or just complete the tasks they were handed

Hire for the problem, not the resume. The best engineer in the abstract is not the same as the best engineer for the messy, specific thing your company needs done, and the resume optimizes for the abstract. Ownership is the one I weight most. Someone who owns an outcome will notice the thing you did not ask about, chase down the reason something is off, and carry a problem to done without being managed through every step. Someone who owns tasks does exactly what was written down and stops, and then the thinking is still your job.

All of this is one skill, and its name is calibration. You only know what genuinely strong looks like once you have seen it enough times to recognize it instantly, and to recognize the convincing imitation of it just as fast. Before you have that calibration, you hire impressive people and hope. After you have it, you stop hiring impressive people and start hiring effective ones. The two are not the same, and the gap between them is where most bad hires, and therefore most future firings, are born.

The skill no one teaches

Anyone can hire on a good day. When the candidate is strong, the interview goes well, and the future looks bright, saying yes is easy and it feels good. That is the part of this job that comes naturally, and it is the part everyone practices.

The founders who build something lasting are the ones who can also do the other thing. Have the hard conversation, early, before the cost has spread through the whole team, and have it with respect. Understand that protecting the people you want to keep sometimes means removing someone you hoped would work out. That is not the ruthless part of leadership. It is the caring part, aimed correctly, at the team as a whole instead of at one person you feel bad about. Letting the wrong people go is also part of what eventually lets a team carry real weight on its own, but that is a longer story than this one. The point here is narrower and it is enough.

Hiring is the skill everyone celebrates. Firing is the skill no one teaches. And it is the one that separates a real leader from a merely nice one.

HM Nayem
Founder @ Stack Learner · Director of Engineering @ Toptal
Work with me
Newsletter

Notes on building things that last

Occasional writing on product, engineering, and building a company, sent when I have something worth saying. No noise.

No spam. Unsubscribe anytime.