One of the very firm beliefs that exist within the tech community is that some programmers are much, much better than others (the 10-times, or 10x, programmer) and can drastically enhance an organisation or team’s performance. This idea is so strong that Stack Overflow and Trello co-founder Joel Spolsky has based his entire business strategy on it (worked so far), and companies like Google have a policy to “pay unfairly” their top performers.
“One top-notch engineer is worth 300 times or more than the average. I would rather lose an entire incoming class of engineering graduates than one exceptional technologist. Many Google services, such as Gmail and Google News, were started by a single person” - Alan Eustace, VP of Engineering at Google
Based on my own experience as a former programming student, as a manager and as a professor at EPITA, I’ve met with a handful of programmers that could be considered 10x and I empirically believe that there are order-of-magnitude differences among programmers. So are 10x developers that impactful? And what does it mean for you in terms of hiring and management?
Myth or not?
I’ve had this discussion countless times over the past years. Many tech professionals argue that the 10x idea is a programming myth and the original study that first mentioned huge variations in individual programming productivity (Sackman, Erikson, and Grant 1968) was flawed. While there have been countless other studies that showed productivity variations between software developers, some still try to prove it doesn’t exist. And I couldn’t care less. The point is not about the number (is it 10x, 20x, 300x), it’s about the fact that having exceptional programmers in your team can change how great your software is.
The dev factory fallacy
The biggest problem with the pushback against a 10x programmer is that some people think of programming as manual labor and programmers as (dumb) assembly line workers. Some programmers are a bit better than others, but surely, a single programmer could not consistently close 10 times as many tickets as another! Nine women can’t produce a baby in 1 month!
This idea has led countless technology organisations to divide their work into the smallest, simplest, batches so that any programmer could do it. And even startups that raise funding, correlate their product objectives with a specific number of developers to hire. But, at the same time, companies like WhatsApp had 55 employees when they were acquired by Facebook, and Basecamp serves millions of customers with less than 20 engineers.
“There is also this idea that you have to keep adding engineering and product resources as you scale your business [...]. I have found this idea to be wrong to some extent. And I have found that really strong execution in product, engineering, and sales, based on doing less, not more, and based on having a high performing team without a lot of baggage, will allow your company to grow fast and be profitable at the same time.” - Fred Wilson co-founder of Union Square Ventures
So it’s not about writing more code; it’s about writing the right code. 10x programmers are impactful, by making design better decisions, not by coding faster or longer. That’s I strongly believe that Joel Spolsky’s strategy (which he laid out before founding Trello and Stack Overflow) is what software organisations should do: hire few very talented programmers, give them the freedom to be creative around design and implementation, ship the best product (and sell it).
Where are the talented developers?
So OK, you’re convinced that you should hire the most talented programmers (duh, as if you were looking for average ones before). Where do you find them, and how do you pay them? First of all, great programmers are rare and will rarely be on the market because they are, well, great. So instead of waiting to find them in the pile of CV you got from your favorite talent agency, you should start considering alternative strategies:
- Use niche technologies: great programmers tend to be attracted to languages or frameworks that are not widely spread (but have some kind of uniqueness). Betting on such technologies could help attract talents that want real use cases to try them;
- Search worldwide: with probably 100,000 programmers missing just in France (see my article about it in French), you will find it very hard to hire locally. But the magic of software development is that great programmers exist everywhere and the technology now allows tech organisations to work well with fully remote employees;
- Build a community (hard): the idea here is to create a large community of like-minded smart developers who cluster around your company, so you have an automatic audience to reach out to every time you have an opening. It’s really hard to do when works well usually when you have an open-source version of your product, work on a niche technology (see above) or have several renowned programmers in your team;
- Hire them young: in my experience, 80% of my engineering students accept one of the first 2 offers they get. So having an aggressive internship strategy will help you create a constant workflow of (future) great programmers, as long as you have enough senior programmers internally to mentor them.