Building web applications since 1997
Good software is a proof of design
Before Darwin described the process that allows natural things to develop complexity over long periods of time through various kinds of selection, there was another, religious, theory called 'argument by design', or 'proof by design'. This basically said that some natural things are so complex and incredible to behold there is no way they could have just appeared by themselves, randomly or otherwise: they had to have been invented by an 'intelligent designer'.
There was no other evidence advanced to support this theory. To understand why it seemed so self-evidently true, you have to put yourself in the position of someone who already believed in an omnipotent creator that created everything as we see it in one go; someone who did not have the benefits of Darwin's discoveries at hand. To a person with that outlook, living prior to the great period of archeological and astronomical discoveries when we discovered that the earth was a lot older than a few thousand years and was not the centre of the universe, it seemed a persuasive argument.
Given the amount of evidence that supports Darwin's theory, and that nobody has advanced a better, evidence-based theory to displace it, it would seem perverse to still believe in the 'argument by design' theory unless, however, you apply it to computer software and other human artifacts, in which case it is self-evidently true. They were obviously designed and made by someone: we know that because we have a record of it and we can mostly remember when they did not exist. No supernatural explanation is required.
The issue then becomes the quality and quantity of design. It used to be hard to convince clients that working on design was actually part of developing the software. Most clients want to see quick results, especially if you have not worked for them before and haven't built up trust. If you've already put in your first invoice but have no system to show them, they start to get nervous. These days, clients will often accept that a good design document which actually describes their needs is worth having, so as a developer you buy yourself some time before starting coding. But ten years ago (when I decided to name my future company 'Proof By Design') it was not so easy.
The optimum amount of design depends on the complexity and requirements of the application. It could be one A4 page of developer's notes for a small application or a full set of RUP documentation for a large project involving lots of developers. One thing is sure: in software development, design pays off. Un- or poorly-designed software is less likely to meet the needs of its users and more likely to contain bugs and exhibit other unwanted side-effects.
But because no designer is that intelligent or infallible, even good software that meets its users' needs will contain bugs. It's a fact of life, which is too complex to be otherwise. In fact, I would be more inclined to believe in the argument by design theory when applied to natural things, if the proponents said, 'We know this was made by an intelligent designer in our own image because it contains cock-ups'. Or as W B Yeats, put it:
But Love has pitched his mansion in
The place of excrement
Now, surely no intelligent designer would have done that, would she?