Joined: Nov. 2005
|Quote (Richardthughes @ June 29 2006,13:29)|
I’ve always thought it would be worthwhile for biologists (or biology students) to have some sort of engineering apprenticeship. By spending time with a design engineer (be it software, mechanical, electrical, or any other discipline), they would see first hand just what it takes to end up with a tightly integrated, functional system on the back end.
Yet here I am, a software engineer and architect and I have no problems whatsoever with the evolution of complex biologicial structures.
You'd think that software design was some kind of magic trick the way Dave describes it - i.e. we sit down, design a perfect system, write the code and it works perfectly first time.
The reality of course if very different. We usually start by borrowing someone else's design in the first place (we even have whole books full of design patterns). We frequently get small or large parts of our design wrong. We have to make compromises in our designs because all the disparate bits don't fit well together. When we build it we introduce many errors which then need to be fixed. And when we've finished it doesn't actually match the original requirements specified (usually poorly) by the customer.
That's software engineering. And it's actually pretty similar to the way evolution does it - lots of iterations with incremental small improvements.
The only thing we can do that evolution can't is 'refactoring' where we can go back and fundamentally redesign bits of the system which don't work well (usually because of bad design in the first place).