Genius: an exceptionally intelligent person or one with exceptional skill in a particular area of activity – Oxford English Dictionary, via Bing
More than once in my career as a software engineer, I’ve come across organisations that make the bold claim that “we only hire geniuses”, or words to that effect. This always puzzles me when I hear it, and I thought I’d come out of blog-hibernation to share my thoughts on why this is.
For starters, what is a genius? By definition (see above), true genius is ‘exceptional’. Most companies I know can’t literally restrict themselves to only hiring exceptional people – there aren’t enough of them – so I think that what they mostly mean when they say this is that their people are “above average” in intelligence and capabilities, probably in the context of what those companies do.
Obviously — most of the time — it’s a bit of marketing spin. It doesn’t hurt a company’s public image to be known as group of geniuses. It’s also likely that these companies intend the assertion as a compliment to their employees.
But the reason I tend to be wary of employers that throw the ‘G-word’ around a lot is that, in my experience, it often means that they have problems that only geniuses can solve, or that anything less than magic just isn’t good enough for them. It’s usually a sign that, somewhere along the line, they’ve worked with an exceptional Brilliant Hacker who was able to get spectacular results really quickly.
You see people like that a lot in successful start-ups. Brilliant Hackers. They’re the ones who built the flashy prototype in a month that wowed the first-round investors with all the bells and whistles. But then the Brilliant Hacker got bored, moved on, and the rest of us had to spend the next year redesigning and refactoring their code, because they couldn’t be bothered to do any documentation or proper design.
I know I’m making some broad generalisations here, but I see this pattern repeatedly in the software industry. Companies that rely on this sort of ‘genius’ end up with a code base of such poor quality that only a genius can work with it, and a lack of process so deep that only a genius can get anything done.
To make matters worse, management are constantly wondering why the people who are left to work with Brilliantly Hacked code can’t pull the rabbits out of a hat the way the Brilliant Hacker did. Refactoring and technical debt sound like burbling and pathetic excuses to managers who are accustomed to working with Brilliant Hackers.
Don’t get me wrong – I genuinely admire people who can get quick and spectacular results in software… and I understand why start-ups often need them. There’s pressure to show results quickly, otherwise they don’t get funded. I also recognise that some problems are genuinely tough, and require genuine talent to solve.
But if you’re going to brag about how brilliant the people are in your company, my first question is going to be “why do they have to be brilliant?” Is it because they’re solving spectacularly hard problems, or is it because they’re too undisciplined to plan and communicate effectively?
In my career, I’ve come to value professionalism and discipline far more than genius or exceptional brilliance. I’d much rather hear a company brag that they only hire genuine professionals, because professionals write better software – software that works and is stable and maintainable over time.
Give me a professional over a genius any day of the week.