Tuesday, August 17, 2004

To rewrite or to patch, that is the question

I've been spending a lot of time thinking about what sort of research I want to do and I feel like I have two basic choices: work on building the "new" biology [ie synthetic biology] or work on figuring out the "old" biology [ie biology as it currently exists], albeit with new, heavily computational, tools. To help me get my head around it, I've been looking at it through a lens that I'm familiar with, namely computers and software. Viewed through that lens, the two choices break down like this:

[Disclaimer: I'm still pretty clueless about biology, so it may well be that this analogy totally falls apart on closer inspection ;-)]

Synthetic biology is like being given the chance to build a new computing system from scratch, pretty much from the ground up. This means that you get to define everything yourself -- the architecture of the computer, the instruction set, the memory hierarchy etc, so you get [hopefully] exactly what you want. However, with that also comes the fact that you then have to fully design and build all of it -- you have to write the microcode, the compiler, the operating system and all the system services yourself, and debug each level. That's a pretty daunting task, especially given the limited understanding we currently have of all the forces acting on even the simplest biological system and the tools we have for investigating [ie "debugging and inspecting"] biological systems.

So, the end result will be [we hope] much more amenable to human understanding and manipulation, but it'll take a while to get there. How long "a while" is of course depends on the level of functionality being aimed for, but I suspect it'll be at least 5-10 years before we can reliably [ie resistant to mutation, able to operate under many different conditions etc] build something like a biological circuit that counts the number of cell divisions and induces cell death if the cell has divided more than, say, 100 times.

The "old" biology is like being given a working system [ie the human body] and being told "Figure out how it works, figure out how to fix it when it's broken [eg in disease] and figure out how to make it do certain things better [eg maybe a stronger immune system]". In this case, you already have a working system, but it's insanely complicated and not really "designed" to do anything except survive in any way that's possible. It's pretty much an engineer's nightmare in that there is no modularity, exceptions to just about every rule, bugs [and features] we don't know about, zillions of interacting parts and unknown forces [like selective pressure] acting on it and changing it in ways we don't understand. Oh, and God forgot to leave us the instruction manual and doesn't pick up the phone when we call tech support. Everything we know, we've had to figure out on our own, and that will always be the case; the problem of "debugging" tools is even more acute here than in synthetic biology because we don't even know all the parts to look at. The flip side is that you don't have to re-invent and re-build everything from scratch -- once you figure out the rules for the little corner of it that you care about, you can manipulate it and have an already-working system in place to test out your changes.

The question for me is: if I want to work on something that can lead to applicable technology, which direction do I pick ? In software terms, it's basically "Should I rewrite the program or should I patch the existing one ?". The answer, as with many things, is "It depends" -- on how quickly you need it, how much it's allowed to cost, who your existing customers are and what their needs are etc.

In the [really ?] long term, I think synthetic biology has the bigger upside -- being able to custom-build biological circuitry and insert it into living organisms is just about the most powerful technology I can think of [wouldn't it be nice, or at least more practical sometimes, if we all had chloroplasts so we could get energy from sunlight and a handful of nutrients found in soil, rather than having to eat ?]. In the short term, well, people are ill and dying now and there's lots of work to be done in figuring out what ails them and how to prevent that.

The programmer in me is saying "Go with the new stuff -- you get to totally build your own system ! Who wants to work on a grotty system that's already a few billion years old ? Let somebody else do tech support for version 1.0, version 2.0 will be so much cooler and more exciting !". The pragmatic part of me is saying "Yeah, human 1.0 is old, but we've got over 6 billion customers and more being born everyday and so far 2.0 is mostly spec-ware, so the right thing to do is work on 1.0 and squeeze as much out of that as possible."

Right now, I'm pretty squarely on the fence. I have to pick a thesis advisor and lab by the end of the first year, so that's as long as I can stay on the fence, but I'd like to get off it sooner than that.



Blogger Corey said...

Interesting decision you must make. Newer is always more gooder. I may need you to grow me a new limb or something in 10 years. =) I'll concentrate on keeping my cholesterol down and not getting cancer by not consuming fried chicken while you stick to the new stuff.

Let's not kill ourselves building and testing a patch when the next version is right around the corner!


7:28 PM  

Post a Comment

<< Home