Sean's Dev Journal
Stumbling through the bits

An Evolving Architecture

April 7, 2008 20:04 by Sean

The web application at my day job is in the midst of an overhaul. It's architecture has been evolving since the [relatively] early days of web apps, and had become a Big Ball of Mud.

We're trying to synchronize the overhaul of the underlying architecture with the redesign of the UI, because it feels like the best chance we'll have to do it (once the redesign is complete, how much buy-in can we get as there's no direct benefit to the user?).  

I got to thinking about the "evolved" architecture we're starting with, and the thoughtfully designed architecture we're trying to develop; Does an evolved architecture get a unfair wrap? I'm certainly not going to argue that no forethought should be put into the architecture -- That'd be ridiculous. Rather, I'm starting to believe that an "intelligently designed" architecture might be overly naive...Bear with me...

The result of any evolutionary process is dictated by the definition of "success". In biology, an organism is successful if it passes on it's genes. In our original application, a feature was deemed successful solely if it worked. A low bar to be sure, but it kept the company going.

Rather than believing we can design a better architecture than evolution could (which is naive) couldn't we rather aim at tweaking the definition of "success", and letting evolution takes it's course?

Designing an architecture is expensive: Meetings, heated debates about slight variations in theory, and the inevitable introduction of new bugs as we move working code into the new scheme. Also, the architecture we design will be forced to evolve anyway, as we'll no doubt make some mistakes and have to rework things (which may be more expensive in an environment that believes itself "designed" rather than "evolved"). 

One option might be to agree on some "good practices", and use group code reviews to discuss various approaches that developers are taking. This would allow the best practices to find their way into the system organically.

I don't want to push this thought too far, as I absolutely still believe it's valuable to hammer out an architecture at the onset of a project. My mind is wandering, though, as to how concrete and complete the architecture should be.


Tags:
Categories: Architecture
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed