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.