You're not a 10x programmer
As I write this, it’s Saturday morning I’m sipping coffee and listening to light rain while sitting on my living room sofa. I hope anyone reading this is as cozy as I am. So please forgive me, and understand that it’s only with sorrow and under duress that I must throw this bucket of cold water on you: you’re probably an average programmer. That’s right, mediocre. Unexceptional.
Why must I treat you so harshly? Because I wish someone had explained this to me when I needed to hear it. If anyone tried, I ignored it, which is why you get the cold water treatment: you’re average, probably.
The trouble is the lack of a universal programmer score. We don’t even have a good way to measure productivity. If there were, hiring programmers would be a simple matter of calling up a recruiter and saying, “I need two grade C devs and one grade A team lead”, followed by interviews to check that everyone gets along. But that’s most definitely not the hiring process.
This lack of a metrics doesn’t stop wild claims of relative programmer scores, like the 10x programmer. That is a programmer capable of doing the work of 10 normals. Let’s suppose you are one of these mythical programming gods for a moment. How would you know? Do you produce 10x the number of lines of code? 10x the story points? Finish 10x the tasks? It must be 10 times something, we just can’t say what.
At best, we have relative scores for programmers doing very similar work. But this isn’t enough for our 10x programmer ego. It’s a poor basis for even a one-percent-better-than-you programmer.
If you feel like a better than average programmer, there’s a 50% chance you’re correct. But you’re at least as biased as the 93% of Americans who rated their driving ability as above average. You see everything you do, but only part of what anyone else does, so it’s easy to feel like you’re kicking ass in a sea of mediocrity when you are, in fact, only competent.
If other people have told you you’re doing a great job, they might be right. Or they may just like you, consider yourself blessed. But unless there’s an objective measure, it’s just another person’s biased hunch.
I’m not telling you anything new. If I take you to a room with several hundred programmers, and tell you pick one at random so we can bet where the guy (also probably a guy) falls on the spectrum of programming skills, you’d no doubt bet that he’s probably average. Sure, your random pick could be in the 90th percentile or the 10th, but the safe bet is on an average programmer. I’m merely suggesting that this basic truth applies to you too.
So you’re average
I hope you don’t find this too depressing. An average programmer is still a good programmer (that’s my biased hunch, of course). Think of how many people began learning to program only to abandon the effort. To stick with it at all means you survived an extensive weeding process. If you’re a professional that puts you in an elite class. All I’m really saying, is that among those elites, you likely have a standard set of skills.
Really though, it’s time to drop the whole concept of ranking yourself. If you’re inferior or superior the result is the same, as no one will attend your parade or your pity party. Embracing mediocrity isn’t a winning strategy either (if you don’t believe me, I can only offer the anecdote of a really bad interview).
So what can you do instead? Beats me, I’m just an average programmer. The best I can come up with is to pick your own metric to base your professional self-worth on and try to ignore this perverse ranking system. Personally, I would like to rate myself on growth and enjoyment:
- What have you learned in the last month?
- When was the last time you enjoyed a task?
- When was the last time you admired something you built?
- When was the last time you admired something someone else built?
These questions don’t always have happy answers. But they shouldn’t, the goal isn’t to feel good, it’s to feel in-line with reality. If I’m not learning something new and having fun, then something needs to to change.
But pick your own values, and make it something you can control. This notion of intrinsically good or bad programmers is dubious for others and harmful to yourself, so just let it go.