Article

From designed to evolved software

Software used to need a watchmaker. Now it needs a breeder. What Darwin can teach us about building with AI.

By Ryan Eakman6 min read

Before Darwin, the perceived elegance of life seemed to require a divine designer. An eye fit for seeing, a wing fit for flying, a beak fit for a particular seed: these looked like intelligent innovations. William Paley compared nature to a watch, implying that a watchmaker must exist given the level of complexity and elegance on display.

Darwin gave us another explanation. Variation and selection, when repeated over a long time, can produce organisms that look designed for their environments without anyone designing them. He knew this was hard to accept, so he opened On the Origin of Species not with nature but with breeders. A pigeon fancier never designs a bird and never controls which variations appear. The breeder only chooses which birds get to be parents, and that one decision, repeated over generations, turned the common rock dove into birds that looked deliberately made. The breeder specifies what is worth preserving without specifying the mechanism that produces it. Nature, Darwin argued, does the same thing with nobody choosing.

Whether the selection is natural or artificial, the more closely we examined what it produced, the more slop we found. A giraffe’s recurrent laryngeal nerve travels from its brain down around its aorta and back up its long neck to reach a destination only inches from where it began. The vertebrate retina is wired backwards: light has to pass through a layer of nerves and blood vessels before reaching the photoreceptors, and where that wiring exits the eye, every one of us has a blind spot - a flaw the octopus eye, built along a separate lineage, does not share. Our throats route food and air through the same short passage, which is why humans can choke to death on lunch. Whales still carry the shrunken remains of hip bones for legs they no longer have, and the panda’s “thumb” is not a thumb at all but an enlarged wrist bone pressed into service. Look deeply into the internals of almost any organism and you find the same pattern: not the product of a design, but of iteration under constraints. Yet even those who studied the internals could overlook the slop. The result was so compelling that it still seemed like the work of a divine creator.

This combination of internal slop and external elegance is beginning to feel familiar in software. AI can produce software that works while offending nearly every instinct we have about how good software should look. The abstractions are not the ones we would choose. A function is longer than it should be. The implementation carries traces of the path taken to reach it and often has signs of being created with a specific objective in mind without concern for the larger codebase. Most users will never see any of this. They experience how well the software fits their needs. At its best, it feels like it understands what they are trying to do, reflects their taste, and was made specifically for them. The internals may look strange while the product feels unusually well adapted to the person using it. Darwin’s readers could not accept that something as elegant as an eye came from a process with no designer. Engineers cannot accept that a process producing this much slop can produce software users love. The objections point in opposite directions, but they rest on the same assumption: that the quality of a result has to match the quality of whatever produced it. Evolution’s answer is that it does not. The internals only tell you how something was made. Whether it works is decided by the people using it.

AI changes the economics of caring about the internals. Generating and revising implementations is getting cheaper while human attention remains at a premium. Generation is the variation: cheap, abundant, and indifferent to our preferences. What we control is the selection. This is not natural selection, because nothing survives here unless we decide it does. It is the breeder’s kind. Our highest-leverage work is increasingly not to design every implementation detail but rather to design the selection process: what counts as fit, what evidence proves it, and what gets to become the parent of the next generation. The breeder gets heredity for free: pick the parents and the offspring carry the trait. We do not. Nothing a model generates remembers what we rejected last time. A code review comment does not alter the next generation on its own. Making a selection stick is ours to build.

The way to build it is to encode as much as possible in shared, persisted artifacts: product principles, the tradeoffs the product is willing to make, who it is for, and what it takes to prove a change works. Some of that belongs in skills and AGENTS.md files that every agent reads before it generates anything. Some belongs in tests, evals, CI checks, schemas, and architectural constraints, whatever the next generation is forced to pass through. What is specific to the work at hand gets the same treatment in the moment, stated as thoroughly as possible. That is how generation gets guided, and it is what makes you the breeder rather than the reviewer.

When the process produces a real flaw, fixing the code is only half the work. A fix in a pull request selects once. The other half is changing the process that let it through: a missing constraint, a more realistic test, a higher bar of evidence. Written back into whatever future work has to pass through, the lesson selects every time after. Good engineering organizations have always done some version of this: a production incident becomes a regression test, a repeated review comment becomes a lint rule, a painful architectural mistake becomes a principle. That is the difference between a reviewer and a breeder. When internals do matter, when they make software unsafe, unreliable, or hard to change, that is a fitness criterion and belongs in the selection process like any other. Unfamiliarity alone does not. The recipe will keep changing, and it should. What accumulates is the judgment of everyone who ever noticed something wrong, kept where every future generation is produced, and that is the asset.

Companies that invest in the selection process on top of AI will be the ones that capitalize on this moment. Companies aren’t judged on the internal slop they avoided but on the value they deliver to users, and as generation gets cheaper the advantage goes to whoever is best at encoding what deserves to survive. Evolution never fixed all its slop. It kept shipping what worked and, once confronted with the results, we mistook them for the work of a god. If the selection we build on top of AI leaves users convinced that a god was at work, we should be so lucky.