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?
Article published on May 7, 2008
|If you like this article, please share it:|