October 14, 2003

Emergent Design Considered Harmful

At lunch today I used the term "just-in-time design", but I meant the same as Emergent Design. The ensuing discussion quickly highlighted that, despite my initial assertion, I don't actually favour just-in-time design. My preferred solution is a mixture - up-front design for the overall framework for the system, and just-in-time design for the internals of the components defined in the framework. I think defining the API to a module is a good first task for the implementation; it makes you think through how the module will work, sort out the error handling... all useful things to have considered before you start spewing out code.

The Folly of Emergent Design puts forward some good arguments for what's wrong with the agile, lightweight, emergent design methodology. The redundant code argument is less of an issue in the embedded/mobile world, because when you have to worry about downloading your software over a GPRS network, onto a "disk" that's only a couple of megabytes, there is value in refactoring just to save space. Then again, performance and size are more critical, and it's better to consider that in an up-front design...

(Via Archipelago).

Posted by Adrian at October 14, 2003 08:31 PM | TrackBack

This blog post is on the personal blog of Adrian McEwen. If you want to explore the site a bit further, it might be worth having a look at the most recent entries or look through the archives or categories over on the left.

You can receive updates whenever a new post is written by subscribing to the recent posts RSS feed or

Post a comment

Remember personal info?

Note: I'm running the MT-Keystrokes plugin to filter out spam comments, which unfortunately means you have to have Javascript turned on to be able to comment.