I hadn't had a bon mot for it until yesterday, but I've been thinking about the concept of recombinant growth for awhile now and how it intersects with the LazyWeb / blogosphere.

In particular, I've been thinking about design. I'm of two minds. As a perfectionist, I want sparkling gorgeous gems of elegance. It feels so good to be playing with something polished that so obviously has been imbued with immense thought. But, as a realist and a guy trying to make a living, I also appreciate adhoc rusty tools that still turn a screw. The thing might fall down in some cases, but otherwise it's a pretty steady companion.

Looking at it another way, though, many of those otherwise sparkling gems won't let me use them as a hammer the same way I misuse the screwdriver on occasion. And oftimes, they don't have any control panels to open so I can reroute EPS conduits and exploit leaky abstractions. And then, there's the problem domain: on what classes of nails is this hammer indented for use? In one case, a particular hammer shines, in another, it leaves thumbs throbbing.

I see infernos of flamewars start over principle, predictions of falling skies and doom doom doom. (It's not maintainable! It won't scale! It'll be the end of the web!) And then I see mischievous wizards and cantankerous veterans pull out a much-abused old standby and knock it out of the park. (Only the feeble-minded need strong types! Goto considered harmful - to you, maybe!) And then, sometimes, when you're in the realm of recombinant growth and the lazyweb, what initially looks like a jumble of wrinkled paper takes one more origami fold and turns into a perfectly formed swan. It gets confusing sometimes.

So anyway, this all leads up to my questions as a naive, wannabe computer scientist: By what processes of design do we best facilitate recombinant growth? How deeply and to what level of detail? How dirty should it be, how unspecified or left with holes or shrugs? (Plants need dirt to grow.) How meticulously clean should it be? (We don't want to attract any bugs.) How much should be chalked up to bootstrapping, and how much should be wrangled and hogtied into perfect working order?

I doubt that it there's a single fully valid answer to all this. But, I'm always interested in any of the answers I find anyway.