How software can learn a lot from the way nature works

Permaculture and the way natural systems function have many parallels with the software ecosystem and lessons for those who work in developing code
Written by Jake Rayson Rayson, Contributor

I am branching out into pastures new, and permaculture is my chosen field. Permaculture is permanent agriculture, a way of growing stuff in a mutually supporting and sustainable manner. And permaculture is sooo zeitgeist: local, organic, friendly, fair trade, ethical everything — it just ticks all the boxes.

The excellent Rachel Andrew blogged recently on acquisitions, pricing and being part of an ecosystem. A key point was that if you use software, then pay for it. Otherwise, you'll lose it.

I blogged recently about the magnificent Sublime Text, and I was gobsmacked by some of the comments: $59?! For a text editor? Outrageous! And this coming from a programmer, average earnings $500 a day. If you like it, pay for it, and stop moaning. If you don't like it, don't use it, end of.

At a permaculture talk by Aranya I was struck by the parallels with the software ecosystem:

  1. Redundancy is built in If something fails, it is an opportunity for something else to work.
  2. Test driven Make small changes to see if it works.
  3. System design Design holistically, with the whole system in mind.
  4. Symbiotic relationships Components should work together for mutual benefit.
  5. Responsive design The system responds directly to the environment — sun, wind, rainfall, browser size.
  6. Time A good system takes time to build, is reflective and attentive to what happens.
  7. Diversity, not monoculture Diversity is good, as it leads to resilience.

It's a nice feeling to learn from other disciplines, and I'll be trying to incorporate these ideas into my own web design practice.

Editorial standards