Thursday, March 01, 2007


On the subject of design, many people have many things to say about it. Of course, with such a highly debated topic, how can one think they are possibly smart or qualified enough to say more on this subject?

The hubris of developers pretty much demand that we should talk about crap we don't know enough about. Of course there has been much writing about how a "child like approach" can bring a fresh look and new innovative ideas. To that end, I think I have noticed some things about great design that I think is truly new (to me). I'm not sure I can condense my list in to an actual list, so you get prose instead.

Great design generally comes out of inspired creativity. You rarely can force such creativity, which is why those ad companies are paid the big bucks. You rarely get this kind of creativity out of groups, and never out of committees. If you have a small design team that operates in a high bandwidth communication situation (ie: in person) and they "think like one" you may end up with amazing things. Design to completion though is fraught with compromises. Some compromises are ok, others are critical junctures where your design just got shot to hell. I don't know how to differentiate between these two types of compromises.

Every design has essential elements - any changes that detract from these elements end up taking away from the overall picture. Since the essential elements, or first principles, can be unknown to everyone, great designers also end up being great dictators. Since you can't effectively argue about first principles you don't know or can't communicate, you are left with force of personality (see: Steve Jobs).

There are however first principles of great design. Things all great designs have. All designs come from simple ideas that can end up having complex interactions. A great example would be Hypercard. Years later people still rely on hypercard stacks for various things. The iPod is a classic design study, so all I'll say about that is the central idea is "I should be able to hold all my music in one hand". The simple idea must not be a mission statement, it must reflect a functional piece of the design. A counter example would be "the user should be able to manipulate all manners of information" - this is more of a use case or end goal, rather than a design principle.

Since design principles reflect the working or physical aesthetic of the product (see: chair design), they should ideally reflect a subtle or even sublime balance between functionality and simplicity. Simple first principles that allow rich functionality is hard to achieve however. However, simplicity sometimes just ends up in overly simple system, where the basic rules fail to interact in interesting or meaningful ways. One possible test is the orthogonal test - each first principle should be completely free from the others. By combining multiple simple rules you end up with a rich multidimensional space in which aspects can be combined.

The basic bench-test for designs is often the gut or intuition test. This may return conflicting or shallow results depending on the strength of the intuition involved however. This article has suggestively been about general design, but my overall concern is primarily with software design. The goodness of a software design seems to be escaping many people, unlike, say, Architectural design. There is an increasing focus on this subject over the last 10 years, with many new players such as 43 folders. However, this is leading edge stuff, not being taught in school or being spread widely enough in the engineering space.

Perhaps one of the biggest obstacles is the intuitive portion of design. Although intuition is just short for combining many disrelated factors in a semi-unconscious manner, the left-brained focus of many software engineers can leaves them opposed to this approach. Perhaps some software engineers can benefit from right-brained activities? Drawing, musical instruments and other artistic endeavors can trigger right brained thinking. I am blessed (cursed) with an extremely right brained thinking style, which oddly enough gives me good grades in math, but bad grades in organization (you should see my apartment!).

No comments: