On hiring the best developers

Photo by Mike BairdOne thing that is guaranteed to annoy me is when companies claim they hire “the best developers” or “the best” something else. Here’s a tweet that reminded me of that annoyance just last week. It’s from @BenedictEvans:

The best engineers want to be at tech companies, not agencies. For the best designers it’s the other way around. A problem for both.

It’s a smart insight—essentially, tech companies and agencies value different things, so there’s an imbalance in the tech/design mix of each. But the very concept of hiring “the best” something is just flawed. Here are some reasons why. For simplicity’s sake I’ll focus on developers, but the arguments are more general.

1. There’s no such thing as “the best developers”. Developer excellence is measured in any number of dimensions, not just a single dimension. Writing reliable code is one. More subtly, different individuals are more comfortable and productive with different programming languages, so it varies by that alone. There are other dimensions, too. Writing maintainable code is another. Then there’s… analysing logical problems, analysing business problems, ability and willingness to extend one’s skills into other areas such as testing and/or security and/or architecture and/or team leadership and/or anything else. And so on. Given these and more, you cannot simply say “this developer is better than that one”. The best we can say is “this developer is best suited to these demands, having balanced all the factors”. If “the best developer” is clearly shorthand for that then we’re okay.

2. Developers flourish (or wither) in different environments. As has been discussed on this blog before, regarding Facebook’s purchase of FriendFeed, environment and team make-up make a difference to developers’ effectiveness. And, as above, there’s no single environment that makes every developer more effective. So someone who’s great at one place may not be so great at yours. And vice versa.

3. No-one’s interviewed all the developers in the world. This is being very picky, but, really, if you’re hiring a developer then you’re only hiring the best developer who made themselves available to you at the time. There may be plenty of others who, by your particular measurement of excellence, are even greater, but who just weren’t in the running. All those better developers have been hired by others, not you.

4. You hire for what’s needed at the time. (Usually.) Most organisations don’t get to hire whenever the right person becomes available. Instead, they hire for a fixed number of vacancies, with budget limitations. A thoughtful hiring manager will recognise the particular need (rather than the generic “we need a developer”), and select accordingly. It follows that if two terrific developers present themselves at one time, then one may be hired given the particular need that’s understood today, and the other may be hired were the need different. I recall turning down one particularly outstanding candidate because I felt the present role wouldn’t stretch her, and I feared she’d quickly leave. Fortunately another (slightly differently-shaped) gap became available later and I was able to bring her onto the team for that role. She was a terrific success.

5. “We only hire the best” is a shorthand for something else. It means “We’re more fussy than some other organisations I know” or “I like my developers more than anyone else’s”, or “We try harder than most others I know” or “I don’t compromise on the criteria a set at the beginning”. It clearly expresses something real, even if it does not mean what it literally means.

And if that all sounds very negative, then let’s turn them all into positives:

1. Every developer has multiple talents. Let’s recognise and appreciate that.

2. Developers flourish in different environments, so you can help your developers be more effective by changing the environment.

3. You don’t have to interview all the world’s developers to find the ones that are right for you.

4. If you plan a bit, then your developers will form an A-Team of people which is stronger than the sum of its parts.

5. You have high standards. Excellent, and keep at it.

I think the reason “we only hire the best” annoys me the is that I don’t like the message it sends to everyone else. It downgrades them. And it’s also lazy, because I believe most people who appear to be under-performing really just haven’t been given the right attention and the right environment. The good news is that as a manager you have the power to change that.