At the start of the month, I was on a panel at Unified Diff (which, if you're in the South Wales area, is well worth your time going to every month), and the last question we had is well worth expanding into a blog post. We were asked what each of us would do with a failing developer, and everyone was taken aback by my unequivocal answer: I'd fire them. After some back and forth between us (which carried on over a pint afterwards), my fellow panelists concluded that I seemed to be able to afford higher standards than they could in their organisations.
And that comment really struck a chord with me.
Fire Failing Developers
So why would I fire the failing developer? By keeping that person on you're damaging the morale of the rest of the team, and you could end up losing good people and being stuck with the one you should have fired in the first place. (Guess who learned this one the hard way!) You're also wasting your firm's money on the person, you're probably damaging your product, and if the person has any direct contact with your customers, you're probably damaging your firm's reputation there too.
Can you turn a failing developer into a star developer? Perhaps, and you should definitely try to do so. In fact, that's part of your job - to spend every single day trying to turn every developer you manage into a star in their own right. Never wait for someone to start to fail. If you're doing your job right, then when someone reaches the point where they've become a failing developer, you've already done all you can about it.
I've had to do it a few times over the years, and it feels bloody horrible every time. It's not a nice thing to have to do, whether it's an employee or a supplier. I always want to see the best in someone, and I always want them to have the success they deserve. But it's part of the job, and you do no-one any favours by not facing up to it if it has to be done.
Why Do You Aim So Low?
What about higher standards? How come I seem to be able to afford them when others feel they cannot?
When I was a kid, I sat a lot of exams throughout my school years, but I was never remotely interested in how well I'd done versus everyone else. What I cared about was measuring myself against what was possible. How high could I consistently score? What was the next level up of test that I could sit? What could I learn from other sources? How could I apply it, play with it, really get inside it to start to actually understand it a bit? Where did the hard work need to be put it to take it further still? How could I have fun with it?
I've applied this approach to everything I do, whether it's software engineering, writing, speaking, music, photography, or my martial arts. And I have found it to be liberating. My constraints are my slow-witted mind, my somewhat broken body, and the march of time a€¦ and I am in competition not with you, and not with failure, but only myself.
In a world of frankly very low standards, if all you do is measure yourself against the people around you, then it really doesn't take much to seem like you're doing pretty well. There are a lot of advantages to being ahead, it's true, and evolution does favour the lazy a€¦ but you'll never amount to anything much, and you'll never achieve anything worth a damn if you don't lift your gaze, look out to the stars, and see what can really be done.
This world is full of people with amazing potential, who never realise that potential. They're just a waste of space. You can better tomorrow than you are today. Aim high. You can do it. Everyone can do it. You just have to choose.
We don't have a lot of time to achieve things in life, and as you get older, you become more and more aware of just how quickly the days are passing. Every day you spend just trying to get through the day a€¦ you can't get that day back. It's gone forever. And you never know when fate is going to cut your days suddenly short. Make the most of them. Achieve something worth while, and aim high when you do.