Thursday, July 7, 2011

Ten Principles of Good Design

A few years ago I learned about Dieter Rams ten principles of “good design” and was immediately struck by how applicable these principles are to Software Architecture. I recently watched an amazing documentary film by Gary Hustwit called “Objectified” which is about “our complex relationship with manufactured objects and, by extension, the people who design them”.

This clip from the film, in which Dieter Rams talks about his design principles, and a recent discussion I was part of concerning whether one should optimize for making a product “perfect” or for meeting committed ship dates, reminded me of how rarely products, including software, are designed using these principles. This film should be required viewing for all Software Architects.

Note: Gary Hustwit made another excellent documentary film called “Helvetica” which is a must see for anyone doing user interface design.


  1. It is almost impossible to explain what a good design is to people who don't understand it. Most explanations (like this brilliant one by Dieter Rams) rely on aesthetics or other branches of philosophy, use Occam's razor etc.

    Vanity of vanities...

  2. I disagree. Of course I disagree. I think there are universal qualities of good software design (and design in general) that do not require domain-specific knowledge to recognize and apply. Sure, some system designs are so complex (a few even necessarily so) that it is difficult to recognize the design principles used, but when you begin to dig in the principles reveal themselves. I am actually working on a follow up to this post that describes how Rams' principles can be applied to, and recognized in, software architecture. Thanks for the segue.