Genetics
From APIDesign
The Genetics of APIDesign is an interesting topic that recently came up when I was trying to use the Evolution vs. Intelligent design argument among my colleagues. It is a paradox of APIDesign - if you are a regular software architect you can act as an Intelligent designer and many successfully do. You have the vision and you may strive for it.
However, when you are an API designer, you'd rather worship evolution - your goal is to create a system that others use to do something intelligent, but you, as the API architect, don't set the ultimate goal. A key to success is to create a system that blossoms with evolution rather than prescribing what shall be the result.
Copying Genes vs. Species
The puzzle to gain more understanding to the difference between API and implementation is: The core concept of evolution is pretty much copy an existing thing with only minor modifications!
In order to practice evolution the nature allows copying, mixing and even random errors when producing new instances of the creatures. The creatures differ slightly then, while remaining capable to deal with each other and compete to become the best survivors and produce new copies of themselves. However that only works if the modifications are minor!
If you triplicate human 21st chromosome you get people affected by Down syndrom which isn't lethal, but significantly shortens the expected lifetime and decreases/if not disables the ability to reproduce. If you mix a donkey with a female horse you get a mule - while mule is useful and plant them, it is no good from the point of genetics - it cannot further participate in evolution.