Lately I’ve had the good fortune to be able to investigate this possibility as a visitor at a remarkable lab in Berkeley called the Molecular Sciences Institute, or MolSci, headed by Roger Brent. He and his team are describing biological phenomena at a minute level of detail, which could pave the way for synthetic biologists to come. One of MolSci’s innovations is a “tadpole,” a human-designed molecule with a protein head and a DNA tail that can precisely count the number of rare molecules inside a cell. The kinds of data that can be gathered at labs like MolSci are exactly what’s needed if we are ever to understand what is going on inside a cell from a computational point of view.
The key to understanding complicated things like synthetic biology is being able to break them into simpler things. Let’s call this modularity. Going back to the difference between hardware and software: The problem a chip designer has to solve is modularized completely within a tight conceptual box. The logic design of a chip is perfectly specified, and the parameters of the physical environment in which it will operate, such as the temperature, can be carefully constrained.
Software, in contrast, makes contact with the wild world outside the limits of comfortable abstractions. Even when you think you’ve considered every condition that a piece of software will encounter, the rebellious nature of reality (including the foibles of human users) will come up with something to violate your assumptions. E-mail programs were originally written without foreseeing that some people would want to write viruses to pierce them.
If you completely understand your problem, as chip designers do, you’re not only halfway to solving it, you can also draw on lessons you’ve learned in the past. Your knowledge compounds, and I think that’s part of why chip engineering gets better and better. If you are instead facing the wilds of nature, you have to adapt constantly, and old knowledge is not necessarily relevant to new challenges.
There’s a subtle philosophical point that needs to be made about modularity. If you look at a complicated thing, like a big computer program, there might be more than one way of interpreting how it can be broken into modules. In the case of biology, it’s most likely there are layers of biological modularity staring us in the face that we haven’t noticed yet. The reason I suspect this is true is because of the amazing resilience of biological systems.
If you make an alphabetized list of all the possible large computer programs (up to a given size) without regard to how they might be broken into modules, the distribution of the ones that crash will be random. Not only that, you can never even be sure that you’ve found all the ones that might eventually crash. In general, you can’t do experiments (using evolutionary experimental method) with large-scale computer code to learn about the code because the results will be random. Dismal indeed! If biology were equally dismal, the results of evolutionary experiments would also be random, and evolution would be impossible.
But there are special cases in which it’s possible to evade the curse. If the code is encapsulated into modules that can work together in a multitude of possible combinations, then a lot of similar large programs might be expected to operate in similar ways because they are just different combinations of those modules. That means there might be areas in that long alphabetized list where a bunch of “good” large programs are clumped together. Conversely, if you find a bunch of “good” programs in close proximity to one another, you have evidence that there’s an underlying modularity helping you avoid the curse of randomness.
Natural biology doesn’t have just one scheme for modularity but a multitude of examples we know about. If you make random changes to a gene, you’ll still be able to get a protein out of the result about a third of the time (though for any specific gene the ratio might be much higher or lower). Brent thinks of that as a perilous rate of failure, but biologists are inured to luxury. If computer science could generate a system in which a third of the guesses yielded programs worth testing, we could probably keep up with Moore’s law! No such luck.
When computer scientists look for ways to make software suck less, we do it by trying out new kinds of modularity. But the sad truth is that computer science still hasn’t found a form of modularity that helps us clump “good” programs so that we can efficiently use experimental method (the way regular scientists do) to explore the meanings of small program tweaks. Instead, we have to slog through all the random results to make progress.
So, finally, the promised early warning sign to watch for: If biologists start reporting the discoveries of new levels of modularity—and in particular, if synthetic biologists can modify those encapsulation schemes—then watch out. The fungus hat will start to sound just a touch less crazy. If, on the other hand, what you hear about is experiments in which previously known modules like genes are swapped around, then expect a more dismal, softwarelike biotechnology. It will get better, but on software’s grudging schedule instead of hardware’s soaring trajectory.