It’s a complaint that’s heard more and more often: why can’t I hire great programmers? Actually the answer is probably not what you think.
Everybody has their own idea of what makes a good programmer. Managers want someone who can “do it once, do it right, do it now”. Architects and engineers want someone who can grasp new ideas and make them real, even when they themselves lack clarity. Programmers themselves have the least perspective, and can’t accurately evaluate themselves, let alone each other.
And yet, clearly, there’s a difference between good programmers and bad ones. It shows in the way they talk. It certainly shows in the way they work. And there just don’t seem to be enough really good programmers to go around.
Just as with any other trade or skill, managers value practice and experience in programmers. “How many years of experience?” you ask, and though you want ten years or more, you usually have to settle for six months. But practice and experience are of no help to mediocre programmers (some people never learn anything), and though they improve good programmers, they can’t make them into great ones. All practice and experience can do is turn everyday tasks into the habitual.
The route to greatness is not, exclusively, time served. Good programmers (and engineers and architects) become great through pushing boundaries, challenging convention, and innovating.
Programming, and the programmers behind it, achieve greatness not by creating websites, but by creating some intellectual foundation which changes the nature of what a website is. They don’t just learn scripting languages, they invent and then implement new kinds of languages. They don’t merely build e-commerce sites, they invent business models that disrupt your e-commerce sites. Basically, they’re doing stuff that you don’t get – yet.
So, if that’s what the great programmers are doing, where are they doing it? Actually, they’re right here, among us, disguised as ordinary programmers. You can spot them, if you know how to look. They make you go “huh?” And when you try to tell them how great your project is to work on, they go “whatever!” But it’s very rare for any employer to push boundaries or challenge convention – they’re usually too busy staying in business. All you ever ask them to do is write your website or program a video game character, and they can’t do a great job of that because that’s not where programming achieves greatness.
If you want the benefit of great programmers working for you, you’re going to have to find something more interesting for them to do. Either that, or let them show you what they can do, unmanaged.