A few days ago, I was trying to make myself fall asleep because I read a post about Broken Sleep and was trying to implement it. I was supposed to wake up early in the morning and read/think on a few topics that interests me. However, I had already taken a lot of sleep during the weekend and was having hard time sleeping. While I was trying to (rather waiting for) sleep, I had this thought. I could see Biology – especially genetics – as a reverse engineering process. I haven’t read anything about this perspective. May be (with high probability) it has already been seen in this perspective, people might already have written a lot about Biology as a reverse engineering process. But I’m now going to write my own thoughts as to why I came to think this way. I’m not going to read other papers/posts etc. on this subject, I’ll just focus on what and why I think Biology is a reverse engineering process.

So, let’s begin!

I bet you have already started thinking positively about the topic. May be you already have made a few links in your mind which can explain why Biology is a reverse engineering process. Good! That’s how thought too! I have computer science and Bioinformatics background. So I’ll try to explain reverse engineering in terms of Computer Science. Disclaimer: I am NOT expert in the area of reverse engineering.

The reproduction of another manufacturer’s product following detailed examination of its construction or composition

This is the definition I got by a quick Google search. Let’s think about it for a second. I would like to focus on particular words here – reproduction, detailed examination & another manufacturer.

The wiki page about Reverse Engineering mentions something extra at the end – anything man-made. Now, if we keep this part “man-made” we won’t be able to further investigate the perspective in focus. So I’m going to omit this part.

Let us take the example of DNA replication. It is the process by which our DNA separates into two. So that cells can multiply in numbers. This is one the most basic process in the world of Biology which remained unknown until 1950s when Watson & Crick proposed a structure of DNA. The knowledge of the structure explained a lot of mysteries as to how the information would be stored, how it duplicated itself etc. Till then, DNA was considered as “another molecule” which existed in all life forms (well, not in retroviruses). I need not elaborate on the importance of this discovery, but the way in which this progressed – the process of the discovery – is similar to that of reverse engineering a software.

We knew cells multiply. We knew chromosomes double in numbers during cell division. We knew upper layers of the process of cell division. Just like we know, for example, a software produces a result of the search term but we don’t know the algorithm being used. Therefore, scientists started to take apart the pieces they thought to be involved in the process of cell division. They came across many molecules such as histones, polymerases etc. enzymes. They all were present in chromosomes. We didn’t know which molecule (if any) was responsible for the process. Whether it was a single molecule dong the whole process or a system of multiple molecules? To translate this in terms of software analogy, let’s think of a software which takes structures written in C and produces respective classes in C++. Here, we wouldn’t know which particular mechanism is being used. To understand how this is being done, one might look at memory traces etc.

When we discovered the structure of DNA molecule, we were able to see through a lot of mysteries of the cell. That’s like we came to know what memory addresses are being used to store what. A big achievement if thought in terms of Biology!

Let’s think how this relates to reverse engineering a bit closely. We had a cell. We knew a few things about it. We took it apart, tried to understand in detail how the construction is by close examination. And now we are using this information to engineer new stretches of DNA to reproduce products such as insulin. Voila! All the things in one. Now you might ask where the manufacturer is. Nature is the simple answer. Evolution tried and tested enormous amounts of ways in which replication of DNA would be possible. It discarded non-optimal ways of replication and kept those which performed the best in given conditions. Nature has engineered everything, we reverse engineered a tiny part of it.

You can take ANY – practically any work in Biology and you’ll see it is reverse engineering one or another process and may be being applied to cure diseases.

Take neuroscience – we are understanding how the already existing system is working by reverse engineering tiny bits. Take genetics. Take evolutionary science. Take Biochemistry. All these are processes of reverse engineering. It appears to be a really simple perspective – Biology is a reverse engineering process. So what?

I came to think of this because, if it is a reverse engineering, then there has to be some language used! As we can look at the code and can “see” the outcomes of the processes being done by the software, we should be able to find something similar in our cells. I hope someday we will be able to take a molecule and tell the story of future and past, modify it. Just by looking at the system of molecules. Like a programming language, nature might have a language, its own grammar and rules. So far, Mathematics is the language of the Universe. Let’s find out how to talk to Biological systems.

The complexities in doing so are huge. The network in front of us is HUGE. Too many complex processes are going on simultaneously, too many networks exist, all these processes are interconnected, they all affect each other, there are ethical limitations as to what limit we can extend our experiments. Quantum Mechanics has been found to play role in Biological systems. Which just explodes the complexity because we don’t really understand the laws well.

I have hopes that we will overcome all these barriers and be able to see through the nature without disturbing it.




To read source of this page, visit: git repo