A Cell’s Eye View of Evolution, Part 2
(this month’s image is a photo I took at Glass Beach in Fort Bragg, California. It consists of millions of tiny pebbles of polished sea glass in myriad colors. Each one is improbable to find at a beach, but all of them collectively tell the story of a larger-scale process that explains their presence—many years of disposing of waste bottles nearby)
This is part two of a three-part series. You can read it on its own, but to get the whole story, you should start from the beginning.
Every living cell is a universal automaton, capable of an infinite variety of forms and lifestyles. The cell itself determines the range of possibility—what proteins can it make, how will they integrate into the whole, and how will they shape the organism’s life? But within that space of possibility, the gene sequence is the program that determines what specific body to make, and how it should respond to a chaotic environment. That program is of the utmost importance, selecting one specialized lifestyle out of infinitely many possibilities, most of which would never work. But who wrote it?
Life did. Or, in other words, cells wrote the programming for cells, but it doesn’t seem fair to call them “programmers.” A human programmer is a top-down problem solver. To modify some working software, I start by analyzing that system’s performance: what does it do, and how well? I then try to understand how the system works. I read its programming, and consider how that leads to the behavior I observe. I consider how the system might be better, what specific improvements I might make, and what consequences I expect. I design a change to the code, then tinker with it in a sandbox environment until it does exactly what I want with no surprises or side effects. Only when I’m satisfied do I push the code out for use in the real world.
How are cells supposed to do that? They don’t have a mind like I do. They monitor their own health and situation, but they can’t imagine themselves “from the outside.” They don’t understand their lifestyle, their goals, or their relationships with the world except in terms of stimulus and response. They can execute short stretches of programming from their DNA, but they can’t examine the program as a whole, or imagine what would happen if they ran some other program instead. Mutations and cross-breeding cause the program to change, but cells can’t verify those changes in a safe testing environment. They can only make a new organism, release it into the world, and hope for the best.
This seems like a paradox, but only from the perspective of an individual cell. Life never exists as a lone individual. It always consists of diverse communities and ecosystems. So let’s take that perspective. Life isn’t a cell. Life is a vast collection of cells, an unimaginably huge number of concurrent individuals, living and dying continuously over billions of years. I like to think of it as a massively parallel computer. Life learns by accumulating and generalizing over the experiences of many lifetimes. It tries out many lifestyles simultaneously; whole different categories of lifestyles in different species and niches; many variations on a theme, among organisms of the same species. Whether any individual will be successful is hard to predict, because luck is such a huge factor. But by running the same experiments thousands of trillions of times over, life can get a relatively clear picture of what works and what doesn’t.
From this massively parallel perspective, each cell is a processor unit with two jobs. The first job is to live and reproduce. We normally think of that as “the purpose” of life, but from the collective perspective, it’s just the engine that keeps the system as a whole running. Individual lifetimes come and go rapidly and continuously like the cycles in a computer processor. The second job of each cell is to learn about the Universe and how to thrive in it, then integrate that information back into the system’s programming. That is life’s deeper purpose. Each cell has a very limited perspective and can only do this in a minimal way. But taken all together, vast numbers of cells can behave much more like a traditional programmer.
A cell has no understanding of what it does or how it fits into the big picture, but, in a sense, life as a whole does. Life consists of every cell, every lifestyle, every program that has worked so far, and all the dead ends that aren’t represented. That’s a tremendous amount of information about what the system does, which parts are performing better than others, and where there’s untapped potential. There’s no top-down designer, but this information, embodied in the population itself, still shapes the system’s evolution. Each cell acts selfishly, but by competing and collaborating with each other, life distributes resources to the parts of itself that are thriving in their niche, and encourages exploration of new lifestyles where opportunity lies.
The big difference between life and a human programmer is speculation. Humans envision the system as a whole and imagine where it might go. When I program a computer, I test ideas first in my mind and then in a virtual environment on the computer in order to avoid mistakes and dead ends. Life doesn’t do that, because its massively parallel, distributed design makes that impossible. There simply is no top-down view, no central authority to perceive and decide, no way to step out of the system for testing. Instead, life just tries everything. It tests code in production. It walks straight into failure rather than avoiding it. Death sorts what works from what doesn’t. That’s why we usually think of cells as “dumb” and humans as “smart.”
It would be better to think of humans as more efficient, because in a sense what we do isn’t so different. We both generate lots of options, test them, winnow them down to the most successful, and iterate. I do it with simulations in my brain, life does it with matter in the physical Universe. From a computational perspective, that doesn’t matter. A computer can be realized with cogs, transistors, neurons, or a simulation inside another computer. The materials can be anything so long as the functionality is the same. As individual living animals, it seems tragic and absurd that life must test out ideas by letting things die on a massive scale. From life’s perspective, though, a single lifetime is just a brief use of materials and programming that will get recycled for future experiments. If it were conscious, life as a collective whole wouldn’t regret (or notice!) the death of an organism any more than we regret the death of one of our cells.
You might argue that the human programmer also has foresight. I don’t just try stuff at random, I have a sense of what might work and what probably won’t. I use trial and error, but I prioritize and focus my exploration. It’s tempting to say cells don’t do this, but that’s too dismissive. Cells are quite opinionated. DNA doesn’t contain a blueprint for an organism, but a bunch of recipes that the cell can choose between depending on context. Cells must decide how to act. Evolution has equipped them with a wide variety of strategies and tools, and guidance on when to use them, all encoded in the DNA. This is how life learns from experience, plans ahead, and avoids dead ends. Life explores new paths at random, but it mostly tries out reasonable variations of known working strategies.
Individual cells aren’t much like human programmers, but they do have one thing in common: they write code. Mostly, the cell just copies its own DNA (copy / paste is a popular strategy among human programmers, too), but it makes an important decision: what variations to try in the next generation. This happens either through mutations, or by swapping genetic material with other cells. Without a top-down view of the gene sequence, this can only be a random process. The cell has no idea what changes it’s introducing, or what the consequences might be, but it can try to shape that randomness for the better. Primarily, this means spending a ton of time and energy on error correction, so that only a small number of mutations get through. It also shows up in things like mate selection, genetic recombination, and preparing the environment for the next generation.
I like to think of Darwin’s story as how life got started. Random mutation and selection are all you need to evolve better forms. As we learn more about cells, though, we see there’s a lot more going on. Life didn’t just find better lifestyles, it invented a general purpose platform capable of an infinite variety of lifestyles. As a collective, life uses that platform to explore many lifestyles simultaneously, pruning dead ends and investing more resources into exploring evolutionary paths that seem fruitful. Life started out randomly, but it grew more opinionated over time, and it has evolved many sophisticated ways to direct and shape its own evolution. That will be the topic of my next post.
What do you think? Did reading this make you think of life, cells, or evolution any differently? Any new ideas? Does anything I said sound wrong or misleading? Do you have other ways of looking at it? This post is more speculative than usual, and represents some of the ideas I hope to pursue in my PhD research, so I’m very interested in criticism and feedback. If you have any thoughts, please let me know in the comments!