A friend, in despair, recently asked:

“How do they manage to make software go slower at a rate that exceeds Moore’s Law?”.

I’ll take it as given that have we experienced those moments while waiting for files to “move to trash” on a 2.5Ghz machine.

Anyway, I glibly answered:

“Programmers are getting stupider at a rate that exceeds Moore’s Law.”

And left it at that.

But it kept bugging me. I don’t know the reason why software is getting slower. But programmers are getting stupider, here’s why:

1. The first point is that humans aren’t getting smarter, there’s no real natural selection for it. Perhaps external factors like education are decreasing stupidity slightly, but probably not much more than population growth in poor uneducated countries. So for arguments sake I’m going to say that the percentage of smart people stays constant, or at best increases very slightly.

2. In contrast, the number of programmers that exist has increased significantly in the last twenty years.

3. The last, and most important point is: as a group grows, it becomes more similar to the population as a whole.

Putting these ideas together we arrive at the awful truth. Fifty years ago, there were hardly any programmers. The programmers that did exist were brilliant – they had to be. What about twenty years ago during the PC revolution? How about ten years ago when computers became commodity items?

The sad fact is that, as programming becomes more and more popular, the stupidity of programmers must approach the stupidity of the average population.

At that is possibly why we have crap software. And “design patterns”, and “Object Oriented” and other fads that are designed to stop the bulk of programmers in an organization from doing too much damage, rather than lettting individuals come up with creative solutions or clean designs.