Steve Jobs, You’re Wrong About Superstar Coders
Steve Jobs is considered a genius, a revolutionary. He is thought of as someone who had the vision to make personal computing possible and drove Apple into the multi-billion-dollar company we see today.
He did make his fair share of controversial opinions, and one of these is simply damaging. In one interview Jobs stated:
“The difference between the average software developer and the best is 50:1; maybe even 100:1”
This is discouraging for many developers in the industry. If you can’t be the best, why bother? The best gets to act as jerks since they are an order of magnitude better, so the industry needs to enable their behavior. This makes sense, if there is evidence for the claim beyond Steve’s experience.
On review of the evidence, we can clearly say this: There isn’t any evidence.
Data Driven Decisions…I Wish
I wish that decisions in software engineering were based on evidence and not hunches.
I used to think one of the most exciting parts of development is measuring and analyzing the behavior of customers with data and making improvements based on this evidence. I now understand that in my place A/B testing isn’t possible, because we need to investigate how it might be done (a process now in its third year), the blocker being nobody wants to make it happen.
So, when we throw around 100x based on a hunch it’s problematic. Job’s assertion lacks empirical backing yet has become “the truth” in the tech industry.
It’s a made-up* metric that sets us all up for failure as policies based on this rubbish are castles built on sand.
Labeling developers is a harmful Practice
Steve Jobs set a terrible precedent in labelling developers that many have chosen to follow. Let me give you an example.
I’ve worked with programmers who are seen as better than their peers. They tend to work like twice as efficiently as other programmers in the company, which is really fine. Yet there are other programmers who love to help their colleagues making the whole team more efficient, actively helping them get unstuck and improve the codebase.
You can guess who got the most recognition and reward. We labelled the individual contributors 100x and gave them more opportunities, attention and praise. This actually helped these programmers work better at the expense of more cooperative software engineers.
The Arrogance of the 100x Mentality
The back-slapping celebration of 100x comes at a price. At my company, there isn’t any training or investment in people, so to be an over-performer you need to bring your 100x talent with you.
The mindset is either you are great, or you’re not. There is no pathway to becoming great, and no training plan for excellence.
I can see software engineers who believe they’re special in their programming skills. They act like jerks and assume a skill issue if you don’t agree with them (even if they haven’t adequately justified themselves). They don’t reveal that their skills have been boosted by study and hard work, they imply that to be the best is an intrinsic skill that can’t be learnt.
More junior colleagues are being driven to stop reading, learning and improving because they don’t see a path to becoming the best. If you’re truly a super developer, you should be demonstrating your attitude and work to others.
Solutions
Work as a Team
Other industries understand the value of hard work, experience and teamwork. No single person built the Golden Gate Bridge (engineering design by Joseph Strauss, Charles Ellis, Leon Solomon Moisseiff, if you were interested, but many more were involved)!
In tech, we know that the iPhone wasn’t a Steve Jobs solo project, but the phone is typically attributed to Jobs’ genius.
Be 100x at Learning
If you want to be the best at something you should work at being the best at learning. Study. Help others.
This is something more than aiming at being the best, and 100x your adaptability.
Conclusion
The tech industry needs to move away from the 100x developer myth. It’s damaging to all software engineers as it promotes the individual over the team in a way that doesn’t support growth and learning.
Instead of idolizing the 100x developer let us instead create a collaborative environment that celebrates growth and team success.
Please?