Also the compiler is self-modifying. And the compiler flags as well. And the OS. And the chip architecture sometimes. Like, at what point do we decide that pushing the analogy further is just silly and just drop it altogether?
At the end of the day, if the gene is self-modifying, the meta-code that modifies the gene also lies somewhere within the gene. Or are you talking about externally modifying a gene by inducing certain mutations?
I am no expert, but I have read a couple of good books on the topic and my understanding is that while it is true that your DNA can modify itself to some extent in response to stimulus, the extent to which this happens is very limited in scope, and limited to ancient genetic pathways, which means these get activated only in times of severe biological stress, like through starvation or famine.
And yet something guides the human zygote in developing as a human. At what point do we stop focusing on refuting simplistic ideas and turn our attention to what is now known?
That 'something' you mention is called developmental biology and it's yet another level of abstraction removed from the basic cell machinery that operates around DNA. It also has nothing to do with compilers or anything computer related. At some point the analogy is just more harmful than anything else.
I don’t disagree with you but I want to point out that it’s interesting how better software, running on an OS, running on a chip architecture, has enabled us to write better OSs and better chip which in turn allows us to write better software that allows us to repeat the cycle.
Aren’t we somehow simulating how life works? Higher abstractions/constructs improve the way the lower constructs work :). Of course, just an oversimplification.
It is source code, it's just that source code is self-modifying.