But there's another problem with this process - it's this: trying to make something really good by making small, incremental changes to something that already exists is not a particularly good way of achieving your goal (even if those small changes are carefully considered by people who know what they are doing).
And I speak from personal experience here. Let me give you a (very) brief resume of my career to date: I stated out by studying at university for four years for a degree in civil engineering and then went on to work for a major international engineering consultancy. This role involved carrying out analysis and design of a wide range of major structures for clients based around the world. I also became a fully chartered civil engineer during that time. Subsequently, I had a bit of a career change and moved into the IT field where I have held a number of positions related to the design and implementation of IT systems (mainly for the international airline that I currently work for).
Now my intention here is not to try to get you to offer me a job, but to show you that I have had a lot of involvement in designing and building things over the years.
On some occasions the situation has been such that it was possible to design the "thing" from scratch. I.e. the thing didn't exist, someone wanted it, so we designed and built it.
On other occasions we were a little less fortunate. On those occasions the "thing" already existed but the needs of the owner of that thing had moved on, so the thing had to be changed to meet those new requirements. Some examples included having to increase the height of a large dam in Sudan, having to adapt part of a high-profile train terminal in London to reduce the likelihood of death or injury in the event of a train crash, and, in IT, I was involved in one way or another in having to make ongoing improvements to several business critical IT systems.
In all these cases (where we have had to "improve" something) there is no doubt that the end result would have been better if we had been able to start from scratch. When you are improving something that already exists, with the best will in the world, you always have to make compromises.
I suspect that you have also see this at least with IT systems. One day a shiny new system is installed and everyone is amazed at how great it is (well hopefully!). However, over time, needs change, and so changes are made to the system. Someone wants the system to do something a little differently, so they write their requirements and IT writes and installs a patch. And then it happens again. And again. And again and again and again. And before long that system isn't quite so shiny and new any more. In fact, it's the department's pet hate. It's ropey and keeps crashing. It does weird stuff with their data when they least expect it. The longer the process goes on the worse things get. So finally the decision is taken that enough is enough. A new system is brought in... and the process starts all over again.
That's just what my experience tells me: making lots of small changes to a system over an extended period of time just isn't the way you get really good systems. Even when the people making those changes are highly skilled and know what they are doing. You are far better off learning the lessons from the old system, taking advantage of new technologies that have become available, and starting again from scratch.
Now, if this principle is true in civil engineering and in software engineering, I see no reason to suspect that it is not true when it comes to designing animals. And when I look at the design of animals I don't see systems that look like they have been continually "patched" (with random patches) and so are very flaky, don't really hang together very well and should really be scrapped so we can start over. Rather I see systems that are amazingly well designed and make my own attempts at designing and building things look rather pathetic. More like the kind of thing I would expect to see if they had been designed from scratch by a highly skilled engineer.
Note: This is part of a series of posts about why I believe in God. See my post "You Believe that Stuff???" for more info and links to the other related posts.
No comments:
Post a Comment