Wednesday, November 19, 2014

What is a 10Xer?

My wife read an article about programmers in the New Yorker and we had a discussion about '10Xers'. I felt inspired to explain a little about this.

So there is this idea that some programmers are 10 times as effective as other programmers. It is usually mentioned when hiring engineers. If some engineers are 10 times as effective as others you definitely want to hire them. If you have to pay one of these 10Xers three times the money it is still a very big win!

People have various reactions to this. One common one is to say it isn't true. The reason behind this denial is the denial of the idea that some programmers are super geniuses who are just at one with the code. Every programmer breaks the build. Every programmer generates bugs. Every programmer interacts with people who know a lot more about certain parts of a system than he does. Some people manage to keep a certain level of arrogance despite this, but programming can often be a very humbling job and the notion that some of us are some how super-geniuses goes against this.

I pretty much reject the notion of super developers that somehow output ten times the amount of functionality, but I do acknowledge the idea that some programmers are "10Xers". Here is a story of two developers that hopefully illustrates my point. Their names are Ten and One.

Requirements come in. They aren't particularly good.

Ten: Ten identifies problems in the requirements. He spots places where they have gaps or ask for things that are very difficult compared to the value they give. He immediately gives feedback on these and gets them corrected quickly.

One: One says okay to the requirements. He goes forward coding. He discovers the problems later. Maybe he tries to solve the wrong problems and spends his efforts on things that don't matter. Eventually he goes back and tries to get the requirements to make sense. 

Writing the Code

Ten: Ten knows how to structure things and builds a good infrastructure. He has patterns in mind for most problems. He writes clean code. He bangs on the keyboard at the exact same speed as One, but his lines often do a little bit more. 

One: One hacks together a bunch of hard to understand crap all in one big object with everything globally scoped. He does this because it is "easier" and "quicker". One often writes lines that aren't useful and his code may have repetitive parts. One might use a lot of copy and paste.

Finding Bugs

Ten: Ten has some bugs in his code. QA finds the bug and starts the process around fixing the, verifying them, and so on.

One: One has lots of bugs in his code. There is the same process, but the number of bugs increases the time it takes. This causes schedule pressure.

Fixing Bugs

Ten: Ten's code is easy to understand and fix. Bugs are handled quickly.

One: One's code is hard to understand. Bugs are hard to understand because the code is difficult to work with. The likelihood that one bug fix introduces a regression (breaking something that used to work) is very high.

New Features

Ten: Ten's code may or may not handle new features well, but it is easy to modify and maintain. Structures can be modified without introducing a lot of new bugs. Structures Ten made in the past may be reusable. This already QAed code gives a big leg up when adding functionality.

One: One's code is very hard to understand. Adding a new feature is very difficult. It introduces lots of problems. Old code can't be reused forcing all the code to be new and untested.

Development Environment and Tooling

Ten: Ten finds pain points in the process. He makes or finds tool that make the whole process easier and less error prone.

One: One doesn't do this. He lives with the pain and does things slower and in a more error prone way.

Hire More Guys

Ten: Ten has accomplished his tasks. There is no need to hire anyone else.

One: One is now behind schedule. You get a new hire. His name is Uno. He has trouble reading One's code. He doesn't understand it and has communication issues with One. They aren't big ones, but he needs to have a lot of things explained. When he writes code he then needs to explain things and coordinate with One. Sometimes One and Uno work on the same code and have merge issues. This takes up a lot of time. Enhancements and styles One might develop aren't used by Uno and vice versa. 

Hopefully this story showed how differences in ability can affect the software development process in a lot of ways. So even if one developer has slightly more ability than another, the natural multiplicative effect of the process will make a large difference in what they can deliver.


11 comments:

  1. I disagree with your rejection of the ideas that developers can be 10X more productive based on talent. I think this is common in most creative endeavors. I think Stephen King is at least 10X better at using the English language than the average literate person or even the average professional writer. Jimi Hendrix is easily 10X better than the average guitarist. An I'd venture to say that Steve Wozniak is/was a 10X better engineer than me.
    However, I absolutely agree with your main premise that most "10Xers" are 10X more productive because they make good decisions while/before coding. If I was going to sum up my main point, I'd say that developers can become 10Xers by talent or wisdom, but wisdom far more attainable and reproducible.

    ReplyDelete
  2. First, thanks for commenting on my blog! I think you are right. In any human endeavor there is a range of ability. It is also quite difficult to measure this in many fields. In your examples of literature and music this is certainly true. I would propose that there is something like a bell curve of ability and I agree with your assessment that the outliers are probably 10x as good as others. I more wanted to say that there isn't a special "class" of developers like "rockstar" or "ninja", but the appearance of this came largely from the effects of talent and wisdom being magnified by the nature of the process.
    Again, thanks for commenting and adding your thoughts.

    ReplyDelete
  3. I've heard the term "10xer" thrown around a lot during my 20 year career working on multiple teams. This article is, without a doubt, the best definition of a 10xer I have ever read. Thank you so much for writing this article.

    It helps to distinguish the "ninja", "rockstar", or "astronaut" from the "10xer".

    ReplyDelete


  4. It is really very helpful for us and I have gathered some important information from this blog.


    Offshore Angularjs Developers

    ReplyDelete
  5. I am very grateful to read your blog.I hope you would provide the great services in the field of website design and development and Search Engine Optimization. Thank for the share.. Website Design Company in Bangalore | Web Designing Company in Bangalore | Web Developers in Bangalore Bangalore

    ReplyDelete
  6. I like this post, even though i would count myself much closer to the Ones and Unos out there, than to the tens. The reson i like it: It rubs your nose so pointedly and mercilessly in the differences it almost hurts. Heaving read a lot about how to become a better programmer never impacted me emotionally the same way this post did. Thanks! :)

    ReplyDelete
  7. Having an E-commerce store that is optimized for the customer requirement is not an easy thing. I definitely do check and correct the E-commerce mistakes and boost my E-commerce conversion rate. Thanks for sharing!
    Hire Wordpress Developer
    Hire Magento Developer
    Hire Web Developer
    Hire Wordpress Programmer
    Hire PHP Developer India

    ReplyDelete
  8. The information you have posted is very useful for online dating. The sites you have referred was good. Thanks for sharing.. website development consultant

    ReplyDelete
  9. Hire PHP Developer as they know it very well that PHP is faster as compared to prevailing scripting languages.

    ReplyDelete
  10. Hey what a brilliant post I have come across and believe me I have been searching out for this similar kind of post for past a week and hardly came across this. Thank you very much and will look for more postings from you Best berlin web design service provider.

    ReplyDelete