He has a point for smaller-scale programming. Certainly, even when designing part of a larger system, one should aim to be as clear and well-structured as possible.
But beyond a certain scale, complex systems, including complex software, must be grown and not master-planned. This is one of the main advantages of iterative design and development.
Organic life passed this level of complexity long ago. Yes, evolution is dumb enough that it has passed up some obvious improvements. But humans are not (at least not yet) so smart that they could design even a bacterium from scratch, without resorting to iteration, and trial-and-error.
I think the argument is totally flawed. Brains and eyeballs are biological. Perhaps biology is more bottoms up than top down or more like generate and test, yet it produces systems of incredible complexity that are remarkably robust. For example a human heart beats ~ 1 billion times, I've yet to see a human designed and architected pump do that. We just don't understand very well yet how the liver and pancreas work and western medicine is particularly weak in taking a holistic or systems view to the body.
Software, bad or good, is not like biology and it's not like construction. Software is mathematics.
I don't think that characterizing biological systems as having no order whatsoever is exactly accurate. I understand the point he is making, but I'm not sure the parallels hold up particularly well.
Heh, best argument against creationism yet: If God were omnipotent and omniscient and God designed the human body, then it wouldn't be such a phenomenal mess!
Or maybe the Universe was a hastily done outsourcing job?
Seriously though, as messy as organ systems and biochemistry may be, the weird thing is that it all works by itself, using basic chemical properties. I remember how some textbooks can make it sound like proteins and molecules are ordered around in a cell, but in reality everything just floats around, is attracted and repelled to other stuff in the right places, and it works.
So am I, provided you either have Unit Tests, Design by Contract specs, and/or functional specs for everything. If you don't, then it might be a literal act of suicide.
-> "A good developer would never put the end of the digestive system right next to the start of the reproduction system - not even if that would require fewer lines of code (which it undoubtedly did)."
Whatever point he's trying to make in this post - and I'm not going to take the time to try to figure it out - I'm sure there's a simpler way of saying it.
Basically, "biological" describes a system that works decently, and which has grown through incremental changes, and yet is a poorly architected mess inside. It describes something that appears to be great from the way it works and the way it looks on the outside, even if the internals are a mess that require 10 years of schooling and residency to fully understand and maintain ;)
Not even that! 10 years and continual refresher courses and on-the-job training for a lifetime -- just to have an inkling and at best a hazy but uncanny knack for fixing. But even this is not even enough in all cases.
But beyond a certain scale, complex systems, including complex software, must be grown and not master-planned. This is one of the main advantages of iterative design and development.
Organic life passed this level of complexity long ago. Yes, evolution is dumb enough that it has passed up some obvious improvements. But humans are not (at least not yet) so smart that they could design even a bacterium from scratch, without resorting to iteration, and trial-and-error.