There has been a lot of discussion about 10x engineers lately. Do they exist? Are you one?
What's a 10x Developer?
10x developers are quasi-mythical programmers whose ability to design complex systems and hammer out production-ready code is legendary. Their impact on their project or team is felt for years after they stop contributing, and their contributions don't stop there.
10x what, you ask? The name is vague. Perhaps it's 10 times more productive than a median developer.
Do 10x developers exist?
Are there developers who are immensely better than others?
Let's ask this in a slightly different way: what is the probability distribution of human ability? Most people assume it's normally distributed:
If you're lucky, then, you're one or two standard deviations above the mean. This means that there aren't really many great developers, nor are there many terrible ones. Perhaps they find another career.
Assuming it's normally distributed isn't that bad of an assumption. The IQ test, for instance, is normally distributed. But there's a major problem with that: the IQ test is normalized. Is intelligence really normally distributed? Maybe.
Have you hired developers? How many applicants fail at each stage of the process? Many friends I've quizzed about this report that each step of the process tends to remove a majority of the remaining candidates.
Would this be the case if the distribution of developer ability was normally distributed?
Perhaps it's something else.
But, instead of using anecdotes and feelings, let's consult some studies.
Two professors of scientific management sought to answer this question: is individual performance normally distributed?
They answered this question in a paper called, "The Best and the Rest: Revisiting the Norm of Normality of Individual Performance" Unfortunately, this paper is behind a pay wall, so I'll summarize.
If you're an academic, your life motto becomes, "Publish or perish." If we measure the total number of papers each scientist publishes and then lump them into groups, we can measure the size of each group.
What does that group distribution look like1?
This is a power law or a Pareto distribution2. Well, science is a tough job. What about another field? The authors found that these distinct fields had a similar distribution:
- Emmy nominations
- Nominations to the US House of Representatives
- Major League Baseball player errors
- NBA career points
This is not an accident or a fluke of statistics. Many studies show similar results. Human ability is not distributed normally, but instead according to a power law distribution.
Further, the power law distribution indicates that people who are truly exceptional are not just 10 times better then the median, they are 100 times better or more. These people are extraordinarily rare.
Most people are below average. Why would you think software engineering is an exception to this rule?
Back to Hiring
If developer ability was structured in a similar way, that most developers aren't good, and there are very few that are very skilled, what would we expect to happen when we try to hire engineers?
We would expect the vast majority to fail even simple tests. And that's what happens.
Obviously un- and under-employed developers are even more common because the good developers already have very rewarding, high paying jobs, so this isn't definitive proof by anyone's metric, but it is telling.
How to you handle these giants among men if you do happen to hire one? I have no idea. Autonomy is probably a good place to start. There is another paper by the same authors called, "Star Performers in Twenty-First-Century Organizations", which deals with management techniques for power law employees. Good luck!
Who are these 10x developers?
Fabrice Bellard would count in my book. As would Jeff Dean, and maybe even Doug Lea. They certainly exist.
What sets them apart from the rest of us?
They solve not only difficult computer science or software engineering problems, but they solve ones that need solving. Often before the rest of us realize we have or will have that problem. They also solve lots of them.
Fabrice Bellard, for instance, has written a 4G LTE basestation, QEMU, FFMPEG, JSLinux, broke the record for most digits of Pi calculated, has written two C compilers, and more. Writing even one of those projects would make you an awesome developer. Having all of them on your resume makes you phenominally good.
Am I a 10x Developer?
The flip side of this Pareto coin is that they are extraordinarily rare. You probably are not hiring 10x developers, and the idea that you only hire them is just ludicrous.
Focus on hiring solid employees you can train and less on rockstar ninja super coders.
Can I become a 10x Developer?
Others have spoken on this topic and declared that the drive to be phenomenally good will likely be detrimental to your well-being. I tend to agree.
Being phenomenally good at programming isn't about coding 10x faster (horrific advice in that post, by the way), or about following "tips" from dubious sources.
Will working at night help you be 10x? Of course not.
Instead, you can work much more effective in a different way.
Become a multiplier
What I am trying to do instead of being, on my own, phenomenally good, is to become a multiplier for the teams I work on. Naturally, Bellard and his ilk are so good on their own that they are multipliers.
If I can write a library to help my fellow engineers, or debug a build process gone awry, I've not only done some cool stuff, but I've helped them be more effective.
Linus Torvalds is the most well known multiplier out there. How many people are more productive today than they would be without Linux or git? Knowing what problems to solve is just as important as knowing how to solve it.
If you focus on helping others, by writing useful software that solves real problems, rather than on how many line of code you can type, your ability and career will show that effort. Lone wolves are just that: alone and struggle to influence their environment and others.