Lots of people talk about wanting to hire the best developers. The reasoning is sound. A good developer is often said to be 10x-100x better than a mediocre developer. In many cases that’s true. I want to go into the cases where this hiring policy doesn’t make sense though.
The first problem with this policy uses some basic math. Only 10% of people can be in the top 10%. Only 1% of people can be in the top 1%.
For every company to hire the top 1% of developers, there would have to be 100 developers for every available job. If that were true, 99% of developers would be jobless. Let that thought sink in for a minute.
What would happen is those developers would stop being developers and suddenly the total number of developers is smaller. That means… the pool of people in the top 1% just got smaller. The skillsets of those developers didn’t worsen, they just compare worse relatively to the new average. Should you now be less happy with your developers if they’re now average, but are still doing the same quality work as before?
Regardless, I’ve been on both sides of the hiring situation and have seen that there is actually much more demand for developers than there is supply. So the choice isn’t getting someone in the top 1% or someone else. The choice is to attempt to get someone in the top 1% or to have no one.
Another problem with this policy is: what actually makes one developer better than another? Is it their ability to handle concurrency? Are they good at data modeling? AI research? Software design?
Being good at software design doesn’t help on an AI project if a developer doesn’t have any AI experience. Being good at AI doesn’t help if there is no AI in a project.
I’ve been in a number of situations where the engineering team was filled with “full stack” developers who were mostly back end developers trying to muddle through writing front end code. Making that first hire for a front end expert does wonders in that situation. The expertise provided helps make the rest of the team much more productive.
That is the secret to the 10x developer. It isn’t someone why types 10x faster than another person. It isn’t even someone who can think 10x faster than another person. It’s someone why can increase the productivity of those around them. Software development is a team activity.
This leads to two points. The first is that there is a diminishing return with those experts. The first one is amazing. Every expert after that has less new knowledge to impart that the previous ones didn’t have. That means their ability to improve the rest of the team’s productivity gets smaller with each expert added and their personal contributions start to be the larger percentage of their value. Most of the people at this level of ability are also going to want to join a company where they can provide the most value (it tends to correlate with career growth). They would be less likely to want to join a company where their impact is minimal.
The second is that most developers can learn and grow to be better. Very few people start off their careers as being the very best. We all start somewhere and that somewhere tends to be at a novice level. Some can make wild leaps in ability within a few months given the right expert/mentor. It can take several times longer than that to hire an expert in the top 1%.
Building an effective team requires knowing whether your need is in expertise or capacity. Holding out to hire someone very very good makes sense when you need expertise (and you can afford to pay for it). If you have the expertise though, it will make more sense to broaden your hiring criteria to those who can grow.
This post was originally published on blog.professorbeekums.com