The way we have been approaching manufacturing and approaching software development historically have been very inefficient. By replicating the way nature creates objects by starting with a ‘seed’ encoded with information, and providing a nurturing environment, we can ‘grow’ our products and information systems. This radically alters our approach and increases efficiency.
Look at a tree, preferably in the spring or late winter. It is composed of a set of repeating patterns. The way the trunk branches out and the branches in turn create similar structures is a wonderous thing to behold. Where did this ability come from? Notice how the branches become smaller and smaller, almost infinitely. It’s the same pattern repeated. Very simple, yet producing something very large.
It requires no intervention by anyone. It’s able to do this with some basic information encoded initially in its seed. To sustain growth, it requires nutrients from the soil, carbon dioxide, and an environment (such as climate) that can vary considerably.
But the notion is not the end product, but really we should look at its initial state. It was a small seed. Everything the tree needed in order to grow was encoded in this seed. Not one additional piece of information was acquired during its lifetime. It was all there in the start.
Now imagine our manufacturing doing the same thing. We create products today through a process that requires a great deal of energy. Generally the more energy we invest in manufacturing, the higher the yields. However this process is hugely inefficient.
We could start our products as seeds. Provide them with a very simple bit of information encoded into them. Then provide them with an environment that’s conducive to growth. And in that environment allow them to access the nutrients for growth. These products can create themselves.
Apply this notion to information systems. Our current model of software development in some ways seems to be even more inefficient than manufacturing. It certainly produces more flaws in the final product. But what if our software was created in a radically different way?
We can start our software as a seed. Encode it with a basic algorighm on how to grow. Then provide it with an environment and ‘nutrients’ in which to grow. It can grow itself. Surely the final product will be a better product than current processes create.