It’s widely accepted in the software industry that some programmers are much more productive than others. Many experts cite an order-of-magnitude productivity difference between the “best” and “average” programmers.
This “factor of 10″ difference is so commonly referenced that “10X Software Development” is the name of the blog by development productivity guru Steve McConnell, who says:
Numerous studies have found 10:1 differences in productivity and quality among individuals and even among teams. The original study that found huge variations in individual programming productivity was conducted in the late 1960s by Sackman, Erikson, and Grant. They studied professional programmers with an average of 7 years’ experience and found that the ratio of initial coding time between the best and worst programmers was about 20 to 1; the ratio of debugging times over 25 to 1; of program size 5 to 1; and of program execution speed about 10 to 1. They found no relationship between a programmer’s amount of experience and code quality or productivity.
Some other noteworthy comments on the subject:
“The best programmers are not marginally better than merely good ones. They are an order-of-magnitude better, measured by whatever standard: conceptual creativity, speed, ingenuity of design, or problem-solving ability.” –Randall E. Stross
“A great lathe operator commands several times the wage of an average lathe operator, but a great writer of software code is worth 10,000 times the price of an average software writer.” –Bill Gates
“90% of the code is written by 10% of the programmers.” –Robert C. Martin
But it’s not just that some programmers work faster; some programmers can do things that few other programmers can do. These are your visionaries and trailblazers. I call this sometimes-10X/sometimes-infinite advantage: The “Tenfinity Factor.”
In my 25-year programming career, which includes 6 software companies I started, I’ve had the pleasure to manage and work with many programmers offering a wide range of skills. Specifically in our venture-backed company during the dot-com boom, though I didn’t write much code, I managed a department of 27 technical people that included some of the best programmers available in a Midwest town like Cincinnati. In my experience, the tenfinity factor is definitely real.
This wide productivity gap results in five major classes of computer programmers:
1. Visionary/Artist Programmer
The Visionary Programmer is a rare breed that can capture lightning in a bottle and produce code that 99.9% of others cannot. These inventors create new applications and paradigms that drive innovation in the software industry. Napster, Netscape, and the World Wide Web are all inventions from visionary programmers. For these people, software is more art than science. Speed and quality are not always the best, but great fortunes are made on the backs of these wizards. Most development shops can afford only a single visionary programmer, which is often the company’s technical founder or CTO.
2. Trailblazer Programmer
The Trailblazer Programmer takes a good idea and runs with it. These are the people who most often create the prototypes that ultimately become useful products. Trailblazers can produce in a day what takes most programmers weeks or months. Trailblazers are always experimenting with new tools and technologies, constantly learning and searching for ways to increase productivity, and typically serve as mentors and teachers to other programmers. You will often find a trailblazer coding away late at night when everyone else has left the office. Though these professionals tend to be expensive, every successful development shop needs at least one or two trailblazers.
3. Workhorse Programmer
The Workhorse Programmer is the backbone of any productive development shop. These people are not particularly innovative, but they are highly productive and reliable. Give a workhorse programmer a good set of specs and the right tools, and they will often deliver on time and within budget.
4. Drone Programmer
Filling the fat in a true bell curve, many programmers are “drones” who work 9-5 to collect a paycheck. These people shy away from new technology, avoid learning new things, and likely will not be reading this article. Most large development shops are full of drones because management fails to realize that more expensive programmers are actually cheaper.
5. Idiot Programmer
Every village has its idiot, and software development is no exception. Programming requires abstract and logical thinking, yet some right-brained people are lured to programming in search of a good salary. Idiot Programmers often struggle with the simplest of algorithms, constantly miss deadlines and fail to make much progress. The sad thing is these are often wonderful people, but simply in the wrong job.
So do you believe in the tenfinity factor? What have you seen on the job?
Popularity: 11% [?]
Related posts:
- Best Programmer T-Shirts
- 21 Laws of Computer Programming
- 10 Commandments for Programmers
- Famous Programmer on Trial for Murder
Tags: Productivity




