Learning to create beautiful /next-generation GUI


I really want to create a stunning-looking GUI desktop application that looks like, for example:

  • Mac OS X interface
  • Picasa desktop client on windows
  • IPhone apps
  • Office 2007

I've mostly been programming GUI using Qt/Swing/WinForm

and I'm tired of creating so plain looking GUI, lol.

So I was thinking about diving into stuff like:

  • jQuery
  • WPF/C#
  • iPhone SDK
  • Silverlight
  • Adobe Air/Flex

Just to get some ideas on how to create really cool looking UI.

Does that sound like a good list? Any developers here that could share what platform they use to create very cool looking desktop app?

On a sidenote, I really wonder what developers at Apple / Microsoft use to develop their own cool-looking software.

A lot of responses talk about the importance of usability over "cool-looking"..

I totally agree that usability and simplicity are the most important aspects of user interface design. I've been doing GUI development for a while now (> 3 years), so that I understand.

But using cool-looking UI also improves user experience + it could make big difference on whether or not your software sells.

I mean, otherwise why would Microsoft/Apple try to make their OS UI look "cooler" everytime there's a new version? Why would websites like pragprog.com, or versionsapp.com. make their websites look like that? Basically you kill 2 birds with one stone: stunnning-looking UI + super usability (because it looks simple and intuitive).

That is what I'm striving for. And as far as I know, I cannot achieve that using Qt/Winform. Most of the books I have read just show you how to make average-looking (read: 1990's) UI. I want to learn how to create cool-looking UI. And the only place I see cool-looking UIs these days are the technology I list above. I'm not enamored with any technology; but I just want to know how things are done in other technology to see if I could apply them to the technology I'm using, or see if I could use those technology in my line of work.

An example: if I were to pick between this UI and this UI, I probably would pick the latter, if just based on looks alone.

Functionally, they are just the same UI; they both allow you to keep track of your time. They both contain buttons and textboxes, etc. But the fact that they look different, also differentiate them in terms of attractiveness.

So in all, I think the "ice on the cake" is very important. I would say it's the thing you strive for after you are certain you have a totally intuitive, usable UI.

Best Solution

I think that the major reason many people suck at designing interfaces is that they consider them to be graphic design. It is not. The core of creating a good user interface is a bit like creating a good API – the interface has to be conceptually consistent, hard to misuse, easy for common tasks.

Wanting to design something cool because you are “tired of plain GUI” is a perfect recipe for disaster. If for nothing else then because consistency is a crucial part of a good UI. If each application wanted to stay out of the crowd, the whole thing would be an unusable mess.

It is almost unfortunate that Mac OS X looks that good, because then people start to think you can create a good interface by animating it or sprinkling some graphics on the top of it. The graphical part, the “cool” of the design is just the icing on the cake. If you really want to design good interfaces, stay true to the environment, respect local human interface guidelines. And maybe read Apple’s Human Interface Guidelines to get a feeling where the problems are and what can be done to solve them.

I know this sounds much more boring than filling gradients in Photoshop, but it’s the only right approach to take if you really want to create a top-notch interface.