Tuesday, May 4, 2010

Simplicity vs Capability

Generally speaking, the greater the capability to be built into a hardware object, the more complex the interface will need to be. Yet simplicity-of-use is a very desirable feature. Capability and simplicity are two forces that need to be balanced in design. Complexity is related to quantity. Fewer items = simpler.

To squeeze the greatest amount of capability out of the fewest items, choose items that matrix. Consider cars, for example. We could have 6 models and 6 colours. If each model is available in each colour, we have 36 different things (6 models x 6 colours) which can be known by knowing only 12 things (6 colours + 6 models). If we also offer a manual or automatic transmission for each model, we have 72 variants (6x6x2), defined by 14 items (6+6+2). And so it goes. As long as the items matrix, we get more possibilities for fewer items.

The items in the example are properties of the object Car: .model, .colour, and .transmission. These are independent variables. The simplest, most powerful object interface will result from a collection of properties that are independent variables.

This idea works as long as there are no exceptions. If one particular model is not available in one colour, the simplicity is lost. As a rule, exceptions are bad news.



No comments:

Post a Comment