May 7th, 2008 at 11:41 am
This is so true! When I think about where I work, I can place a name or two in each programmer class. Of course the fallacy of this is that we all like to think of ourselves as visionary/trailblazer.
May 7th, 2008 at 12:37 pm
Is it not true about any creative job? If I had a weekly magazine supported by strip joints would I not want a Philip K. Dick on staff? If I were the New Yorker would I not want the same?
I really think the issue to concentrate on is how to improve the productivity of who you can afford to hire. Personally if I had a truly talented programmer working for me I’d tell him to leave.
You won’t find Kobe Bryan working in the European leagues. Yet all these stories are about how can your company with boring crud apps hire a Kobe Bryant. I’m sorry, it just does not make sense to me.
I’d like to see some articles and information on how to evaluate and improve programmers. I’d like to see the same thing if I hired lawyers, doctors, stockers, or anyone else when I could not get a machine to do the work. And then I’d look at finding ways of making the machine more efficient.
May 7th, 2008 at 1:14 pm
They good news is that a lot of people don’t realize they’re 1 or 2, at least not until later in their career. Therefore if you pay them well, noticeably more than the others, you’ll be able to benefit from them. Not only that, not all programmers who fall into 1&2 are entrepreneurs (or can be).
From my personal experience I’ve found that most 3’s know who they are, after all it’s easy to know you work hard and deliver. There’s nothing wrong with this, just be sure to compensate them accordingly.
As it’s been stated over and over again, most 4, and especially 5’s, will end up bringing no value to negative value. You need to try and minimize this.
Also, something to note that age has nothing to do with being a 1, 2, or 3 (or any number for that reason). Experience helps but it doesn’t make a developer. It’s just that having a 1-3 with experience is even better :)
May 7th, 2008 at 1:24 pm
Here’s an article along these lines:
http://www.stevepavlina.com/blog/2005/07/how-to-get-from-a-7-to-a-10/
If you think you’re a 7, you might well be a 3.
And getting to 8, 9, or 10 is a tremendous effort. So for most of us, the goal is to be a real 7, not a 3 with pretensions.
May 7th, 2008 at 4:42 pm
“Every village his its idiot.” A good article spoilt only by a typo.
May 8th, 2008 at 8:16 am
Brilliant article. Very good points. Your taxonomy is very good. I was thinking of writing a similar article but was going to break it down in 3 only – Great, Ok, Bad – but your breakdown is better and I can recognise the truth in it.
Daniel
May 8th, 2008 at 11:30 am
It’s hard to believe that I coudn’t see that I’m an Idiot Programmer.
Though I really enjoy learning new thins and improving little by little.
thanks for putting my feet down back to earth
c u around
May 8th, 2008 at 11:39 am
[...] Many managers observe that some tasks happen quickly and effectively, while others (usually the least exciting) drag on into infinity. What’s most interesting is that these tasks are approached different ways, and that can make a huge difference in what work needs to be done. If there are 100 tasks needed to be done on a project, but ten of those tasks constitute 90% of its functionality, tackling those ten in a dynamic matter might liberate the rest to be done later or make them easier, since the framework will already be built. Numerous studies have found 10:1 differences in productivity and quality among individuals and even among teams. The original study that found huge variations in individual programming productivity was conducted in the late 1960s by Sackman, Erikson, and Grant. They studied professional programmers with an average of 7 years’ experience and found that the ratio of initial coding time between the best and worst programmers was about 20 to 1; the ratio of debugging times over 25 to 1; of program size 5 to 1; and of program execution speed about 10 to 1. They found no relationship between a programmer’s amount of experience and code quality or productivity. ^ [...]
May 8th, 2008 at 1:53 pm
Napster is a bad example. It was horribly coded. :)
May 12th, 2008 at 11:25 am
Interesting article and classification of programmers. Re: “management fails to realize that more expensive programmers are actually cheaper,” I wonder if management fails to realize this, or if there just aren’t enough programmers around who are good enough to lower the overall cost of projects.
As for the 9-5 developer, I think its not a bad thing. I am going to try to limit my time at work to 8 hours (though they will be different hours) because I feel that makes me more productive.
Of course, I’ll keep my side projects and do more programming that’s not work related, but I think the characterization you made makes it seem like not working overtime is something to be ashamed of.
I don’t think your intent was to say that, but I wanted to clarify because I think the attitude someone could come away with can do more harm than good.
Anyway, I enjoyed it.
June 2nd, 2008 at 4:40 am
Heh. Oops. I guess it hid (put intended) a typo after all, according to your quote. ;> Fixed in the article, guess I didn’t read your quote very thoroughly the first time around.. Anyways, great article. Delete my comments tho.*cough*cough*
February 23rd, 2009 at 2:36 pm
Nothing wrong with right-brain programming. Often when I get stuck, I’ll take a break for a little while, browse the web or something, then come back to it and the solution is obvious. That’s the right brain at work.
Of course, visionary programmers are all about the right brain.
April 20th, 2009 at 11:52 am
It’s about the difference between different ‘levels’ of programmer… some are good, others are totally mind-blowing. I’ve certainly known a number of people in the bottom couple of categories (drones and idiots)… not that I say that to be insulting… it’s merely that some people are simply not cut out for it. (Let’s face it… if I tried to become a hospital nurse or a painter, I would fail miserably!)
The workhorses are always good to have around though. Programming is a job, and that’s it. So long as they produce something usable, readable, and effective, then we can be happy.
July 20th, 2009 at 12:48 am
napster was rather marketing c2c sharing that already existed on irc, there it was really automated, praise these guys please
tim bernes lee is a better example. but, such big inventions wait for a guy to detect them, the most genius guy will be the first, if not bernes lee, the next best inventor would have done so some time later. praise nature for allowing the technology, don’t create an imaginary programming genius that way, because technology like the www can be understood by a lot of people.
your programmer types might also be people in their learning phases, it’s hopefully allowed by your thesis, that people can switch between those types (quite often)
i don’t really see a point in these distinctions, it’s a way to judge very fast, many people come up with such “types of”, and the descriptions are always incomplete and might scare people on their career paths
July 20th, 2009 at 9:13 am
[...] between details and abstract concepts fall into the category of programmers who are an order of magnitude more productive than many of their [...]
August 20th, 2009 at 3:55 pm
[...] Programmer Productivity: The "Tenfinity Factor" http://www.devtopics.com/programmer-productivity-the-tenfinity-factor – view page – cached #DevTopics RSS Feed DevTopics » Programmer Productivity: The "Tenfinity Factor" Comments Feed DevTopics Hello, World Best Programming Jokes You Can’t Say That! — From the page [...]
November 18th, 2009 at 6:40 pm
I am a trailblazer/workhorse. I truly agree with your hypothesis of the visionary/artist. 99.9% ratio is quite accurate and to think it’s any lesser is just ridiculous.
Also I think you undermine the idiots.
Also, visionaries wouldn’t be reading this article either, so can’t blame the drones. They’re actually quite useful and I’d say 75% of programming is drone-work, so I think this category pretty much covers at least 95% of programmers. Nothing wrong with being a drone, so long as you play nice.
March 7th, 2010 at 12:59 pm
Well Classified. Don’t know why, we have to face ediot Programmers most often.