November 17, 2006
The Myth Of 'No Design'Yesterday somebody bemoaned the fact that their developers "don't do any design". I begged to differ.
* A bunch of lego bricks scattered randomly across the floor
* A bunch of lego bricks grouped loosely into one area on the floor
* A Star Ship Enterprise made out of lego
And ask yourself which is the most designed?
Instinctively, most people will point to the lego Enterprise. Obviously. But why? I would suggest it's my old friend probability at work again.
Take a bunch of lego bricks and throw them in the air. Now let's take bets. How much would you be willing to bet that the lego bricks will scatter themselves randomly across the floor? And how much would you bet that the bricks will all land roughly in the same small area of the floor? And what odds would you give me for the bricks landing in such a way as to make a convincing likeness of the Star Ship Enterprise?
The fact is that if developers really did no design then their code would be nothing more than a random series of characters, like lego bricks scattered randomly on the floor. Since we know that even very, very badly designed programs do, at the very least, compile, then we have to conclude that something bucked the astronomical odds against that happening.
Somebody somewhere made some design decisions... (Let's leave evolutionar design aside for the moment.)
What they mean, of course, is that the developers don't do designs that are good enough (or that, regardless of how good the designs are, they don't document them - which, to many people means that they didn't do any design. If a tree falls in the wood, and there's no Word document that describes it, did it actually fall at all?)
In both cases, though, the problem can't be solved any other way than addressing the design skills of the developers. Documenting designs won't make them better.
Good designs are the product of good designers (okay, or an effective process of evolution - which is another story).
Posted 14 years, 8 months ago on November 17, 2006