The 1/10x developer

The 10x developer is a common myth. That there are developers out there that are 10x as productive as a “normal” developer. Some people believe in them and some don’t, but probably YMMV when you define “normal”.

For me, I’m a believer in the opposite the 1/10 developer because I am one! I’m doing a bit of work looking at other programming languages. But since I don’t grasp the slightest thing about how they work and they are both from an open-source background, there are a million ways to skin each cat. That means that I need to spend 3-30 minutes on Google for each line I write. An expert in these languages would easily be going 10x my speed.

That’s the problem when you start using a new “high productivity” language.

We know that Fowler is years ahead, you cannot measure productivity. (2003! Damn you, Fowler)

I agree of course the LoC is a poor metric of productivity. Especially if you compare R code with Fortran doing the same thing. Everything is solved with one more level of abstraction, amirite? But also within C#. I’ve done code analysis, even within the company, that shows some people write exceptionally dense, highly abstract code. It takes a while to adjust to the “new normal” when you start reading their code, but the metrics showed something like 2x IL instructions per line of compiled c#.

Maybe if you are working on the same project, the number of completed stories tells you something? Maybe not. The point about the best developers working on the hardest parts of the system is well made, but we often don’t call those people developers, we sometimes call them architects. People who imagine the whole problem, encapsulate it, pick a technology, code a spike, check it in, drop mic, walk offstage. They don’t complete hardly any stories (only fake ones created to pad the sprint!).

I think that architects (if you believe in them) are also not that productive. They turn up before the project has really started, they don’t know that much about the problem in depth, but they’ve seen a lot of other projects at this stage and hopefully they make some choices that enable to you build without having to tear a lot of chunks down. When the project is in the high productivity phase when work is flying out the door, the architect has drifted off onto something else and when they do turn up it’s a pain.

So, I read that when people built cathedrals before there were principles of structural engineering and architects, people would just try building stuff and see how it went. If it started leaning when they got up high then they took that bit down and tried again with a bit more buttress. Sometimes that worked and sometimes it didn’t. That’s why building a cathedral sometimes took more than a century. Requirements change, but massive inefficiency exists, whether we can measure it or not.

So, the other thing is that ALL skills are exponentially harder/rarer near the top. Pretty much any fully-able bodied person can complete a 5 hour marathon, some can do a 4 hour, some who are at a time in their lives to commit a lot of time to training and with the physique to survive the training can do under 3. However, getting from 3 to 2:30 requires a superhuman. Getting from 2:30 to 2:09 takes half a life of dedication, suitable genetics, youth nurturing, etc. You want someone who can write you a web page, plenty of those (no offence, web devs). You want someone who can write you a full stack fintech disruptor, somewhat rarer. You want someone who can imagine, design and code bitcoin? One in a century*. I’d recommend “programmers at work” for some stories of transcendental amazingness. OK, a lot of the stories are about the point where programming came out of the research lab and became a job, so it was the wild west. And those people are notable because they actually made stuff that worked at all, and actually sold. The standard for “average” and “miracle” have changed, but the gap is still there I think.

So, even without a real measureable metric, I know that I’m 1/10 of a normal dev in what I’m doing. Even non-specific measures like “architecture quality as judged by a community of your peers” or whatever, I’m doing a bad job at coding.

Back to the 1/10: Even though I’m running slow, I’d say that I’m one of those people that’s still useful, even though I’m inexpert at almost everything! I heard the expression recently a “T-shaped” employee. I think that I don’t have a skill that I’m particularly deep at. Possibly criticising others? That’s more of a hobby! Possibly I’ve spent more time thinking about the SDLC, rather than JavaScript libraries. Maybe that’s my thing. Anyway, so that’s the point, when I’m running at 0.1x I’m doing a bad job at coding, but I’m not coding, I’m learning. I’m also pretty slow at learning, but let’s say I’m learning whether we should let the real developers at this thing, and what the impact on the SDLC will be.

 

* Actually, that’s a lie. I don’t believe those ultra-hard problems are solo efforts, but get so many rare talents to cooperate, even for a few months is hard, I believe. That’s probably one of the major changes since the 80s. Now it is simply not possible to write a world changing app by yourself. No one person could have written iOS or SQL server or Linux. Yes, the core of a few languages was written by one person (e.g., Ruby) but what makes them fly is the adoption of the frameworks (Ruby on Rails, etc.).

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s