Coding Horror

programming and human factors

Software: It's a Gas

Nathan Myhrvold, the former CTO of Microsoft, is also a bona-fide physicist. He holds physics degress from UCAL and Princeton. He even had a postdoctoral fellowship under the famous Stephen Hawking. Thus, as you might expect, his 1997 ACM keynote presentation, The Next Fifty Years of Software is full of physics and science metaphors.

It starts with Nathan's four Laws of Software:

  1. Software is a gas
    Software always expands to fit whatever container it is stored in.

  2. Software grows until it becomes limited by Moore's Law
    The initial growth of software is rapid, like gas expanding, but is inevitably limited by the rate of increase in hardware speed.

  3. Software growth makes Moore's Law possible
    People buy new hardware because the software requires it.

  4. Software is only limited by human ambition and expectation
    We'll always find new algorithms, new applications, and new users.

Myhrvold goes on to describe software development as a state of Perpetual Crisis. The size and complexity of software is constantly rising, with no limit in sight. As we develop more advanced software-- and as we develop solutions to manage the ever-increasing complexity of this software-- the benefits of the new software are absorbed by the rising tide of customer expectations. Software development will never be easy; new software always has to push against the current complexity boundary if it wants to be commercially successful.

This was all written in 1997. Nearly ten years later, are his points still valid? Software is certainly still a gas. Now that we're entering the multi-core era, there is one crucial difference. Historically hardware has gotten more complex because of limitations in the ability of software to scale; now the software needs to get more complex because of limitations in the ability of hardware to scale. The burden of scaling now falls on the software.

Myhrvold then makes an interesting point about the amount of storage required to capture human diversity. If..

  • the human Genome is approximately 1 gigabyte of data;
  • the individual difference between any two humans is 0.25% of their Genome;
  • we assume a lossless compression rate of 2:1;

The individually unique part of the human Genome can be stored in ~1.2 megabytes. Thus, you fit on a 3.5" floppy disk.

In fact, the entirety of human genetic diversity for every living human being could be stored in a 3.7 terabyte drive array. And the entire genetic diversity of every living thing on earth could be stored in roughly the size of the internet circa 2001.

I'm not sure what that means, exactly, but I love the idea that I can fit myself on a 3.5" floppy disk.

Written by Jeff Atwood

Indoor enthusiast. Co-founder of Stack Exchange and Discourse. Disclaimer: I have no idea what I'm talking about. Find me here: http://twitter.com/codinghorror