News on Monday
more>>
SharePoint Tech Report
more>>


   

 
 
Download Current Issue
ISSUE 2/1/2010 PDF

Need Back Issues?
DOWNLOAD HERE

Receive the print Edition?


 
blogs tab
Visual Studio 2010 Release Candidate Available Today
A Visual Studio 2010 release candidate is available on MSDN.
02/09/2010 09:45 AM EST

Is Microsoft eyeing Office subscription pricing?
Microsoft may be preparing to offer a new Office pricing option called "union," which charges the same for cloud as on-premises.
02/01/2010 09:38 AM EST

Facebook rewrites PHP runtime
Facebook is about to open source its own PHP runtime, written from scratch for speed.
01/30/2010 08:53 PM EST

 

Events calendar tab
2/9/2010 to 2/13/2010
San Francisco
IDG World Expo

2/10/2010 to 2/12/2010
San Francisco
BZ Media

2/17/2010 to 2/25/2010
Atlanta
Python Software Foundation

2/19/2010 to 2/20/2010
Los Angeles
SCALE

2/21/2010 to 2/24/2010
Las Vegas
IBM


 
Most Read Latest News Blog Resources

No Silver Programmers




February 15, 2008 — 
Programming talent is not normal. There are some professional developers who are very much better than average and some who are very much worse, but it doesn’t seem that these talents fall along the neat “bell curve” created by the normal, or Gaussian, distribution. I say “seem” because, as boring as it is to say “the data are lacking,” there is astonishingly little real, peer-reviewed studies of individual programmer productivity. This is especially true of studies of professionals; it’s dubious to extrapolate the real-world distribution of talent from studies of computer science students, if for no other reason than the very large number of self-educated developers in the workforce.

Studying programmer productivity is made harder by the non-linear difficulty of software. A 500-line utility is not likely to be just 10 times less complex than a 5,000-line program, and a 50,000-line application is certainly more than an order of magnitude harder still. Studies of programming contests and homework challenges largely miss the dynamics that kick in when a system involves many moving parts and can only be immediately grasped as a collection of abstractions.

Perhaps most importantly, professional software development is a team sport, and there’s no simple way to measure an individual’s overall contribution to success. Nonetheless, the studies that do exist reinforce the intuition that there is great variance in both individuals and teams.

The question of talent distribution is important because it implies certain team structures. If, as some would have it, the striking thing about the distribution is that some developers are extraordinarily more productive (the “superstar” hypothesis), then it might make sense to structure software development along the lines of surgical teams, where the majority of the team is working to support the productivity of the single leader. In the early 1970s, IBM’s Harlan Mills advocated just this approach, contrasting this team structure with “a hog butchering team,” in which everyone has the same job description. (Not that the choice between being a surgeon or a hog butcher has any emotional leverage!)

In a world where, say, 5 percent of programmers are 10 times (or even 20 times, as has been recently batted about the blogosphere) more productive than the median, the best should enjoy not just job security, but also soaring salaries, increased deference and general acclaim. It’s an appealing vision, especially to those who think, “Well, I don’t know anyone who can do in a day what I can do in a month of heads-down, phones-off development, so therefore, I am among the elite.”

If, on the other hand, the distribution of programming talent is characterized by a long tail of incompetence, it implies other strategies for improving overall team talent. It implies that chopping off the tail of incompetence is the fastest way to increase average productivity, and that in hiring we ought to concentrate not so much on finding elites but on avoiding the worst (no matter how cheap, no matter the vow to keep them on easy chores until they learn more). It also sadly means that knowing that there’s a guy five times worse than you doesn’t mean you’re a superstar.

That incompetents manage to stay in the profession is a lot less fun than a secret society of magical programmers, but the (sparse) data seem consistent in saying that while individuals vary significantly, the “average above-average” programmer will be only a small multiple (perhaps around three times) faster than the “average below-average” developer (see, for instance, Lutz Prechelt’s work at citeseer.ist.psu.edu/265148.html).

Some will quickly point out that programming quality, like interest payments, compounds over time, and small differences in day-to-day productivity may turn into order-of-magnitude differences in delivery time. This may be true (I believe it, although I know of no studies), but even if it were so, it would only be true in the context of a team that managed its members nimbly, avoiding colossal mistakes and time-sapping distractions. That, rather than searching for a hero, is the unglamorous route to success.

Larry O'Brien is a technology consultant, analyst and writer.
Read his blog at www.knowing.net.



Share this link: http://www.sdtimes.com/link/31698
 

Add comment


Name*
Email*  
Country     


  • Comment
  • Preview
Loading