Omri Amirav-Drory makes a tantalizing case for comparing genomics to programming:
... it's just software—it's software that writes it's own hardware, but it's just software.
However, programmer shouldn't expect a smooth transition. There are a few key differences that I've already noticed while playing with the beta Genome Compiler which need to be alleviated to make tinkering easier.
Different Mental Model
At it's core, software is about computation (that's why they're
called computers). The concepts you first learn about are inputs, outputs,
and manipulations. Your first program is something like
print "Hello World.".
From those small pieces you can build larger and larger structures until you
create a new environment (e.g., an operating system).
Genetic material, on the other hand, is focused on (re)production. While there
are initialization blocks (I can imagined what the
chromosome replication initiator might do) and conditional branches for
different parts (a short virus had multiple variants of legs),
most parts of the genome focus on the production of chemicals whose
subsequent effects are the ultimate things of interest to me as a designer.
Barring an understanding of the chemical being produced, I cannot make sense
of what I'm manufacturing.
To try and make sense of what's going on, I looked at the reference information
provided when you click on a block. I presume the information is useful
to practitioners, but it is extremely opaque to non-experts (Oh, this block
spore peptidoglycan hydrolase! What's that do?). Of course, we ought
not neglect how this information was obtained in the first place. The analogy
of giving iPads to cavemen is apt—we've had to reverse-engineer this
highly complex entity one piece at a time.
Nonetheless, for real tinkering to take off, the building blocks need to be easier to reason about (think Scratch for genomes).
After about an hour of playing around, I ended up splicing a bunch of random genetic material together from different creatures, but still had no idea what it would do. Moreover, there wasn't any way for me to step through my creation and see the consequence on the environment (even a highly artificial one).
When programming, being able to stop the program and inspect it's goings on gives you an insight which is hard to get when you only look at the finished product.
This is the kind of development which opens up the possibility of dramatically expanding our understanding and control of the world at several different levels.
First, we can now start talking about actual, mass-produced nano-manufacturing. The recent finding of a cicada which physically shreds bacteria further pushes the idea that we'll soon be creating materials with tiny features for productive use.
Next, we can open up the number of people who can participate in this once-reclusive field. Open Source biology is a natural consequence.
Finally, we should expect the field of immunology to explode as safe-guards for the diabolical creations of the masses need to be manufactured.
Overall, this is an exciting development, much like the development of early computing, but with far-reaching consequences for life on the planet.
- See Glowing Plants: Natural Lighting with no Electricity for the Kickstarter project to create glowing plants using Genome Compiler.