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 | TrackBackThis 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.
If you want to hire my company to help you with the Internet of Things then get in touch. If you want to learn more about the Internet of Things, then buy my book Designing the Internet of Things (amazon.co.uk amazon.com).