Good Design is Rarely Simple and Usually Complex.

When I do something every day I don’t mind a little complexity.

When I do something rarely, I’d like that task to be a simple as possible.

I program every day. Sublime, my text editor, is pretty complex. Even something basic, like using spaces instead of tabs, is an effort for me to find. In order to figure it out, I might dig through the menus, the help and even the google. But I love Sublime anyway. Sublime’s complexity works for me because it can do all thing things I might want it to do (and much more). It does come a cost (my time to figure out out).

I’m not willing to go to something simple, like OSX Text Edit.app, because the features are simply too basic and can’t do the job for me.

On the other hand, system preferences on OSX are pretty simple (as opposed to say trying to do the same thing in the unix shell). For the most part, I can figure out how to do what I’m trying to do through dialog boxes. There is plenty I can’t do from here (configure the firewall to block specific IP addresses for example), but that’s ok, I’d rather have it simple.

In my opinion, both pieces of software, though very different, are well designed.

When designing software, we try and think about this use pattern.

We measure where our users are spending time to help figure out where out application will tolerate complexity and where it should be simple. When users are spending lots of time in an area, then maybe investing in more esoteric features is ok. Where users need to rarely visit at part of the app, we should strive to be simple and very careful with our UI.

Both simplicity and complexity have their place.

 
12
Kudos
 
12
Kudos

Now read this

Learning to Program

The Basic programming language is a really nice abstraction for a physical computer. As a language it has the notion of an instruction pointer (line numbers) and a stack pointer (using GOSUB). The entire language description fits on a... Continue →