It is quite possible that the notion of emergent design is an anathema to architects. Allowing a design to emerge from good practices is a bit like building a house by dragging wood to a homesite and deciding where the first wall should go. It’s quite interesting and perhaps kind of artsy… until the first windstorm.
That said, a good many applications are built with the notion of allowing the design to emerge from frequent refactoring. A lot can be said for “big up-front design” in terms of iterating a design on paper instead of in code. On the other hand, it is easier to overdesign something if you aren’t actually writing the code, and the design doesn’t “appear” to offer a lot of value until the system is running.
Back in High School, I spent two years in drafting class. Well, the first year was drafting. The second year was labeled “architecture” but it was really a very light introduction to architecture. We learned how to do home plans.
I never forgot those lessons about careful planning and attention to detail. We used patterns, although I don’t think my teacher had any idea that they were called patterns at the time. It was just the “right way to do things.”
In a way, these designs emerged. From the point of my sharpened pencil scratching across the tip of a t-square on translucent vellum paper, I learned the value of a visual model, and how to erase a mistake without smudging everything up. I learned to try things out, and accept that some designs were interesting, but not good enough to hand in. For every design I showed my teacher, there were 15 sketches and five fully drawn main-floor plans that never made it past my drawing tube.
The designs emerged. They grew out of my fascination with the environments in which people live, the spaces in which they eat and sleep and raise their children. They grew out of standing in the central space of a busy shopping center, watching, waiting, hoping to catch a glimpse of why one shopping center had crowds, while another had communities.
I think, if I were to walk to a drawing board, tape up some vellum, and whip out a pencil after so many years, I’d make a huge mess… but I’d make a better house than I could have possibly drawn when I was sixteen. You see, I’ve never stopped noticing those spaces. I’ve never stopped looking for the quiet corner, the lovers nook, the family patio, the inviting kitchen. I’ve been cataloging those patterns all these years, in my head, waiting patiently for some time when I’d need them.
And that is where emergent design has its place. When it emerges from experience. When you don’t start from dragging wood to a homesite and start nailing, but rather whe you whip out your vellum and draw, from the top of your head and the tip of your sharpened mechanical pencil, a design that is more mature, more excellent, more fit to the job than anything you could have done when you were still learning the craft.
Designs emerge… in the mind and imagination of every dreamer who refuses to grow up.
Refactoring is important, because nothing is “right” until it is understood, and nothing complex can be understood until it is done… but on the other hand, design, up front, is an expression of elegance and beauty that should not be foregone just because it is tough to do. It is at that fine point, the point of intersection between experience and elegance, the point of a sharpened mind and a sharpened pencil, that architecture truly emerges.