Flowchart of the three performance criteria every leader needs to make the right performance decisions

Fire, fix, or invest? The 3 performance criteria every leader needs.

Make the right performance decisions before they derail your software engineering team.

If you delegate firing to a team lead, they’ll usually decide to give the person three more months.

Maybe they hope things will turn around. Maybe they don’t want to seem unfair. Either way, they extend deadlines, set up improvement plans, and cross their fingers.

The problem? Most performance plans don’t work. Instead of fixing the issue, they often just drag it out, draining time, energy, and momentum from the entire team.

So how do you know when to keep investing in someone—and when it’s time to let go? In this post, I’ll break down a clear framework for making that decision, so you can act before months of lost progress pile up.


Why 70% of performance improvement plans fail

Pie chart of performance improvement plans showing that 70% fail and only 30% succeed

What people don’t want to hear is that most performance improvement plans don’t work. In my experience, roughly 70% fail. That means a proactive approach — identifying and addressing issues early — is more effective than trying to “fix” someone later.

There are exceptions. Major life events like childbirth, health issues, or personal struggles can temporarily affect performance. In these cases, accommodating someone at 70% capacity, knowing they’ll bounce back at 120%, makes sense.

But if the struggles continue with no sign of improvement, you need a clear system to decide: Is this a temporary setback or a long-term problem?


How to decide: 3 performance criteria

Performance criteria decision matrix based on toxic behavior, time drain, and skills gaps
Performance criteria matrix

1. Is the person toxic? 

A performance improvement plan won’t fix a toxic attitude.

Toxic behavior like gossip, conflict, or undermining others, spreads like wildfire. In these cases, make a radical change quickly. Keeping a toxic person around just lowers the bar for everyone else.

2. Do they consume 60%+ of your time? 

If an employee demands constant intervention, that’s a sign the fit isn’t right.

If one struggling person is draining the majority of your energy, it’s time for a hard decision. Your role is to support the entire team, not become a full-time personal coach at the expense of everyone else. 

3. Is it a fixable communication or technical skills gap? 

💡 80% of the time, underperformance is due to communication and cultural issues, not lack of technical skills.

Most underperformance isn’t about technical ability, but communication skills and cultural fit. If a developer struggles technically but is eager to learn, mentorship, training, and structured guidance can help. After that, they either improve or they don’t.

But if they shy away from communication, avoid asking for help, or resist feedback, the issue goes beyond upskilling. Set up 10–15-minute check-ins every other day with senior engineers, creating a safe space to speak up and course-correct early.

👉 Building trust early can prevent many of these issues before they escalate. Here’s how to do it effectively.


Your action plan: what to do next

1. Don’t passively wait for improvement

Hoping for change without intervention is a leadership failure. Address the situation head-on:

  • If the issue is toxicity, act immediately.
  • If there’s potential for improvement, set clear expectations and provide the necessary support.

Tip: Avoiding action in a toxic situation can destabilize your team, setting back your roadmap by 6+ months and costing millions.

2. Define success in writing

One of the biggest mistakes managers make is setting vague improvement goals that are forgotten in a few months. Write down a clear definition of success. For a developer, this might be:

  • Delivering high-quality pull requests every two weeks.
  • Mentoring a junior developer through their probation.
  • Leading a decision-making meeting.
  • Owning new functionality end-to-end.
  • Improving code quality and deployment speed.

If they don’t meet these standards within a reasonable timeframe, you have a clear reason to take action.

👉 Defining success criteria is a game-changer for performance management. Here’s how to run performance reviews that actually drive improvement


Letting someone go: how to do it the right way

If there’s no improvement, fairness matters, to both the individual and the team. A bad offboarding process can make your team toxic and stagnant. Here are my best practices on how to do it right:

1. Let the team decide, but own the process

Involve your team in firing decisions — it activates the auto-healing mechanism. If you make every call alone, you signal that they can’t solve challenges without you.

But when it comes to the actual exit, handle it yourself. Firing is tough, especially for team leads doing it for the first time. If left to them, they’ll often delay by giving the person another three months.

Instead, ask your team upfront before the person’s probationary review:

“How do you want me to end the meeting? Are we satisfied or not?”

This question removes the emotional burden from them and ensures a fair, clear decision.

Tip: If you have doubts about someone during probationreplace them immediately. After probation, you need stronger evidence before making a call.

👉 Want to set new team members up for success from day one? Follow this 30–60–90-day leadership playbook.

2. Stick to the facts: avoid low-level details

When offboarding someone, don’t get dragged into endless debates over minor performance issues. HR discussions and back-and-forth arguments only complicate things.

Instead, keep it high-level:

“I trust my team, I trust their decision, and here’s the result.”

TIP: If the team is undecided, get input from the product manager, QA, or peers outside the hierarchy; they often have valuable insights you might not see.

3. End on a positive note

A layoff meeting doesn’t have to feel like a funeral. Here’s how to make it constructive:

  • Provide honest feedback to help them improve.
  • Suggest books, courses, communities, or coaching for skill-building.
  • Highlight their strengths and offer a recommendation or referral if they fit elsewhere.
  • Let them know they’re welcome back in a year if they improve.

This approach keeps morale high for the remaining team members, who are watching how you handle exits.


Celebrate success stories

While tough decisions are necessary, most cases end positively: someone improves, integrates into the team, and succeeds.

After a successful turnaround, take a moment to recognize those involved to keep them motivated for the next six months.

  • Thank the new starter for their effort.
  • Acknowledge the team lead and mentor who helped them succeed.
  • Reinforce team pride: highlight the privilege of working with great people.

This keeps momentum high and prevents your team from becoming overly focused on failures.

👉 Want to accelerate your career growth? This guide breaks down a key strategy for getting promoted.

Snapshot of me speaking at an Engineering Leaders Community meetup
Snapshot from one of our Engineering Leaders Community meetups

Always hold the right cards

Great leaders act proactively, not reactively. 

Managing software engineering performance is like playing a strategic game; you need to anticipate risks and make decisions before they spiral.

If you sense an issue, don’t wait six months to see if things improve.

Be the change.


About Marian Kamenistak

Marian provides coaching and mentoring to engineering managers and leaders across various levels, helping organisations to succeed in building products.

On top, Marian leads the Engineering Leaders CZ community, organising 9 meetups a year for Engineering Leaders, Managers, Tribe leads, VPEs and CTOs in Central Europe.

Read more about Marian’s mission.

Subscribe and stay tuned for the next post! 💪

Follow on LinkedIn

Related Posts