Slashdot Log In
GUI Design Book Recommendations?
Posted by
kdawson
on Thu Jan 03, 2008 09:32 AM
from the wrapping-the-mind-around-it dept.
from the wrapping-the-mind-around-it dept.
jetpack writes "I've always hated writing user interfaces, and graphical user interfaces in particular. However, I suspect that is largely because I have no clue how to write a good one. I don't mean the technical aspects, like using the APIs and so on. I mean what are the issues in designing an interface that is clean, easy to understand, and easy to use? What are things to be considered? What are things to be avoided? What are good over-all philosophies of UI design? To this end, I'd like to pick up a book or two (or three) and get my learn on. I'd appreciate some book suggestions from the UI experts in the Slashdot crowd."
Related Stories
This discussion has been archived.
No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
Full
Abbreviated
Hidden
Loading... please wait.
User interfaces (Score:5, Informative)
The book is called "The design of everyday things" by Donald Norman.
Re:User interfaces (Score:5, Informative)
Most of the people on here will say something along the lines of one of the two variants:
1) Human-computer interaction is a discipline and you should read this HCI book or that HCI book. (Alan Cooper's About Face comes to mind).
2) Some vague advice about making look like the OS you're targetting.
It's all crap. Good interfaces are built by following a few principles:
1) KISS principle -- Keept It Simple, Stupid. You don't need to make every friggin' thing customizable and you don't want to overwhelm your users with a multitude of options.
2) Make it 'just work'. Automate as much as you can. Try to have configuration options that either will work in the vast majority of cases with the defaults, or have the application automatically try to determine the best settings for the user's environment. The best configuration dialog is one the user never has to see.
3) Softer software -- make things customizable, but in a way that they don't HAVE to be customized for a good user experience. Most users won't customize their environment very much. Always keep this in mind.
4) Present as little of the interface as necessary to accomplish the task at hand. Better to have more dialogs or dialog tabs with a few options than one big gargantuan dialog that has everything.
5) On layouts -- put the most commonly-used controls in a very prominent place and make them big and easy to click on. Things that are less likely to be used should be smaller and out of the way. Buttons are better than menus, but don't end up with so many buttons that the user gets lost -- again, fewer controls on more windows is better than more controls on fewer windows.
6) Don't use gaudy, distracting color schemes or fonts. Make it fit-in with the user's environment. If possible, on GNOME, you want to follow the GNOME HIG. Ditto for Mac. On Windows, follow the 'User Experience Guidelines.' But this shouldn't be your overriding priority. Don't scrimp on the other principles I've outlined just because you're trying to shoehorn your application into the OS vendor's model of what an application should look like.
Parent
Re:User interfaces (Score:5, Informative)
-This is related to #5 in that your audience determines what features should be prominent: the person answering the phone needs the "take message" feature to be easiest to reach....the person at the cash register needs the "ring up sale" feature to be easiest.
-This is related to #6 in that your audience determines what colors are good / bad (think "high contrast" color schemes for visually impaired, cultural implications of color, etc.)
-This is related to #3 in that if your audience is Slashdot readers, they expect skinning and an options screen with 50,000 selections.....if your audience is the owner of the basement you live it, they expect a single button that is labeled "Do What I Mean"
I'm sure that principle applies to the others in some way, too, but you get the idea.
Layne
Parent
Re:User interfaces (Score:5, Insightful)
If someone doesn't know anything about HCI and wants to make good UIs, I think it would be really helpful to do some reading. If I had to choose just one, it would definitely be Norman's Design of Everyday Things (which I saw others recommend, too).
One thing that HCI books do is not just recommend what to do, but give guidelines how to do it. For example, a good way to get early feedback on a UI is with prototypes. There are lots of different kinds of prototypes you might build, and each have pros and cons. A good book could help you decide which kind of prototype to use when.
Another example: you'd like to evaluate your UI somehow, to see what's good, what's bad, etc., right? But how? User studies are one that lots of people know about, and they have definite advantages, but they're really hard to do right, and they're really labor-entensive. The right HCI book will tell you about cheap evaluation methods, too, what the pros and cons are of the various methods, and help you decide which one(s) are right for your project.
Sounds to me a lot like your #6.Parent
HCI (Score:4, Informative)
http://en.wikipedia.org/wiki/Human-computer_interaction [wikipedia.org]
"I have no clue how to write a good one." (Score:5, Interesting)
There is one important rule in creating a GUI: follow the same design principles as the target OS and applications with similar functionality as yours.
Hall of Shame (Score:5, Interesting)
Parent
If you're developing for Windows... (Score:4, Informative)
Re:If you're developing for Windows... (Score:4, Interesting)
Study Microsoft design for good design in the same vein as going to webpagesthatsuck.com/ [webpagesthatsuck.com] for learning good design. For example, if you have the "options" uder "file" in version 1.1 of your program, don't move it to "edit" in 2.1 and "tools" in 3.1 as Microsoft is wont to do.
-mcgrew
From the linked site (and I haven't put all the checklists in, because slashdot's horrid design gives an error message about too few characters per line):
Parent
Re:If you're developing for Windows... (Score:4, Interesting)
Parent
art of interactive design (Score:5, Informative)
its great.
google books
Listen (Score:3, Insightful)
Listening to your users enough.
What are things to be avoided?
Listening to your users too much.
Really, the whole thing boils down to balancing the above and, unfortunately, it's a very subjective thing.
I would suggest... (Score:4, Informative)
1] GUI Bloopers 2.0: Common User Interface Design Dont's and Dos [Morgan Kaufmann Publishers]
2] Designing Interfaces [O'Reilly]
the first to understand what not to do and the other one to get some good ideas to start from.
I really think any book will do, except any Jacob Nielsen's books about usability... I've read them at the very beginning of my career... I think it was jus a loss of time
I'm no UI expert... (Score:3, Informative)
1. Split the elements into three categories:
a) Must set / vital parameters / things that can't have a default
b) Has a default, but users should change regularly
c) Nice to have - every other little setting
Make it very clear what the minimum effort is.
Show the second so users know they're there.
Hide the third behind an expander/button, for those that specificly look.
2. Group things logically by function
Those two things can be contradictory enough. I've met many UIs where either a) there's ten pages of configuration with one a-level option per page, or b) the advanced functions aren't logically ttached to the basic functions at all. If you can make an UI that cover those two well, I'd say you do better than 90% of the UIs out there.
Top ten list by HCI prof (Score:5, Informative)
1. Alan Dix, Janet Finlay, Gregory D. Abowd, and Russell Beale: Human-Computer Interaction
2. Ben Shneiderman and Catherine Plaisant: Designing The User Interface
3. Donald A. Norman, The Design Of Everyday Things
4. Jenny Preece, Yvonne Rogers, and Helen Sharp: Interaction Design
5. Jef Raskin, The Humane Interface
6. Terry Winograd (ed.): Bringing Design to Software
7. Brenda Laurel (ed.): The Art of Human-Computer Interaction
8. Apple Computer: The Apple Software Design Guidelines
http://media.informatik.rwth-aachen.de/HCIBooks [rwth-aachen.de]
Keep in mind that testing your UI on real users is very important. Just because you think it's a good UI doesn't make it a good UI.
The basics: (Score:5, Insightful)
2. Use it yourself, and rearrange the controls to get rid of any apparent awkwardness.
3. Give it to the actual end users, and be prepared to rearrange the controls again when you notice all the unexpected things they do to it.
4. Don't get cute. Use standard controls that people recognize.
5. Pay attention to keyboard shortcuts and tab order. Don't make the user use a pointing device.
By far the biggest thing is the willingness to refactor. You won't get it right the first time; that's almost impossible, and nothing is worse than a UI that is written to spec and then slavishly nailed to that spec even when the users complain about it. You'll probably find something that you thought would be a common operation is hardly ever done; get the annoying button out of their faces. And something else you thought would happen once a month happens every hour; bring the control out front for them.
GUI design tips (Score:5, Insightful)
Tips are all over the internet. I'd start with the Alertbox by Jakob Nielson (ex-Sun employee, now a usability consultant) and anything his group has published on user interfaces. http://www.useit.com/alertbox/ [useit.com]
My pet peeves in GUIs ... the designers ignore that people actually have to read the GUI, and treat it like it's supposed to be admired for artistic. For a GUI, bland and boring is good, functional is the goal.
Bruce Tognazzini (Score:4, Informative)
Macintosh Human Interface Guidelines (Score:5, Insightful)
Along the same lines, I would recommend the original interface guidelines manuals for many of the early graphical operating systems, especially those for early PDA's, like GO's PenPoint, Apple's Newton OS, and the manual for General Magic's Magic Cap.
All of the aforementioned books are out of print, but any serious student of interfaced design should own all of these.
Some suggestions (Score:3, Informative)
Bruce Tognazzini Tog on Interface (ISBN-13: 978-0201608427) A bit dated but the concepts and idaeas are what matters. He has a website as well as other books. http://www.asktog.com/ [asktog.com]
Finally, there are classics by Edwin Tufte you may want to checkout as well. He focuses on displaying information (mostly quantitative) in a manner to support understanding; and hates PowerPoint type presentations with a passion. Tufte has a website as well. http://www.edwardtufte.com/ [edwardtufte.com] His one day course ie excellant.
Spolsky. (Score:3, Informative)
I particularly User Interface Design for Programmers [joelonsoftware.com] by Joel Spolsky.
If you're designing web software, then read through the archives of Use It [useit.com] by Don Norman. I don't like his books - Designing Web Usability is the only paperback I've ever bought that had usability issues! But he's mostly on the ball.
Good User inteface Design Tips... (Score:4, Interesting)
From http://toastytech.com/guis/uirant.html [toastytech.com]
General application user interface guidelines:
* Always use cute icons, buttons, and graphics. Everyone loves big red hearts, pink bunnies, and yellow smiley faces.
* Don't be afraid to experiment with colors!
* Your application should play fun sounds while operating to keep the users entertained.
* Never, ever, under any circumstance use the OS-native graphical controls or widgets. Users get bored of the same old buttons, text boxes, and stuff.
* When possible, disable window management and use unusual, oddly placed graphics for the windowing functions such as the window close option.
* When writing your own controls or widgets, make absolutely sure they look and feel nothing like the OS-native widgets or anything else the user might expect. Otherwise you might accidentally make the user think that your application is actually designed for their OS.
* Use your own creative ideas on how a "save as" dialog should look and work. Built in ones are always too limiting.
* It is important that the user should never be able to tell the difference between a checked and unchecked check box or option box.
* Always use obscure or poorly drawn graphics for your tool bar buttons, and never put text on them.
* Avoid including a preferences or options dialog. Instead, let the user use the standard OS provided text editor or an editor of their choosing to edit text configuration files.
* Users need time to think about what they are doing and get coffee. Your application should always take at least 5 minutes to load even on the fastest available computer.
* Make sure an accidental double-click on a single-click item does something really nasty or unexpected.
* Tool tips are the perfect way to display critical information.
* To get the most screen space, force your application to always run maximized.
* Always make the default positions of floating properties windows cover something important.
* Use the most exotic fonts you can find.
* Your application's user interface should be flexible and customizable to the point where if the user accidentally sneezes on the mouse or keyboard they will have to spend the next half an hour setting things back.
* Let a 5-year old draw your graphics, including your corporate logo.
* File browsing dialogs are not needed, users can easily remember and type in long file paths.
* Design your application so it requires the user to set their tiny monitor to 10512*7430.
* Always crash at a critical step and then display a fake apology to the user.
* It is a mistake to make use of application hooks in the native desktop environment such as new file templates, file associations, or program menu icons.
* The exception to the above is placing icons in the system tray. Place as many icons as you can in the system tray and make sure that the user can not remove them.
* If your program implements keyboard shortcuts be original and make them completely different from any other applications.
* Rent extra UI space in your application out for advertising. Advertising benefits the users and y
Re:Depends (Score:4, Insightful)
-who is going to be using it and their relitive understanding of what is happening
-what
-what is it that i am having to show the user
-what is it that they want to do
-where (as in environment) is this going to be used? (sales register - production floor - pda on the go - person at random cube desk)
-why is this application even existing what is it's true purpose
once you answer the w's you can then figure out the
-how
so that it meets what you want in the w's
also remember to include the users in the design.. their info is invaluable - as they are the ones that will decide if the app survives.. you will hate nothing more than to write something you like and think is wonderful only to see it sit idle or have people bitch all day about it
- also note that you learn from experience.. you will not get it right the first time..
Parent
Re:Depends (Score:5, Insightful)
Wrong. "Form follows function" is one of the main tenants of good design. Make your toaster as pretty as you like, but don't forget that its function is to make toast, with the least amount of effort for the toaster user as possible.
If you make your toaster so that it looks like a pig, fine, but if you use the pig's snout as a lever to make the bread go down, you have a shitty design. It should be obvious to the user HOW to make the bread go down.
If your user needs to RTFM, you have failed in your attempt to design well.
-mcgrew
Parent
Pig Toaster - duh (Score:4, Funny)
Well duh, any good Pig toaster obviously would use the pig's tail for a lever!
Parent