Making a good interface is essential to enhancing the user experience on a website. Many of the technologies we use and choose to implement on our websites we choose because of the effectiveness of the user interface.
The design should always keep in mind the function. The function of the interface, be it a graphical representation of data or to move an input from the user to something actionable like a contact form, has to be top priority. Lately the "flat" style has been the trend.
The interface should be clear in its intent and in its function. It should inform the user as to "what does this thing do" without getting in the way of the function. So in designing graphic user interfaces (GUIs) the interface itself has to be self-evident.
Over complicating the design with guides and finely nuanced prompts gets in the way of the overall goal which is the function of the GUI. Development should be brief and great thought should be put into the most concise way of explaining things.
Remember, your users are just like you and like to explore and discover. So there has to be an element of fun and play involved. This is what some people describe as "cool" or "neat." Simplifying the experience to those two words is proof that you have a playful design. There should be motion, cause and effect, rewards for actions that are stimulating but subtle.
One of the worst things a design can incorporate is being too off the wall or revolutionary. If there is no known analog to "how it works" then the user is likely to become confused and give up interacting with the GUI. There is a reason why we use "sliders" and "buttons" and "pins" (not to mention "desktops, folders and files"): We have a real-life tactile substitute. This makes designing and developing the software for GUIs challenging to say the least. You have to walk a fine line between pushing the envelope and pulling the rest of us along with you.
If you click on something and it doesn't "just happen" then you're sunk. As a GUI designer you have to understand that the way you want things to work is the way people want things to work. In the real world, there are often nearly instantaneous interactions with the environment. Strike the knife against the stalk and it cuts, leaving you with an ear of corn. Cause and effect. Reward for stimulus has to be incorporated into the interface.
Does the interface "talk back"? When a user starts an action, there should be some response by the interface. Haptic controls give you touch, the sound effects give you sound, and of course the eyes see "what happens" when a user (you) take an action. Responsive also applies to the platform that the interface will be seen on. If you see it on a laptop, that's one thing. (See this article). If you see it on a tablet, that's another. It's not a turn of phrase, the screen size varies and the relationship of the elements of the interface have to be responsive to the platform that the information is seen on. That often times means creating different platform regimes with your style/css and hierarchy of priorities for each expected device resolution.
Clean is a cousin of Brevity, but this is a word that is often used but most of the time...misused. It doesn't mean no graphics, in fact that's the quickest way to boring. Studies have shown that people love graphics and artwork, and respond in the same ways that they respond to other media: It elicits emotional responses. Clean means an appropriate balance between visual and coded information (graphics vs. text). We're pattern seekers, and crave balance and so clean means in correct balance.
The problem with Clean is that it is subjective. Everyone's idea of what constitutes this design metric is different. The best way to proceed here is developing the aesthetic that comes from application of the other principles. If it does come together, then it becomes clean to most users.
The wow factor has to be there. Great interfaces make users happy. If the application of the previous principles are deft then the interface will be hot...
It has to at the very least live up to the current expectations for the audience/user. If the interface is going to be blah then at least it has to be modern-blah. "Modern-Blah" is when it meets expectations but doesn't give any additional stimulus or thrill of discovery. "Modern-Blah" is the status quo right before it becomes passé.
Get to the point should be the point of the interface. If it's too cute by half then it's a waste of time to design or to use. There is rarely anything more annoying than unnecessary or superfluous functions or tricks. Page turned corners, aggressive use of sound effects, and self-starting media distracts from the function. Each design should be simple and succinct.
The interface should be comforting enough so that the user doesn't feel that if they DO something that they can't UNDO it. No one wants to make a mistake or do something they didn't want to do. Giving the user the option to correct their mistakes within a certain period of time allows them to change their mind. It's forgiving. Above all, it's there to aid the user.
There are designs for interfaces all over the place. Just about anything you use as a tool, in essence, is a user interface. It's important to a designer to keep in mind that it's a tool. A tool has to be functional and work as designed. There are many tools out there, from awesome open source interfaces that are plug-n-play to custom interfaces like the ones we design for clients. We love the availability of tools that are out there, and we use a mix of our own and other's designs. A good tool is a good tool. If it follows the guide above, it will likely be "cool" enough to be used again and again.
And that's what makes a great graphic user interface design.