We fired our top talent. Best decision we ever made.
It sounds crazy, doesn‘t it? Firing your most skilled, productive developer – the person who knows the systems inside and out and churns out code faster than everyone else. Conventional wisdom says that‘s the last person you should let go.
But sometimes, conventional wisdom is dead wrong. Sometimes your "10x developer" is doing more harm than good, and your team will actually be better off without them.
We learned this lesson the hard way. Let me tell you about our Dr. Jekyll developer, and how getting rid of him was the best decision we ever made for our product and our team.
The rise and fall of a tortured genius
On paper, Rick (not his real name) was the ideal developer. He had an encyclopedic knowledge of our product‘s architecture. He could anticipate future requirements and cranked out clever solutions to complex problems at a dizzying rate. For a long time, he was the go-to guy on the team – if you had a question or needed help, you went to Rick.
But slowly, Rick‘s "genius" started to become a problem. He preferred to work alone, and spent more and more time isolated in his private workspace. His whiteboard, where he would enthusiastically sketch out solutions for colleagues, lay abandoned. He stopped contributing to code reviews and standups. Whenever anyone else‘s code had a bug or failed a test, he would revert it immediately, complaining that he couldn‘t be held responsible for other people‘s faulty work.
As Rick became increasingly protective of the codebase and resistant to outside input, the project timelines started to slip. But he always had an excuse – the requirements were unclear, the testers weren‘t doing their jobs, the rest of the team lacked his sophisticated understanding of the problems. He began to publicly berate colleagues for their perceived stupidity and incompetence.
The once-amiable Jekyll had fully transformed into a toxic, belligerent Hyde. And it was destroying our product.
The true cost of a toxic genius
The statistics on toxic employees are sobering. According to a Harvard Business School study, a single toxic employee can cost an organization more than $12,000 per year, not including the ripple effect on team morale and productivity. Dylan Minor, the researcher behind the study, found that roughly one in twenty employees can be categorized as toxic – and that their behavior is contagious, dragging down the performance of entire teams.
As developers, we often think of cost in terms of lines of code or technical debt. But there‘s also an immense human cost to working with toxic people. Employees who have to deal with rude, arrogant, or belittling coworkers are more likely to become disengaged, make mistakes, and ultimately quit.
In Rick‘s case, his toxicity manifested in several destructive ways:
-
Hoarding knowledge: Rick‘s solo coding style meant that crucial architectural decisions and product knowledge resided only in his head. His failure to document or explain his work created a single point of failure for the team.
-
Clever but unmaintainable code: In his quest to prove his superior skills, Rick would write dense, over-engineered solutions using esoteric language features. His code was a nightmare to debug or extend, requiring constant rewrites.
-
Destroying team psychological safety: Rick‘s public belittling of colleagues created an environment of fear and self-doubt. Team members stopped speaking up in meetings or offering dissenting opinions, stifling creativity and collaboration.
-
Lack of accountability: In Rick‘s world, every bug or delay was someone else‘s fault. He refused to take ownership of his mistakes, eroding trust with management and colleagues.
The undue influence of a single toxic team member can be insidious – like a slow poison, it‘s easy to overlook or rationalize away the damage until it‘s too late. As a team lead, I was guilty of making excuses for Rick‘s behavior because of his outsized contributions. But ultimately, no amount of individual output is worth sacrificing the health and harmony of the team.
Building a better team without the prima donna
Once we made the difficult decision to fire Rick, we were faced with a daunting task: replacing the work of our most prolific developer. But as it turned out, we didn‘t need another 10x developer – we needed a cohesive, collaborative team.
The first order of business was conducting a full audit of Rick‘s codebase. As a team, we systematically reviewed each module for quality and maintainability. The process was illuminating. We discovered hidden dependencies, hard-coded secrets, critical bugs that had never been addressed. We also identified significant areas of over-engineering and redundant functionality.
Rebuilding a cleaner, simpler codebase took a few months and required all hands on deck. Here‘s how we did it:
-
Ruthless refactoring: We eliminated dead code, simplified control flow, and extracted reusable libraries. Applying SOLID principles and design patterns made the codebase more modular and maintainable.
-
Comprehensive testing: We committed to 100% unit test coverage and invested in integration testing, continuous integration, and static code analysis. This gave us confidence to make changes without breaking existing functionality.
-
Collaborative coding: Pair programming and code reviews became the norm. By constantly rotating pairs, we disseminated knowledge and leveled up skills across the team. Difficult problems became opportunities for team learning and bonding.
-
Agile development: Instead of huge, infrequent releases, we focused on delivering small, incremental improvements to production. Daily standups and sprint retrospectives helped surface blockers and continuously improve our process.
As a result of these efforts, we were able to deliver a more reliable, performant, and user-friendly product – all while working fewer hours and having more fun.
Lessons learned
Firing a toxic employee is never easy, even when it‘s clearly the right call. Rick‘s departure forced us to confront some hard truths about our team culture and development practices. Here are some of the key lessons we learned:
-
Team health is paramount: No individual contribution is worth sacrificing psychological safety, trust, or collaboration. As a leader, it‘s your job to protect and cultivate a positive team environment.
-
Technical debt is more than just code: Rick‘s toxic behavior created hidden costs in team productivity, morale, and turnover. Ignoring or accommodating bad behavior is a recipe for dysfunction.
-
Hire for character, train for skill: Technical skills can be taught, but character is much harder to change. Screen candidates carefully for emotional intelligence, humility, and coachability.
-
Embrace simplicity and maintainability: The most valuable codebases are those that are easy to understand, modify, and extend. Prioritize readability and simplicity over cleverness.
-
Continuous improvement is a team sport: Regularly solicit feedback from team members and stakeholders. Foster a culture of learning and experimentation, and celebrate failures as opportunities to grow.
The experience of firing Rick was painful, but it made us a stronger, more resilient team. By prioritizing team health and investing in collaborative practices, we were able to increase velocity, quality, and job satisfaction.
As a full-stack developer, I‘ve seen my fair share of brilliant jerks. I‘ve also seen the incredible results that can be achieved by a diverse, supportive, and highly-engaged team.
The myth of the 10x developer is pernicious because it perpetuates the idea that individual performance trumps team cohesion. But as our experience shows, even the most talented developer can become a liability if they can‘t work effectively with others.
At the end of the day, software engineering is a team sport. No one achieves anything great alone. By valuing humility, empathy, and collaboration as much as technical chops, we can build healthier, happier, and more innovative teams.