Wednesday, 7 March 2007

Design Culture

I've been pondering over the last few months the notion of a "Design Culture" as the underpinning to software development (and more generally, product development).

This idea embraces design in a philosophical, social, and practical sense. The process you use, the techniques you use, the team, the values, etc all feed into a "Design Culture"

This means your software, your selling, your marketing, your customer service, your environment, etc all are done within a "Design Culture".

The reason I want to try and capture this idea is so that I can explain what the motivation is to do something a particular way. For instance, refactoring. It is one of the key ideas of TDD. But often it is not done "extremely" enough. Simple duplication gets removed, but really striving to separate concepts and name concepts with good names is neglected. The motivation to make a simpler design can be missing, especially once you have code that works. But this is only one tiny tiny example of a what I would imagine one *kind* of "Design Culture" would entail.

I'm not quite sure how to define it, I think I'm trying to find something beyond "You should strive for simplicity" etc. I think I want to know what makes people happy about the things they have created. Which sounds a bit wishy washy but I think it gets at the heart of what really motivates people to create good designs.

Which if we look at the idea of simplicity and my experience of creating simple designs, I really enjoy the intellectual challenge of taking something complex and finding the simple building blocks that create that complexity.

Then applying that back into the "Design Culture" we would have some notion of intellectual challenge. Which in turn has implications about techniques and skills for comprehending problems, expressing solutions, trying ideas, etc etc.

No comments: