Darwin and the theory of software evolution

Bower bird

Female bower birds prefer males with colourful blue tail feathers and an impressive nest filled with lots of blue ornaments. To a bower bird, the brightness and quality of your tail, as well as your ability to gather a stunning assortment of blue nest decorations, indicates how healthy and strong you are, and how likely your genes are to produce equally strong and healthy offspring. In other words, a bigger tail and a cooler house equals more sex, which equals more children. Your genes live on.

Generation after generation the strongest genes survive, the weakest ones are killed off, and the species evolves – better and better. It’s survival of the fittest. Or, perhaps even more apt, survival of the most effective.

Good software product development tends to emulate Darwin’s evolution. Software is built, released, used and measured. The successful features, the heavily used features, the most often talked about features receive more development, more design, more attention; the least used are left alone, watered down or removed entirely. Survival of the most effective.

On the web we have the powerful ability to accelerate the evolution. We can release software updates multiple times per day. Design – code – release – measure – rinse. Repeat. Techniques such as A/B testing accelerate it even more: which is more effective? Text link or graphical link? Blue feathers or green feathers? Big nest or bigger nest? Survival of the most effective.

For the male bower bird, just as for software products, the audience (user) is critical. Every decision the bower bird makes will be judged by the female. It doesn’t matter if the nest is made of wire instead of twigs, or if the bower produced a new nest creation framework. The female bower doesn’t care; that’s not what she makes her decision based on.

Is your product evolving? Who is your audience, and who are you making your product decisions for? Are they the same?

2 thoughts on “Darwin and the theory of software evolution

  1. Will,
    I liked your posting, and I think I might have something of interest for you. From 1975 – 1979, I was an exploration geophysicist exploring for oil, first with Shell, and then with Amoco. In 1979, I made a career change into IT. When I transitioned into IT from geophysics, I figured if you could apply physics to geology; why not apply physics to software? So like the exploration team at Amoco that I had just left, consisting of geologists, geophysicists, paleontologists, geochemists, and petrophysicists, I decided to take all the physics, chemistry, biology, and geology that I could muster and throw it at the problem of software. The basic idea was that many concepts in physics, chemistry, biology, and geology suggested to me that the IT community had accidentally created a pretty decent computer simulation of the physical Universe on a grand scale, a Software Universe so to speak, and that I could use this fantastic simulation in reverse, to better understand the behavior of commercial software, by comparing software to how things behaved in the physical Universe. Softwarephysics depicts software as a virtual substance, and relies upon our understanding of the current theories in physics, chemistry, biology, and geology to help us model the nature of software behavior. So in physics we use software to simulate the behavior of the Universe, while in softwarephysics we use the Universe to simulate the behavior of software.

    Please take a look at my blog on softwarephysics at:

    http://softwarephysics.blogspot.com/

    Because each posting builds upon its predecessors, the postings in this blog should be read in reverse order from the oldest to the most recent, beginning with my original posting on

    SoftwarePhysics
    http://softwarephysics.blogspot.com/2006/07/softwarephysics.html

    However, the posts below are probably of most interest.

    Self-Replicating Information
    http://softwarephysics.blogspot.com/2008/06/new-introduction-to-softwarephysics.html

    Is the Universe Fine-Tuned for Self-Replicating Information?
    http://softwarephysics.blogspot.com/2011/04/new-introduction-to-softwarephysics.html

    SoftwareBiology
    http://softwarephysics.blogspot.com/2008/06/introduction-to-softwarephysics-ii.html

    When Toasters Fly
    http://softwarephysics.blogspot.com/2010/09/new-introduction-to-softwarephysics.html

    The Adaptationist View of Software Evolution
    http://softwarephysics.blogspot.com/2010/11/new-introduction-to-softwarephysics.html

    Software Symbiogenesis
    http://softwarephysics.blogspot.com/2008/07/introduction-to-softwarephysics-ii.html

    A Proposal For All Practicing Paleontologists
    http://softwarephysics.blogspot.com/2009/04/new-introduction-to-softwarephysics.html

    The Origin of Software the Origin of Life
    http://softwarephysics.blogspot.com/2010/05/another-introduction-to-softwarephysics.html

    Programming Clay
    http://softwarephysics.blogspot.com/2011/04/new-introduction-to-softwarephysics_25.html

    Regards,
    Steve Johnston

    • Hi Steve,
      really interesting – thanks for sharing!
      I’ve only just started to scratch the surface of your blog, but it’s quite an interesting perspective and I’m reading more.
      Cheers
      Will.

Leave a Reply

Your email address will not be published. Required fields are marked *