There are no x10 developers, but there are certainly 1/10 ones

Opinion Startups Web development April 4th, 2013 by Eran Galperin

I keep seeing the term "x10 developer" pop up recently, and I think it's misleading and leads to a rock-star / primadonna culture that benefits no one.

"x10 developers" are, in fact, proficient developers, who are experienced with their stack and problem domain. Once you get to this point, you can still find room to optimize - some people are inherently more focused or talented and you can always gain more experience, but the difference between developers who are proficient at what they do will never be a x10 multiplier - it will be closer to a variation of 30-40% in productivity. In some extreme cases (super experienced, focused, and naturally gifted), you might even reach x2 times productivity over a baseline proficient developer (I've seen it in action).

On the other hand, you have developers who are simply not proficient. They either have no aptitude for programming at all, or are so inexperienced that progress is very slow as they are learning everything as they go. Those are the "1/10 developers" and they make proficient developers (i.e, professionals) seem like x10 developers.

1/10 developers in the wild

Several months ago, I was involved in a venture where I was brought in to replace the previous CTO. They were just in the middle of a transition from a homebrewed framework into a popular open-source one, which I was intimately familiar with. Left behind was a developer who was highly recommended by the CEO (through word of mouth from the previous CTO). He was studying for a Ph.D in computer science at the time.

That developer was spearheading the framework transition for the previous 6 weeks prior to my arrival. Going over what he had accomplished for those 6 weeks, it appeared that he hadn't done much at all. It looked to me like the results of 2 hours of work, tops. Though I already had my doubts, I gave him the benefit of the doubt - maybe it was his lack of experience with this framework, or lack of attention / mentoring from the guy I was replacing. I would try and bring him up to speed and see if he can catch up.

I started assigning small tasks and providing guidance to see if he can up his productivity to reasonable levels. He was getting stuck frequently, and I had to literally spell out solutions for him and walk him through it. After a couple of weeks or so of this, it became apparent that I was spending (way) more time assisting him than he was saving us with the code he was writing. The code he was writing was decent, working code - he was just writing it very, very slowly.

We finally let him go after 3 weeks, during which the amount of actual code he wrote would've taken me 1 hour, tops. He seemed like a smart person and he did understand the basic principles of programming, but getting real-world features implemented was not something he could do, at this point. In the end, the feature he was working on for 3 weeks was removed and replaced with something else - the rewrite took me about 30 minutes (for a more expansive feature).

Not everybody can be a professional developer

I cannot blame inexperience alone for this - I have previously tutored junior developers at our  previous firm into self sufficient, productive developers within a couple of months (with steady progress in between). You can tell when someone "gets" it and when someone doesn't. People who don't are the "1/10 developers", that some put as the bar of performance for everyone else.

Next time you want to add a productive member to your team, you don't need to hunt for that mythical "x10 developer" - you just need to find someone who can develop a small feature using your environment and stack in reasonable time, while writing code that makes sense.

(On behalf of all the quotes I spread throughout this post, I apologize)

Addendum

Reading through the comments, it seems there's some confusion about what my intention with this post was. I never meant to bring down or ridicule anyone - the developer I mentioned was a very smart and amiable person, just not a good fit for doing software development. My intention was to point out the meaningless of the "x10 developer" term, and I parodied it with the equivalent term "1/10 developer" (hence the quotes around those terms throughout the post).

My point is this - not all people representing themselves as programmers can actually write useful code. People know this phenomenon as the fizzbuzz test, but some people who can still get by this test and make their way to dev teams, will never be proficient developers. This creates the illusion that people who are proficient at what they do are "x10 developers". That was what I was trying to convey with this post.

Others said that those "x10 developers" are developers who solve problems that have x10 effect on project progress (they advance the project one month ahead in schedule with a small addition, for example). My question is this - wouldn't all proficient developers (with the relevant experience) put in front of those problems - produce the same results? (in a time span that is in the 30-40% variation range)

Enter your email address to receive notification about new posts.

If you liked this article you should follow me on Twitter and/or share below:
  • http://www.facebook.com/people/Jack-Jones/1707022019 Jack Jones

    I agree. Plenty of studies confirm this, and while some developers are obviously much better at solving complex problems than others, productivity amongst competent developers is as much about the working environment as the individual.

  • mark

    How big was the feature in lines of code? How much specialized knowledge did it require?

  • kanzenryu

    I once heard of a guy whose “work” required three other people full time to fix up his mistakes. Try your 1/10 maths on that situation!

  • John Hinnegan

    I think there is that 2nd level, but in my experience it comes more from being able to grok the requirements than the speed at which they code. I worked with someone who was very fast, but a very slow developer. He was fast because, probably 2/3 of his projects, he’d just say “hold on here, what do they really want to do?” and then come up with a way simpler approach to solve the problem than we had envisioned when discussing the problem. This person was easily the most productive member of the team because he worked very smart. Compared to your friend, there, sounds like this person I’m talking about would be a 100x.

  • Vitor Baptista

    I don’t feel there’s much difference if you count 1/10 and 1, or 1 and 10x. The only difference I can imagine between the two is how you feel about the programming field in general. If you think that there’re 1/10 programmers and 1 programmers, it sounds like most of the programmers are good, but there’re some terrible ones. If you think about 1 and 10x programmers, you’d feel most are bad (regular?), but there’re a few amazing ones.

  • RJR12345

    Used to work on an application relating to home heating. Someone wrote a bug that would cause a user to install a system into a home which would burn their house down. Just remember…some software can kill people. Or leak medical information ($50,000 per violation). The damage a bad developer who doesn’t care can do is immeasurable.

  • http://twitter.com/eranation Eran Medan

    Superstar singers are merely defined due a huge amount of people who simply can’t sing

  • Nathan Alden

    This author is just splitting hairs. All you’re doing is adjusting the scale by a factor of 10. The important thing is not the nominal value assigned to a developer but his relative value to other developers.

  • http://oddshocks.com/ David Gay

    I dig this.

  • Andrew Reid

    I’ve always thought there are four levels:

    1. Genuinely Incompetent: Given a complex programming task will either not be able to finish at all or will produce something so broken it has to be redone. Fails to get better with experience.

    2. Honest Toiler: Can get the task done at a reasonable to high level of quality but is sloooooow. Might be due to inexperience or lack of ability/attitude. Most competent developers start at this level.

    3. Grunt: Can successfully produce working code of good quality reliably but would struggle to design a large component or design a large new system.

    4. Architect: Not just able to code, but can design and construct large software systems successfully. Productivity at least partly due to being experienced enough to avoid common mistakes because you’ve already made them before.

    5. Genuine Rockstar: Capable of making software the vast majority of developers wouldn’t be able to do _at all_. I’m thinking of rare cases like John Carmack and Linus Torvalds here.

    I think the important judgement is whether an unproductive developer is on their journey up the list or stuck irretrievably at one of the lower levels.

  • http://articulationstudy.posterous.com/ david karapetyan

    The intelligence/productivity meme needs to die. Stop propagating it. Also, public shaming even if done anonymously is super classy on your part. Also, anyone who agrees or contributes more anecdotes to this shit pile is a moron and a 1/100th developer. Instead of hating go write some code.

  • freshhawk

    It’s not just splitting hairs, the scale adjustment is the point. It’s much closer to the truth to compare professionals and those with no aptitude rather than building up silly metaphors of rockstar ninja 10x elite hackers.

    On top of being an adult way of thinking about it it’s also easier to communicate since it’s the way every similar industry thinks about the same issue.

    When I was consulting I would have been mad about this article, of course it’s true but if non-technical people think like this they will intuitively realize how rare the professionals are (not very rare, but definitely a minority) instead of thinking about the semi-mythical 10x uber hacker stereotype. Playing into that stereotype a little bit was a good way to get more work.

  • http://www.binpress.com Eran Galperin

    The difference is what you consider the norm, and what you are looking to hire when you already have competent developers on your team (i.e, some people are looking for a beast that doesn’t exist).

  • http://www.binpress.com Eran Galperin

    Yep, that was exactly my point. Well put

  • Foo

    This post is borderline offensive. Was any attempt made to understand this guy’s situation? Was he burned out from a previous death march? Just because he is studying for a phd in CS doesnt make him a good dev. Sounds like he was a junior and with mentoring he may have made a great dev. Instead you fired him after 2 weeks.

  • http://www.binpress.com Eran Galperin

    Did you read the post? I mentored him extensively for those 2 weeks, but not only was he not showing improvement, he was not showing the basic aptitude required to be a developer. For a small startup to pay someone full time when instead of contributing he takes up valuable time, there’s just no justification. This is not a charity

  • http://www.binpress.com Eran Galperin

    I would say in absolute numbers it was roughly 40-50 lines of code. Not much specialized knowledge, just the ability to work inside the structure of the framework (regular MVC style).

  • http://www.binpress.com Eran Galperin

    I was conflicted whether to add my personal experience or not. I think it helped make my point, and it’s not “public shaming” if it’s anonymous, is it? no one ever writes up about bad experience with co-workers?

    By the way, commenting about a post and saying posts like it need to stop, is a waste time. I can write what I want on my blog, and you can decide if it’s interesting to you or not. No need to troll me on my own blog

  • sparroww

    And then there are those that can count to 5.

  • Foo

    Upon rereading the post my earlier comment was a little knee-jerk. It can be immensely frustrating having poor quality people around. Sounds like the bar was raised and he was left standing.

  • http://articulationstudy.posterous.com/ david karapetyan

    You can indeed write what you want on your blog but this elitist us vs them mentality is corrosive and helps no one. You are just another one in a long line of shitty posts I have come across lately. As programmers we are in an extremely cushy position and when I keep seeing posts like this at the top of HN it really makes we wonder. Stop putting others downs to prop yourself up, you are already pretty high up.

  • http://www.binpress.com Eran Galperin

    Wow. Thanks for reading.

  • http://www.phillipstreet.com Phillip Street

    Everyone’s entitled to an opinion and I found Eran’s point of view to be an interesting read, and I can relate through experience to some similar things Eran points out here. I don’t think this is promoting any sort of elitist us vs them mentality, it’s simply an observation made on Eran’s part and I wouldn’t be surprised if you’d find there are many other professional developers out there holding a similar view – I’ve seen this type of thing myself first hand.

  • http://articulationstudy.posterous.com/ david karapetyan

    Please tell me what exactly was interesting about it? I’m really curious because all posts of this type follow the same formula: Here’s the dividing line and it separates “good” from “bad”, many are on the “bad” side, some are on the “good” side, the author is implicitly on the “good” side, the more the reader is like the author the “gooder” he is. There is no content, just ego stroking and mental masturbation.

    You’ve seen bad programmers? Heavens no. How did you survive the encounter? Please go blog about it so I can bash you as well.

  • Meh

    When I was in highschool, guys used to rate girls on a 1-10 scale, glad to see things haven’t changed much. When a developer hears an ignorant and over simplified evaluation of his/her work, something that happens from time to time with inexperienced project managers, the developer just smiles to him/herself and continues on doing the real work.

  • 253

    To whoever hired you as a CTO:
    You’re probably doing it wrong! The author seems to be one of those very rare one-man-army-coders. Remember the Peter Principle? Never ever promote them! These coders do not belong in the headquarter, they belong in the trenches.

  • http://twitter.com/scottymeuk Scott Robertson

    I’d say thats a bit over the top. I cannot see anywhere that suggests he is a “one-man-army coder”. He is simply making a point that not everyone is born to be a programmer. Which is a valid point.

  • GalacticForce

    I work as a professional programmer and I think I’m quite productive. However, there has been times that I’ve felt that I’ve been very unproductive. Every time that happens I realize it is because I don’t know what I’m supposed to do or that I lack some sort of experience with maybe a new framework.

    I worked at a company that gave me an assignment without much explanation how they wanted it done. Also, I created the solution with MongoDB a database which I had zero experience of. When it came to advanced aggregation techniques I was lost and it took me maybe a week (or more) to come up with a solution that worked, a solution that I would’ve fixed in a day or two nowadays.

    The result? Well I worked there for some time and only had <50% time focused on the project. It hadn't much code, something I've probably done in a week now. But then it took me about two months. The boss was not super happy about the result and blamed the most part on me, a junior programmer.

    What can I say? I understand it's not a charity but I believe many times the management has a big part of the success of a certain project. I'm still quite proud of the results with the environment given to me. I learned so much from that project and I'm really glad I had the chance to be a part of the project even if it wasn't that successful.

    I think your post is pretty offensive because many other programmers have been in an equal situation that I'm describing and maybe even the guy you're talking about. We don't know that guys situation or how interested he was in programming in general. Of course I understand your situation too but I don't think there is anything as a 1/10 efficient programmer. Everything depends on the skill and knowledge of the programmer and also a big part comes back to management and lead.

    In one hand, it comes down to picking the right people for a project with the right skills. But in the other is that if you never give people time and chances to learn the world would be a much more gray place to live in.

  • http://www.binpress.com Eran Galperin

    I can understand what you’re saying, but I assure you it wasn’t the case here. Perhaps I didn’t get my message across as well as I would’ve liked.

    I’m not “management” or a “boss” type figure – I’m in the trenches writing code – in fact, I ended writing almost all of the code for the product we were working on at the time. This developer has been learning and working with this environment for the past 6 weeks before I arrived (it is mentioned in the article). After I arrived, I sat with him for 2-3 hours each day, while being available for every question he had while working on the small task I assigned to him. I did everything I could but sit down and write the code for him – this is not my first time tutoring junior developers – I actually taught several people how to program from scratch, through basics, methodologies, patterns and frameworks.

    Everyone has setbacks and things they don’t “get” immediately – but this was not the case. The guy was understanding what I was teaching and showing him (I could see from the code he wrote – his code made sense), but his production – which was unrelated to the environment in my professional opinion (having had extensive experience with it), was just not acceptable for someone claiming to be a professional developer. He was not hired as a junior developer or an intern – in fact, he was paid more than me at the time (I received equity instead).

    I have seen this problem in the past, not everyone groks programming and can eventually become a productive developer. Unfortunately, those people still join dev teams and give rise to the term “x10 developers”.

  • GalacticForce

    Hmm. I get what you are saying, and you are probably correct about the guy the company hired. However I still think everyone can be a professional programmer as I regard it as a craft.

    I don’t believe in the 10x programmer, nor the 1/10 programmer. The fault lies on whoever hired him for a job he could not finish correctly. Of course this is may be a hard job if the person claims to be very experienced. Experience is such a subject matter and you always have to put that to test if you want to know if the person in question is the right fit for a specific job.

    I for one could claim to be a builder with lots of experience, but if someone would hire me to build a bridge I would certainly fail because I have zero experience of building bridges.

    Letting that person go was obviously the best thing for the company but I don’t think he is to be blamed for everything. For the most part I only objected to your post because I think anyone with an interest could be a professional programmer and because I think skill and experience is a highly subjective matter.

  • http://www.binpress.com Eran Galperin

    I want to clarify I never blamed him for anything. I was using a personal story as an example for the difference between a proficient developer and a non-proficient one (which I termed the 1/10 developer), and how those gave rise to the term x10 developer.

    I would have liked to believe too that anyone could program given sufficient motivation. My experience and studies on the subject say that is simply is not the case. You should read this interesting article on coding horror – http://www.codinghorror.com/blog/2006/07/separating-programming-sheep-from-non-programming-goats.html

  • morphar

    Yeah well… Some people get a certain point and gets stuck there. That doesn’t mean they are bad programmers (as such), just that there are developers, which is x 10 better! I know I could have made a decent living, when i got to a certain level in PHP development… Today I know so much more and can do things that are x 100 times more worth for some companies, that what I could do with my PHP skills.

  • Bogdan

    What startup is that with a CEO, a CTO and ONE developer? Crazy times in the startup world, with 2 bosses and 1 developer. :-)

  • exim

    Heh, it seems I’m 10x developer, just 9 of them are procrastinating (some of them are learning Haskell, some other – Prolog, another couple of them PL theory…).

    Regarding your anecdotal story – I guess you and that PhD guy had a type of job usually called as “yet another CRUD job”. So most likely there was nothing exciting for him, thus not enough motivation to be more productive – that doesn’t necessary make him 1/10 of you…

    Maybe he had 1/10 excitement coefficient for the job, that has nothing to do with “developerness”.

  • http://www.binpress.com Eran Galperin

    In a small startup, the CTO is the lead developer… I wrote most of the code. Don’t believe the hype

  • http://www.binpress.com Eran Galperin

    He seemed very excited and motivated to be working in a startup after spending most his life in the academia. He also seemed very serious about his work. Maybe he was just a very good actor…

  • ToHellWithRegistering

    There is either quality code or fast code. Do you assess your CEO by the “speed” of his management?

  • ToHellWithRegistering

    You said “levels” yet you mixed quality with productivity. Where is the most common level – can quickly produce code that works 60-70% of time but is barely maintainable?

  • http://www.binpress.com Eran Galperin

    For sure. People need to produce results in reasonable time (get things done), including the CEO. You can write quality code AND make actual progress – that’s what professional developers do.

  • madhatterer

    Granted that the company recommended him and that he was producing some amount of work… was it really such a good idea to drop him? I mean think about it… before you had someone who was getting things done, spearheading transitions that would benefit the company, etc… then you went to having a person with 10x the output of that person (hence where the x10 comes from) AND that person… and now you just got rid of the person who had stuck around and made things work out for the better because why? Because you’re better then them. This sounds like an incredibly dick move to me IMO. It’s a manager’s duty to place someone where they will be most productive and the employee’s job to do the work and convey when they can’t make it happen.

  • http://www.binpress.com Eran Galperin

    This is a startup with 4 people onboard, there is no “company” or “manager”. Everyone must pull their own weight. Having said that, the guy obviously did not get things done – as I wrote in the post, he worked on the transition for 6 weeks prior to my arrival, but had accomplished nothing of significance. He basically wrote a few “hello world” scripts in the new framework. The previous CTO just didn’t keep tabs on him or held him responsible.

  • Donny

    Eran, I think you are pretty much on mark on both 10x being a little to high (where 2x seems closer to reality) and the “1/10″. I am shocked to run into 1/10 or 2/5 developers on the various projects I have worked. Even guys I thought were great and awesome to hang with and even talk to about software development, have proven to be too slow, undependable, or near incompetent in their work. I’m shocked every time this happens, but it does. I don’t expect elites, but with even 5 – 10 years of experience these guys still under perform…

    You even mention that you were having to spend too much time helping this individual. You did what you could, but if it doesn’t work out, it doesn’t work out. I think too many posting here are quick to judge your post (and your actions). Some junior developers can get going fast and others can’t. If you can’t and your company can’t afford to become a second college for the individual because they need significant improvement to perform, you have to let them go. It’s a business not a charity.

  • NoRegPlease

    You do not say “fast”. If you mean high quality at medium speed than I would agree.

  • Greg

    I’m not sure what’s offensive about this article. In a startup with only four people, the requirements are much steeper. My first job was at a giant company, where coaching, ramp up, training, and grooming were a bigger part of the process. But the requirements at a tiny startup are way different, and someone that can’t pull their own weight over 6-8 weeks won’t last long if they require daily attention like what the author described.

  • glasper9

    This is the sort of article I see time and time again. Reading the Daily WTF will convince you that there is a huge issue in the IT industry with people going all the way through the accreditation/degree process and emerging with no practical ability to code whatsoever. Not everyone can be a programmer; indeed, most people cannot, and somehow we have to find a way to weed out 1/10ers in the first or second year of their teriary education, before they are too committed to switch to something easier, like hairdressing.

  • Pingback: intelligence/productivity memes | learning with scripting