A recent Java Posse podcast discussed UI design and mentioned that some places like Apple take design very seriously, actually starting the development process by deciding what the finished product will visually look like. This has worked very well for Apple (I love my Apple stuff) and is probably a good way to go if your product’s end users may not be technically oriented. Unfortunately I have no design skills (it is beginning to show in my project) and a key part of what I’m trying to develop is that is easy to use, mainly because it is not targeted at technical people.
I like to think of designs as a state-space (this itself is probably a bad start!). Imagine a mountain range, the higher the peak the better the design, so you want to stand at the highest point you can. Starting at any random place in the range, you can either climb the mountain you are on to the top or go down to climb a different taller mountain. It all depends on whether you can see a taller mountain nearby. For the purposes of this metaphor, I am nearly blind. Unless very lucky I will not end up very high. Much like most of the other software engineers I know!
Knowing these shortcomings, instead of a normal design process, I follow the “Break & Enter” school of design. That is I find something simple I like and largely copy it. That’s fine for corporate websites or GUIs, but I’m not sure how well it will work with the general public. This is something I need to think about (comments welcome). At least it’s a common problem. In the Java Posse podcast there were repeated questions around how to instil a design culture or hire for design skills - I don’t remember there being a good answer.