Nobody Cares About 10x Developers
To be more specific, nobody cares about 10x developers except other developers.
Of course any person would choose a developer that could write code in one hour versus ten hours or code that was ten times more maintainable, all other things being equal. But when it comes to business success or failure, a developer that is ten times better only when sitting at the computer is essentially the same as any other developer of average competence.
This diagram by Rich Hickey, from his talk Effective Programs, really gets to the point. The bottom levels of problems are generally solved by developers who are thinking about code. The top level of problems can’t be solved by even the cleanest, fastest, most maintainable code.
So much of our focus as developers is on what happens after the IDE is pulled up. Even when we describe senior developers as knowing what code not to write, it’s frequently within the context of code instead of the context of understanding. 10x developers speedily create elegant code that solves the wrong problem due to not understanding what the business needs. They provide the exact same result as the developer who plods along creating tightly coupled, untestable code that doesn’t solve business needs. The only difference is that it’s faster and prettier to look at.
At one company I worked for, we created a beautiful system that was fast, scalable, and technically the best software I’d ever had the pleasure of working on. And because it was the wrong thing for the company, it did not matter that our system was the fastest in the industry or that it was functional or whatever other metric we like to brag about.
Nobody cares about 10x developers because they don’t determine the success or failure of a business. A business can only succeed if there are 100x or 1000x developers who work at the top level of problems. Either way, the obsession with 10x developers is simply a premature optimization that we would do well to grow out of as an industry.
Thanks to Tim Pote for reading a rough draft and providing good feedback.