Monday, August 10, 2009

Everything's in context - nothing is absolute

Context is everything - the best decision in one context could very well be the worst move in another. That's why I love Domain Driven Design's Bounded Contexts and why I think the concept deserves consideration beyond the world of design and architecture. Organizational structure, for instance. Find your bounded contexts and organize around them. Groups should be dependent on other groups only via Context Maps.

Speaking of Domain Driven Design, why has something with so many good ideas in so many contexts only seemed to have really taken root in the .NET community? The contexts for its use are usually programming in the small (places where objects and components and the like naturally live) and not so much for programming in the large (distributed architectures like the web). But the resources that constitute a RESTful architecture (and I definitely have some RESTafarian blood in me) are often internally constructed of good old objects and components. It just seems like as a industry, we're slowly losing (or perhaps never really had) a culture of design in software development. I'm not talking here about Big Up-Front Design - I'm talking design as part of software development.

I'll argue that you can't really design software without implementing software ( that it's not an engineering discipline). But you can certainly implement software without having designed anything (or at least without having designed anything well).

I think Big Up-Front Design has in fact killed actual design, the resulting software rarely looking much like The Design as Written, perhaps on tablets of stone. Usually those tablets have languished on the shelf for a good while since they were originally inscribed, perhaps by the architect on the hill (speaking as I do from my perch on high). The poor soul that has been assigned to "implement it" is left to figure out if there is any value to the design or if it's simply an obstacle to the development of a useful solution that meets the needs of the customer now (assuming these needs have been articulated in the first place: but that is another topic entirely).

No comments:

Post a Comment