Beginning musicians think that sheet music contains more information than it does. It’s all they can do to play the notes on the page. Only later do they realize that sheet music is at best a good approximation of what a composer has in mind. Even when they think they’re just playing what’s on the page, their performance is informed by experience not captured in the sheet music.
A decade ago there was a lot of talk of DNA being the blueprint or software of life. But DNA sequences have not been as useful as anticipated. DNA is more like the sheet music of life. The same DNA can be expressed many different ways, just like a piece of sheet music.
Not only is DNA not source code, in a sense even source code is not source code! Source code in the technical sense, a set of computer language files used to build a program, is not source code in the colloquial sense of “everything you need to know.”
In a way, source files are enough to specify a program. Even so, it takes implicit knowledge not in the source code to build a program from the source code. And it takes implicit knowledge to know how to operate the software, no matter thorough the documentation.
In a very literal sense, a program’s binary form is enough to understand how it works. But only at an agonizingly low level. You could trace how values are loaded into registers and still not know what the software does in any useful sense. Even small amounts of source code can be hard to understand without context. See examples here.
Practically speaking, it takes far more than source code to be able to maintain a program, especially if you want to come up to speed quickly. There’s always extra knowledge needed outside the code. This extra knowledge may be so widespread within a community as to be invisible. It’s still there, though it may take someone outside the community to see it.
For example, I often run into trouble when I need to install something on Linux. When I ask a friend for help, he’ll say “Really? I installed it just fine.” Then I explain where I got stuck and he’ll say “Oh yeah, everyone knows …” This isn’t to pick on Linux. I see the same thing from the other side when I help people with Windows. Some projects require more implicit knowledge than others, but all projects require some. The implicit knowledge may be institutional memory within a company or part of a distributed culture, but it’s always there.
Related post: Scripting and the last mile problem
7 thoughts on “Sheet music, DNA, and source code”
This implicit knowledge is a real problem because people often do not realise that they using this knowledge.
The programmer cannot thoroughly test his program because he has made it, and this knowledge prevents him from good testing. When outsider starting to use the program, it immediately crashes.
Teacher often forgets to tell students the most importand parts of subject because these parts are «obvious».
This is exactly why I don’t agree with the open source mantra that source code is necessary for learning. If anything, it’s a distraction from learning. I have released programs before and have had people ask for the source code to “see how you do it”, when really it wasn’t a novel application at all. It’s much more important to learn principles separate from code, and figure out your own ways (especially through trial and error) for how to apply those principles in code.
Sean: This is why I don’t buy the argument that with open source software, you can always change it however you want. Maybe that’s so, but not easily. Maybe people intimately familiar with the project could change things easily, but that’s not to say everyone could.
I can’t necessarily change code easily that I wrote a few years ago, even if its clean code and well-documented. On the other hand, if that code had been made open source, someone might have criticized it while it was fresh on my mind and I could have improved it.
As you probably already know, DNA is not a one-to-one mapping that describes your body. Instead, it describes local cell rules which then interacts with other cells and chemicals in the body. For example, you won’t find a one-to-one blueprint on how to build your liver in your DNA. Therefore, it seems to me that the analogy between DNA and a sheet of music is a little bit misleading. At least for music, all the notes are written on the page (unlike DNA). It seems to me that sheet music is a top-down description of a problem while DNA is more of a bottom-up description.
Either way, I understand what you trying to get at. Unless you are Richard Feynman, any analogy breaks down at some level. I just thought I would leave a comment mentioning it. Additionally, I think there are further parallels one can make between DNA and source code because they are both bottom-up descriptions of a problem. It is only by running the program (in the case of DNA, this would be embryonic development) in which you can observe what actually happens.
It would be interesting to explore this analogy a little further. Can you say a little more about how music is a “top-down description”? It’s an interesting thing to say, but I’m not sure I get it really.
John’s analogy is apt at least to this extent: the notes on the page are not enough for a meaningfully musical performance of a piece. The musical intentionality that a good conductor or performer brings to bear in realizing a piece is missing, which is a kind of implicit knowledge. A performer looking over a piece of music or working out its performance will apply this implicit knowledge as she goes along.
The point that I was attempting to get at was that every note played has a corresponding note on the sheet of music. Of course there is a LOT of information that isn’t provided in a sheet of music. Music is far more than the sum of all the notes played which was John’s point. However, at the very least, a sheet of music offers a rough blueprint (which needs to be appropriately interpreted) of what the author intended the music to sound like. The idea that a sheet of music is a top-down description might not be the best way of describing the difference with DNA. The point I was trying to make was that DNA doesn’t provide a one-to-one blueprint to the bodies activities. Instead, it requires additional context. The only way to tell what a DNA sequence does is to watch it run. There are a ton of emergent properties that occur which are not specified anywhere on the DNA.
After saying all this, I want to STRESS that I’m no biologist. I am currently reading one of Dawkin’s books that described embryonic development and this is what I got out of it.
When you say DNA I think you are referring to the 2% that codes for protein. The analogy breaks down as the thing that causes the more than a straightforward single interpretation of sheet music is musicians, the thing that causes multiple interpretations of DNA is DNA (working in extremely complicated ways at multiple levels)