Biomimicry is described as:
Biomimicry (from bios, meaning life, and mimesis, meaning to imitate) is a design discipline that studies nature’s best ideas and then imitates these designs and processes to solve human problems. Studying a leaf to invent a better solar cell is an example of this “innovation inspired by nature.”
The core idea is that nature, imaginative by necessity, has already solved many of the problems we are grappling with. Animals, plants, and microbes are the consummate engineers. They have found what works, what is appropriate, and most important, what lasts here on Earth. This is the real news of biomimicry: After 3.8 billion years of research and development, failures are fossils, and what surrounds us is the secret to survival. (biomimicry.net)
The link to sustainability is strong. Biomimicry Guild argues that biomimicry design processes…
Are sustainable: Biomimicry follows Life’s Principles. Life’s Principles instruct us to: build from the bottom up, self-assemble, optimize rather than maximize, use free energy, cross-pollinate, embrace diversity, adapt and evolve, use life-friendly materials and processes, engage in symbiotic relationships, and enhance the bio-sphere. By following the principles life uses, you can create products and processes that are well adapted to life on earth.
How could we adopt biomimcry in software engineering? By doing so we might hope to work more sustainably and produce more sustainable products. Could this be a way to the paradigm shift we’ve been looking for? To this end, perhaps nature and biomimicry could be super system metaphors.
In software development the System Metaphor has been adopted as a core practice by the agile community. Kent Beck, author of Extreme Programming Explained defines a system metaphor as:
“a story that everyone – customers, programmers, and managers – can tell about how the system works.” p. 179.
Wake argues that we seek a system metaphor for several reasons:
Common Vision: To enable everyone to agree on how the system works. The metaphor suggests the key structure of how the problem and the solution are perceived. This can make it easier to understand what the system is, as well as what it could be.
Shared Vocabulary: The metaphor helps suggest a common system of names for objects and the relationships between them. This can become a jargon in the best sense: a powerful, specialized, shorthand vocabulary for experts. Naming something helps give you power over it.
Generativity: The analogies of a metaphor can suggest new ideas about the system (both problems and solutions). For example, the metaphor, “Customer service is an assembly line”. This suggests the idea of a problem being handed from group to group to be worked on, but it also raises the question, “What happens when the problem gets to the end of the line – does it just fall off?” This can bring out important issues that might otherwise lurk and fester.
Architecture: The metaphor shapes the system, by identifying key objects and suggesting aspects of their interfaces. It supports the static and dynamic object models of the system.
Some metaphors are used repeatedly in software development. Shaw and Garlan identify common approaches:
1. Spreadsheet Metaphor
2 Script Metaphor
3 Manufacturing Metaphor (e.g. LinesStationsBinsParts or AssemblyLine)
4 Accounting Metaphor (double-entry archive notation)
5 Shopping Cart Metaphor (e-commerce)
6 Auction Metaphor (e-commerce)
7 Blackboard Metaphor (ai)
8 Document Processor (desktop systems where the “model” gets saved as a file)
9 Virtual Space Metaphor (eg. VR)
10 Desktop Metaphor
11Tools and Materials Metaphor
12 Buttons Everywhere Metaphor
At first thought we might think that nature offers little by the way of a direct metaphor, note, none of the common metaphors listed above are nature based. Further, successful biomimicry examples are primarily engineering based (materials, structural etc- and IBM has recently applied to computer engineering). The software end of computing is about information, perhaps nature doesn’t manage information.
Sylia Nagl pointed me to biologically inspired computing: genetic algorithms; neural networks; viruses. At a genetic level nature certainly stores information, and expresses this information. Further, nature does have communication systems, and sometimes this forms complex information systems. Clearly there are metaphors that could be used (the Biomimicry database would be a good place to find biological challenges and solutions we might not otherwise be aware of).
Jefferies, in an evocative description of an agent-based information retrieval system describes “this program works like a hive of bees, going out for pollen and bringing it back to the hive”. In “Biomimicry for optimisation, control and automation“, Passino has a extensive chapter on foraging behaviours as a basis for search optimisation. Clearly, there are biological metaphors that could be used in software development. The bigger question, is whether biomimicry itself could provide a metaphor to transform software development?
Almost all software development follows a engineering based project management paradigm. The underlying model is one of business, only very occasionally does science get a look in with scientific method sneaking in in the form of test based development.
The development methodology described by Biomimicry Guild can be seen to closely align with the software development processes (see, for example, the Agile Development Framework we use).
We’ve already seen that there could be benefits in biological metaphors. These could be facilitated with questions such as “How does Nature achieve this function in this environment?”, Find champion adapters by asking “whose survival depends on this?”.
We’ve also already come across biological metaphors in development processes. In Sustainable Software Development Tate described the production of software as being like a coral reef:
A successful software product plays the role of the underlying coral in the reef. The coral is what makes the entire ecosystem possible. None of the other organisms can survive without it. …continually evolving, growing, and changing. The reef is incredibly complex yet also fragile and vulnerable, just as a software product’s ecosystem is prone to disruptive technologies or competition. This level of complexity, growth, constant change, evolution, and vulnerability I believe accurately portrays the complex world that today’s software products inhabit.
The team is in itself a super-organism and as such it needs to be treated in ways that enhance and support its complex and interconnected nature. If you can see the team as a whole and not as the mere aggregation of the individual parts that make it up, you can discover how much more productive, reliable and efficient a virtual team can be.
Ken also describes the autopoiesis work of Maturana and Varela. This is perhaps the killer app, I’m just not sure how yet.
A final word of caution. Despite the use of inherently natural models, and the strong links to sustainability given above, biological metaphors taken out of context may not be at all sustainable. Nature is not always a benign operation, much of what we see in nature is a result of fierce battles in the competition for the scarce resource – light. A whole systems approach would be crucial in such a paradigm.