TITLE: Yannis's Law on Programmer Productivity AUTHOR: Eugene Wallingford DATE: March 13, 2007 1:55 PM DESC: ----- BODY: I'm communications chair for OOPSLA 2007 and was this morning updating the CFP for the research papers track, adding URLs to each member of the program committee. Chair David Bacon has assembled quite a diverse committee, in terms of affiliation, continent, gender, and research background. While verifying the URLs by hand, I visited Yannis Smaragdakis's home page and ran across his self-proclaimed Yannis's Law. This law complements Moore's Law in the world of software:
Programmer productivity doubles every 6 years.
I have long been skeptical of claims that there is a "software crisis", that as hardware advances give us incredibly more computing power our ability to create software grows slowly, or even stagnates. When I look at the tools that programmers have today, and at what students graduate college knowing, I can't take seriously the notion that programmers today are less productive than those who worked twenty or more years ago. We have made steady advances in the tools available to mainstream programmers over the last thirty years, from frameworks and libraries, to patterns, to integrated environments such as .NET and Eclipse, down to the languages we use, like Perl, Ruby, and Python. All help us to produce more and better code in less time than we could manage even back when I graduated college in the mid-1980s. Certainly, we produced far fewer CS graduates and and employed far fewer programmers thirty years ago, and so we should not be surprised that that cohort was -- on average -- perhaps stronger than the group we produce today. But we have widened the channel of students who study CS in recent decades, and these kids do all right in industry. When you take this democratization of the pool of programmers into account, I think we have done all right in terms of increasing productivity of programmers. I agree with Smaragdakis's claim that a decent programmer working with standard tools of the day should be able to produce Parnas's KWIC index system in a couple of hours. I suspect that a decent undergrad could do so as well. Building large software systems is clearly a difficult task, one usually dominated by human issues and communication issues. But we do our industry a disservice when we fail to see how far we have come. -----