Moore's Law for software?
Mon, Nov 27, 2000; by Dave Winer.
On his weblog this morning Doc Searls asks why there is no Moore's Law for software. I'll try to give a complete answer, which means I have to say yes and no.
Does Moore's Law apply to software?
Yes, Moore's Law does apply to software. As CPU rates go up we can do more with the same amount of money. For example, our hosting services, EditThisPage.Com, Weblogs.Com and ManilaSites.Com, depend on increasing CPU rates. A few years ago it would have been unthinkable to serve 2000 dynamic sites from a single $2000 PC. As we add more features to the software, we periodically upgrade our servers, when we started hosting about a year ago $2000 would buy a 450 Mhz machine, today the same money buys a machine that's twice as fast. That's one of the reasons we can add features. There's an example of Moore's Law fueling software innovation.
Another example, picture-editing programs like PhotoShop would not have been possible without machines with multiple megabytes of memory.
Today we write systems that move around megabytes of user-authored content with single instructions, where we used to have to be more careful about this, so we can do more with the same human braincells, which unfortunately do not upgrade at the rate of Moore's Law.
Another example is the explosion of software written in scripting environments. Today's scripts run faster than equivalent machine-level code written a decade ago. I'd argue that a computer science undergrad today should learn C and assembly language, for a complete education, but most of the code the programmer of the future will write will be interpreted and running on a high level virtual machine that optimizes programmer effectiveness.
Why software resists quick progress
On the other hand, I assume that Doc is expressing frustration with the evolution of software, almost implying that software has not moved forward at the same pace as hardware. I think there's some justification for this, so why is it happening?
Basically, it all depends on where you look. There's a lot of closed-mindedness in the press, among investors and users. If you look at Microsoft's software, you'll see a steady evolution in the last few years, but nothing earth-shattering, certainly no breakthroughs in software utility equivalent to the ones that happened in the 1980s, which Doc remembers, and so do I.
I saw the same thing happen in the Mac market in the 1990s. While the press and users decried the lack of software, the press refused to cover new software. It's a self-fullfilling prophecy, the kind of disconnect that you might think only applies to US presidential elections.
If you have the courage to look, and invest your time in new software, and be patient and generous with developers, you'll see that there's a lot of innovative stuff happening all the time, it's been going on during every hype period whether it was Java, or open source, or artificial intelligence, whatever. If the users of software adopted an "I'm from Missouri" attitude about hype balloons, and celebrated software developers who have the courage to invent new things, you'd get more new things. This is a view I'm sure Doc can understand, the software conversation has not really valued innovation, it's valued purported innovation, which often turns out to actually wipe out innovation, by focusing attention on places where innovation is predicted, but not observed.
Typically when a developer introduces something new it's got bugs and is incomplete. Users and investors offer very little money to fund further development. So new ideas rarely get off the ground. The press is suspicious. Software innovation usually is not a good business model.
So Doc, it's about respect. If you want innovative software, you must reward risk. In the 80s, innovation was fueled by competition to get rich and famous from a great vision, well-executed. If you want innovative software, we must take steps to reinvigorate competition to get leading-edge users exciting software, not based on hype, but based on delivery. If you want a healthy environment for creativity in software, we must respect and reward creativity.