Letting go of one of my best-performing engineers was by far one of the hardest things I’ve had to do as a leader. I still think if I could’ve gotten a different outcome.
Leading people is hard because people are leaky abstractions. In software engineering, a leaky abstraction is a bad abstraction that shows details and complexity it is meant to hide. The famous engineer Joel Spolsky said there is no such thing as an abstraction that does not leak away details when things are complex enough.
Human behavior is as complex as things get. Trust me, writing code is easy compared to understanding and getting people to work together in a team environment. This irrational human behavior is why many software engineers shun the management path.
Personal performance isn’t everything.
The paradox that I would let go of one of my best-performing people is not lost on me. But sometimes you have to. The way people work in a team is just as important, if not more so, than their personal performance. I learned the hard way that no matter how plump and big a bad apple in a case looks, it isn’t bad because that apple does not do its part to fill the case. A bad apple is bad because the worms will spread to the other apples too.
We might overlook the shouting with a person like this in our one-on-ones about things they don’t like because we can handle that. We might look at their flare-ups with the team as coaching opportunities. We can try to explain how their behavior is impacting others. We might even show them that their quest for perfection is creating a toxic environment. But in the end, only they can change their behavior.
It’s easy to push out someone who doesn’t care to work or refuses to improve. Those situations are cut and dry. But it’s a lot harder when someone is doing great personal work but displays terrible behavior. How do we know when enough is enough?
In the end, for me, once worms showed up in one other apple, it was clear what I had to do. The impact of that decision on the team was immediate.
As soon as the bad apple was gone, other people on the team started contributing and participating more. A toxic high performer might contribute and work hard, but their attitude will inevitably suppress others' performance. A junior person told me privately that they had stopped sharing their ideas because they would always get shut down.
This isn't an easy problem; most people problems aren't. Knowing when to try and do more and hope to help someone's behavior vs. when the impact on others is too much to bear. I developed a principle from this: we can tolerate and try to help right up until a worm shows up in one other apple. If that happens we need to move fast.