GUI Design Book Recommendations?
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."
Just copy whatever apple do. Save the trees, man!
You thought my name meant what? How very dare you!
While not specifically relating to user interfaces of computer software, there is an excellent book relating to making things in general easy to use, and most of the ideas translate well to GUIs.
The book is called "The design of everyday things" by Donald Norman.
-- MartinG To mail me: echo kewyjlcxyzvjfxbqwh | tr bcefhjklqvwxyz
get this one
calling all destroyers
I am a big fan of Constantine and Lockwood's "Software For Use". Usage-centered design seems more practical and pertinent than user-centered design. There are some interesting articles and resources at their website, foruse.com.
A lot of factors can determine how the GUI should be created... Whether it is for an individual program, or for an entire operating system is a factor. It should combine form and functionality. Two ends of the spectrum is Plan 9 from Bell Labs's Rio GUI which if highly functional, but is lacking in form or styling, and Windows Vista's Aero, which although it does look nice, is pretty much useless...
Alan Cooper's About Face is a good place to start. I read Version 1.0 back in the day, and am reading the 3rd Edition now. Alas, he's gotten a bit more tedious in the interval, but is still smart, funny, and committed to better GUIs.
Wake up to find out that you are the eyes of the world...
Regarding the topic, there is an area of study in Computer Science called HCI (Human Computer Interaction). Take a look at this article for a starting point on that issue.
http://en.wikipedia.org/wiki/Human-computer_interaction
I just bought this:
Sharp, Rogers, Preece. Interaction Design: Beyond Human-Computer Interaction, 2nd edition
Doesn't matter, neither does anyone else.
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.
I don't have any book recommendations, but if you're developing for Windows, be sure to read the Windows Vista User Experience Guidelines. Even if you're not on Windows it has some design advice applicable anywhere.
by chris crawford..
its great.
google books
It's not aimed at GUI design in particular, but I'd strongly recommend "The Design of Everyday Things" by Donald Norman.
Also, "The Inmates are Running the Asylum (why high tech products drive us crazy)" by Alan Cooper is quite good (although about a third of the book is just a pitch for the author's consultancy).
Be prepared to use at least two design styles. There's the Mac way (and you'll find a lot of good guidelines in their Human Interface Guidelines for that), but, follow those on Windows and X11 and your applications will look rather strange and not at all platform native; even when using native UI controls.
I don't have any suggestions for books on good design, but, here's a classic site which covers some bad design mistakes: The User Interface Hall of Shame. The examples are fairly dated now, but, the principles remain true.
What are the issues in designing an interface that is clean, easy to understand, and easy to use?
/Appropriately, my captcha was "miseries."
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 you two books:
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
Even if you don't develop for Mac, GNOME or KDE, these documents have a fairly good set of guidelines, some of them are specific to the uniformity of the "experience" however. I would imagine Microsoft having atleast some type of guidelines for interface design in MSDN.
http://library.gnome.org/devel/hig-book/stable/
http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGIntro/chapter_1_section_1.html
http://usability.kde.org/hig/current/
I have the Non-Designer's Web Book that she wrote and it is awesome. She's written a lot of books that are UI related so you should be able to find something suitable.
Tidwell: Designing Interfaces
Fleur de Sel
...but I'd say most designs fail at one of these two things:
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.
Live today, because you never know what tomorrow brings
Here's a list my former professor compiled:
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
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.
http://jimjansen.tripod.com/academic/pubs/chi.html
It has references to paper works if you must kill trees to learn
-- Programming with boost is like building a house with lego. It's a cool but I wouldn't want to live in it
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.
Brackets contain world's first nanosig, highly magnified:[.]
I've heard (and from my experiences I think is true) that people who are good at development are not necessarily the best for design, and vice versus. There's always exceptions, and I'm sure some on this site will say that they can do both well. If I was independently writing a software (for the general population) I'd want someone to do the UI, because my mind doesn't work that way.
Besides making UIs that look 'pretty' these are ideas that I've been pointed to in classes here and here. They are useful for both developers and designers of GUIs.
Lack of planning on your part does not constitute an emergency on mine.
http://www.amazon.com/Programming-as-if-People-Mattered/dp/0691037639
Careful not to go down the road of the artsy fartsy web UI designers, as a lot of the other suggestions are.
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/
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.
I worked as a busboy my freshman year of college (`84). I was mopping vomit out of the bathroom. The Assistang Manager came in to have a leak. He said "I don't know anything about a roast beef sandwich, but I do know that if I ever made one, I'd slice it thin" (pause for dramatic eye contact) "and pile it high." He zipped, tucked his tie back between the third and fourth buttons on his shirt and left.
Thus I was enlightened.
Oh, and Jef Raskin's "Humane Interface" is still pretty good reading.
You have to look at and understand your audience intimately. Demographics matter, too. What works for 20-somethings might totally confuse 50-somethings.
And today, good GUI design is even made trickier by the expectations users have from using the best applications and web sites. If your application is very "MySpace"-like and is intended for that same audience, you'd better make sure it's a good match.
Also, gone are the days you can expect your audience to RTFM to use your application. It must be obvious from the first click of the button.
But to our credit as GUI designers, today's audience is much more sophisticated than those pre-Web. So, if you stick to certain measures, it's actually easier than it was before. And there are many tools to help you, too.
Ruby Neural Evolution of Augmenting Topologies
My favorite expert on UI is Bruce Tognazzini. His site at http://www.asktog.com/ has been quite useful to me. I don't agree with everything he says, but it's always gets me thinking, always challenging me to approach development from a human perspective.
User Interface Design for Programmers by Joel Spolsky.
i've had a basic course on UI design, and one of the basic points was to test it with users, look at the results, and correct things you saw went wrong, and start over again...
basically you just make a mockup (or in the beginning even a simple paper prototype) and ask the test subjects to do certain things, and make use of think aloud (aks them to as much as possible say what they're thinking, doing, and thinking they're doing. a random/weird action may suddenly become clear when you realise your users are understanding certain things completely differently than you).
and besides that, look at other interfaces for similar purposes, it's useless to try and reinvent the wheel (depending on the application, ofcourse make sure you don't run into legal trouble for exactly copying something existing).
Joel Spolsky has written an online book called User Interface Design for Programmers that I find pretty good http://www.joelonsoftware.com/uibook/chapters/fog0000000057.html/. There is also a longer print version that has more content, but I haven't had the chance to read it yet.
Mick
I hereby tag this "article" with ROFLDOYOUHAVENODISTANCETOANYTHING? and now I filling this post out with pointless lower-case blabber just to circumvent the lameness that is the "lameness filter" of Slashdot's not entirely brilliant comment interface. I have had no cups of coffee today, but two glasses of orange juice. One two. 2.
It doesn't really cover web stuff if that's what you're after, but the most of the principles are largely the same. Having said that, I still refer back to this book from time-to-time even though I've worked exclusively with Web applications for the last three years.
Start with the original Macintosh Human Interface Guidelines. Apple Computer put forth an extremely strong effort in researching basic human interaction with graphical user interfaces during the development of their products in the 1980's, and this book is still the gold standard, even if Apple themselves disregard much of its advice nowadays (mainly because Apple was taken over by the team from NeXT). Remember that when Apple was developing the Lisa and Macintosh interfaces, the general populace had never yet been exposed to this type of interaction with technology, and quite a lot of emphasis was placed on making available powerful features to expert users that were easily accessible, yet unobtrusive to novices.
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.
Donald Norman Design of Everyday Things (ISBN-13: 978-0385267748) He will get you thinking about the implications of your interface design; this classic may be hard to find but he has other books out as well. While his examples focus on mechanical objects the thought process and criticisms provide insights into how to think about the end user in your design and avoid become someone "Who won an award" for their design. Once you read teh book you'll get what I mean. http://www.jnd.org/
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/
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/ His one day course ie excellant.
I'm a consultant - I convert gibberish into cash-flow.
While I like Linux and can use a command line fine, I don't really see how the graphical control panel is a negative point in Windows (or Mac OS for that matter, which also has a good command line, being based on BSD and all..). A lot of the configuration options in Windows are hidden away in the registry rather than in plain text files. Yes, I prefer having easily accessible configuration files, but the fact is that Windows was designed to be used mainly through a graphical environment, while Linux is more flexible and is designed to be usable even without X server.
which is totally what she said
A lot of people have different views on a UI. Some people think the Apple style is the end-all/be-all, and some don't. Some go for the style of Windows, some go to a completely different direction.
Look at a few apps with good UIs, write jot down what elements you like about them. See if you can find elements you don't and jot those down.
Next, go to some similar apps with bad UIs, write down what they did wrong and what they are missing, in your oppinion.
You should actually get a fairly good idea of how to make a decent UI from this. Now, take some of your UIs, really look at them, pretend they were written by someone else if you have to, and figure out "What is it missing, why don't I like it?"
Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
I particularly User Interface Design for Programmers by Joel Spolsky.
If you're designing web software, then read through the archives of Use It 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.
--- These are not words: wierd, genious, rediculous
User Interface Design and Evaluation by Stone, Jarrett, Woodroffe and Minocha. It's the book my university uses for its course titled Interface and Interaction Design. I like it, but then again, I haven't actually seen any of the other books.
About Face 2.0 - Essentials of Interaction Design is one of the best books I've read on user behaviour and expectations, and how that is applied to GUIs. In terms of how test and design GUIs, paper prototyping is a great way to get your test users to interact with a design without having to code it first. If you're looking for a book to read on it, check out this one.
"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."
How well does all that apply to Game UI's?
Steve Krug's "Don't Make Me Think" is an excellent book for web usability. Many of the principles in the book apply to good app design as well.
http://www.amazon.com/Dont-Make-Me-Think-Usability/dp/0321344758/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1199369216&sr=8-1
Read Interaction Design. Learn. Prosper.
This one helped me a lot: "The Windows Interface Guidelines for Software Design" by Microsoft Press. (ISBN 1-55615-679-0)
I'm sure it's out of date now (it targets Win95 & NT), but I got it so I could help test some Windows applications back in the day. It was a great help in learning how to lay things out on the screen, in dialog boxes, menus, etc. Even more importantly, I learned the rules for keyboard navigation -- it's amazing how much can be done without having to take hands off the keyboard. Things are quicker, too, because I can key my way through drop-down menus without having to wait for each one to paint before I could click on the next selection I wanted.
I'm interested in what its follow-ons are and what people's experience have been with it.
Reading this old classic article, I always loved this one (and agreed so much)
http://homepage.mac.com/bradster/iarchitect/qtime.htm
While you're at it, Vista's explorer - yeah, don't copy anything from that either.
See more info here from me.
http://it.slashdot.org/comments.pl?sid=364823&cid=21406737
Specifically take note of what I whine about in the JPG's - it's that kind of shit which kills users.
"Programming As If People Mattered" Nathaniel S. Borenstein -Princeton University Press 1991 - ISBN: 0-691-03763-9
Dated, but simple and very much applicable today. Humorous segways and examples abound.
Lodragan Draoidh
The more you explain it, the more I don't understand it. - Mark Twain
The top book in this area are generally considered to be..
About Face by Alan Cooper. Version 3 is out
Don't make me think by Steve Kung. This is for web.
Anything by Jakob Neilsen. Now mainly focuses on web but he is the main UI person around. Has a web site http://www.useit.com/
GUI Bloopers by Jeff Johnson a little dated but far too much informaion about every aspect of the user interface.
Then you have the books for the language or framework you are working on. Java, Apple and Microsoft all have books on how the user interface should work for thier environment and language. Most of theses can be freely downloaded or read online.
Then for a higher level look along with other information _Code Complete 2_.
If you can make it through all of thoses you will be one of the top UI people around.
Focuses on what people have done wrong with examples and explanations. Written by Jeff Johnson.
Joel Spolsky wrote "User Interface Design for Programmers" which discusses exactly what you are asking. Not the technical aspects of the API, but the Human Interface aspects that make an interface easy-to-use, intuitive, and useful.
Here is the Amazon link
He was also nice enough to put the book online for free: http://www.joelonsoftware.com/uibook/chapters/fog0000000057.html
"You cannot find out which view is the right one by science in the ordinary sense." - C.S. Lewis on Intelligent Design
http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGIntro/chapter_1_section_1.html ...
Gnomes HIG is decent too. Dunno about the current state of the Microsoft HIGs
The old adage called the "KISS" principle applies: Keep It Simple, Stupid. This has fallen out of favor with the younger generation. Today's apps are busy; too busy. Everyone and their dog wants to be Bill Gates so they copy Microsoft.
However, at the opposite end of the spectrum isn't Apple, but Google. Google does it right. Simple, clean, light, fast. There is little to no trouble finding any of the myriad things Google has to offer these days, yet the interface still isn't cluttered.
IMO if your interface would fit a Microsoft product, it sucks. Microsoft writes the WORST interfaces. Big, heavy, bloated interfaces (and code to match) that give the impression of having more than it actually does, and offering more than you need.
Now, I'm a bit biased from my college training, as I was a fine arts major, and the instructors were mostly minimalists. One of my better instructors, when faced with a busy piece, would often say "there's less here than meets the eye". That's Microsoft.
Is there a patent on the circular menu or something? I have yet to see one an any commercial or OSS application.
If I weren't so damned lazy (and wasting all my time at slashdot) I'd use the KDE codebase to write a GUI that instead of having the windows-like taskbar at the bottom, would have a command line. You would still have icons, wallpaper, etc, but instead of a "start" button like Windows or KDE you would click on any empty part of the screen to pull up a circular menu. If you just started typing (without clicking anywhere first), what you typed would show up on the command line at the bottom of the screen. I still find it a hell of a lot easier to type "dir" or "ls" than to right-click "start", find "Home" or "Explore" in an old fashioned, should be obsolete straight menu, then click and click and click to get to where you were when you pulled it up. I find it easier to type "del ??task.bat" than to use Windows Explorer, drill to where the files are, hold down "alt" and choose the files I want to delete, then... well, GUI is great but command line interfaces have their strengths, too.
But to reiterate, what's worse than Microsoft? Any newspaper's web site.
-mcgrew
PS- don't go to my site looking for good design, it's cobbled together without much effort or thought. It loads fast though.
mcgrew's razor: Never attribute to stupidity that which can be explained by greedy self-interest
For a lot of good discussion on things that people have done just plain wrong:
Google "gui hall of shame"
Stupid sexy Flanders.
I can't possibly see any reason why having more options is a benifit
To me, that's what Linux is about, having options.
That being said, the new windows shell sounds interesting useful, if a little late to the party.
"Hate is baggage. Life's too short to be pissed off all the time." Danny Vinyard -American History X
This one might not have all the rules you might want, and some of his concepts are debatable, but it goes into the nitty gritty details other books don't.
...would be Steve Krug's Don't Make Me Think. While specifically focused on web design, the book introduces some helpful concepts that are fairly universal for UI design. I also second (or third or fourth by now) anything by Tufte - genius stuff (and he'll be the first to tell you that), and very thought-provoking.
- Jack
GUI interfaces are easier for input (no switches to remember, easy to navigate, etc.)
Command lines are easier to schedule and include in custom batch scripts
Command lines allow input prior to the program loading
Both have their place.
The big problem I have is that most administrators* that rely on the command line (in particular DBA's using SQL*Plus) don't help themselves out and manually enter that string of commands instead of batching them up or writing a GUI to simplify their normal tasks. (* administrators that I have personally encountered, your experience my be different).
Layne
According to slashdot the user already is stupid. How can the UI designer make it worse?
About Face 1,2, and 3, by Alan Cooper, are the best interface design books I have ever read. I have recommended them to many people and have never had any complaints, only thanks.
Apple wrote what I understand to be the defacto standard on User Interface Design (I have a copy in storage) - it was written in the 1980's but apparently is still very applicable.
Keep in mind that touch typists HATE to have to use the mouse. Be sure to design so that enter pages can be navigated logically using the keyboard. By logically, think left->right, top->bottom (at least for the North American English speaking audience, I can't speak for other cultures).
Also, make the system intelligent. If a lot of the data entry is repetitive, build in some typeahead and use intelligence (e.g. a bill-to address usually IS the same as the ship-to address so provide for that). Get yourself a zip-code lookup. There is nothing more annoying than having to enter the same data repeatedly.
Use the system yourself for a while. Really. Not for 2 or 3 record entries, use it for 100 or so REAL entries to find trouble spots you imagined and requirements that were never raised (Some surnames ARE longer than 15 characters, some names have accented characters, some people DO put capitalization in the middle of their names, Oops, what do we do with this order from Toronto? It seems to have a weird zip code that our numerical filter cannot handle...). And of course, find out what annoys you when you use it and FIX IT.
Good luck!
"The Visual Display of Quantitative Information", by Edward Tufte.
Absolutely recommend Tufte's work, and for a much broader audience than those implementing GUIs. (Really everyone from weathermen to magicians). Enjoyable reading to boot!
"There's no bullet list like Stalin's bullet list!"
This is surprisingly simple. Ignore all the artsy fuckers that thing GUI design is an art. It isn't. It's a surprisingly hard science.
Good GUIs minimize the amount of physical user interactions required by the user to perform any action. Mouse down is an action, mouse up is an action moving the mouse 5mm is an action. You get the idea. You need to be aware of EVERY tiny action and try to eliminate as many as possible. If you must use a right click menu with 2-3 menus deep, provide a hotkey for the same action.
Good GUIs absolutely, positively, never throw a modal dialog with only a single button. And avoid one with two or three buttons if possible.
Provide a hotkey for everything.
Use one thread for the GUI, one thread for the behind the scenes work.
Make sure your cancel buttons actually work to halt long resource intensive processes.
Don't use hover menus. Ever. Seriously, never. The mouse is a feedback only device until a button is clicked. Tooltips are OK as long as the vanish the instant the mouse moves off of the (small) trigger area, blocking what a user is trying to see is obnoxious.
Above all, don't annoy your users. Your GUI is a means to use your software, that is all.
Much can be learned here for free. Interface hall of shame on the left bottom. It's what NOT to do.
Question everything
..will clarify why most interfaces suck, and what you can do to avoid sucking also.
--Gene
Mission: To provide products that consume time and energy as entertainingly as permitted by the laws of thermodynamics.
I read this book years ago. It makes you think about features people come to expect in programs. The author is about "putting in ALL on the programmer". What I mean is, many of his ideas are great, but are very hard to implement.
Some example pointers: "Infinite undos - keep track of EVERYTHING done in the program, and let the go backward and forward through the changes", another: "Silently fail - when a user clicks on the wrong thing, DO NOT make a pop-up that says - 'You did something bad', just do nothing, the user doesn't need to be told he is stupid".
Actually the book is extremely short on actual implementation, but that part is up to you.
- I live the greatest adventure anyone could possibly desire. - Tosk the Hunted
I recommend the book Technical Communication by Mike Markel (http://www.amazon.com/Technical-Communication-Mike-Markel/dp/0312441975/ref=pd_bbs_2?ie=UTF8&s=books&qid=1199371904&sr=8-2)
It goes into a lot of the basic theory behind good communication in general, which is really all an interface is (communication between the user and the computer). It does not have a chapter on interfaces specifically, but it talks in depth on good electronic interfaces like online documents and webpages.
$> man woman $> Segmentation fault. (Core dumped)
Back when I was in High School I got the starter set to learning Visual Basic 5 that Microsoft Press put out. It came with two books, one was more thorough on Visual Basic, but the other (the title of which escapes me at the moment) went into all the controls and GUI elements, etc. And (while most here would not like this) I would use Visual Basic as a tool to teach GUI design and focus on content like that book had - which, btw, went into accelerator keys, how controls relate, and more. (I'd use VB only because you can ignore most of the rest of the program and focus on GUIs alone; I'd use and recommend other languages for all other aspects of programming.)
Truth is like the sun. You can shut it out for a time, but it ain't goin' away. - Elvis Presley (source: imdb.com)
Apple has the best user interfaces ever.
Why?
The OS is not a program to talk to the machine or to manage resources, it represents the interaction with the user. Use a Mac for 20 seconds and then go back to use a Windows machine. The Windows machine sucks.
Why?
Because the Apple OS is made in such a way that everything you see on the screen is manipulable, it is direct manipulation into action, or how we called it 15 years ago: WYSIWYG (What You See Is What You Get). Direct manipulation is the key, that is why they came up with the desktop (the recycle bin, folders, etc.). It could have been drawers instead of folders, but anyway...
Since most of the development nowdays is web development:
1. Everything that shows on the screen must be modifyable (opened, moved, changed, deleted).
2. You can browse the objects through the user interface (see Naked Objects).
3. Ajax look and feel (no reload of the page).
4. No scroll (or minimize scrolling). Everything must be visible at all times.
5. Unclutter the UI by using icons or drop down menus.
6. Use meaningful colors to mean different states of objects.
7. Use consistent names, colors and shapes.
8. Allow sorting in searchs.
9. Allow storing past search criterias.
10. Unlimited undo.
Not a book, but a comic. I'm not sure how much it will actually help but it's humorous and gives us non-GUI programmers an insight on their world.
OK-Cancel
Reviewing just the first hour of video games.
I highly recommend http://designinginterfaces.com/.
Taken purely from usability perspective, aims perfectly at developers.
It introduces a set of patterns (similar to to the famous coding patters by Boch et al. - should be known to any OO developer).
The patterns are easy to navigate and easy to apply - you don't have to be working 100% of your time on usability issues to be able to apply these recipies.
One minor downside, I think there is not enough focus on web side side of things in that book - the capabilities of browsers have grown recently, thus allowing much greater capabilities there. In such case I'd still recommend the book as as a start and scavenge the web for the rest.
Furthermore there are tons of resources and communities devoted to GUI design and usability issues, you may wish to start here http://www.stcsig.org/usability/ for instance.
I am a user interface design 'expert', and I can tell you the best solution is to hire an expert, if that's possible. This is a whole field of study- I studied it for 2 years, got my MS, hit the real world and then REALLY started to learn about it. I did include some titles below, but getting good at this requires a totally different kind of thinking than writing good code (which was my old job). That doesn't mean you aren't going to be able to do it, but it does mean that it's going to require you to think about things from a totally different point of view. Imagine an art major trying to write good, well-modularized code.
I have read a number of answers above- some are good, many have nuggets of truth or basic guidelines, some are downright awful, but the one truth is this- you are not your user. What is good or easy for you is not necessarily good or easy for your users. Ultimately, you will need to watch them use the interface to make it truly good. This doesn't require eyetracking equipment, video cameras, etc. Just ask them to use it and sit there and watch, silently. It will be the best thing you can do to learn about how your users use the app.
Here are the titles I promised:
Don't Make Me Think: A Common Sense Approach to Web Usability by Steve Krug
Designing Interfaces: Patterns for Effective Interaction Design by Jenifer Tidwell
Designing Web Usability by Jakob Nielsen
Usability for the Web: Designing Web Sites that Work by Tom Brinck, Darren Gergle, Scott D. Wood
Contextual Design : A Customer-Centered Approach to Systems Designs by Hugh Beyer and Karen Holtzblatt
-Sandbenders
Eagles may fly, but weasels don't get sucked into jet engines.
You mean that they consistently change where things are for no good reason, between versions of Windows? Because I have to say, that's my favorite feature when Windows-users look to me for support and I don't have a VMware image in front of me. It'd be one thing if I had to support it full-time, but even though I've used every version of Windows since 3.11, it's no longer my primary operating system, and hasn't been for years. (In fact, I seldom use it outside of VMware). Trust me, it's a pain remembering that feature x is located one place, in Windows 2000 Professional, and usually one or two menus deeper with XP. Ranting about Vista, on the other hand, would take forever.
And GUI consistency? Please. Have you tried running Microsoft Money on Windows 2000? How about Windows Media Player on any version of Windows? Microsoft is great at making applications that look nothing like the GUI when it suits them to do so. Perhaps they've made some improvements, here and there, but they still has a lot to learn when it comes to GUI consistency.
Look at this before you try to tell us of how "consistent" the Windows GUI is:
http://www.joelonsoftware.com/items/2006/11/21.html
As well, have a look at: van Merriënboer, J. J. G., & Sweller, J. (2005). Cognitive Load Theory and Complex Learning: Recent Developments and Future Developments. Educational Psychology Review, 17(2), 147-177.
In particular, pay attention to Sweller's 'split attention' effect, in which the cognitive load is increased if the user has his/her attention divided among related interface elements that are separated on the display.
I've been tasked with coming up with a GUI that involves data visualisation and report presentation, where before I've mostly done very discrete back-end or embedded systems stuff.
Because there's real-time data visualisation (as well as historic stuff), I've heard about the Tufte books before and so bought all four available at bookware.com.au - Beautiful Evidence, Visual Display of Quantitative Information, Envisioning Information, and Visual Explanations.
Still waiting on them, probably won't be able to appreciate them all in time, but hopefully I can make my app suck less than the existing solutions I'm tasked to replace.
My application is loosely what might be traditionally known as SCADA... but for various reasons we're not using traditional SCADA packages. We're presenting industrial process data, traditionally there are real-time figures and "dials"/bar graph gauge type indicators, along with graph plots that resemble the paper and pen chart recorders this software replaced many years ago.
Any particular one of the four books that people might know to be most useful for me, or a suggested reading order anyone might have?
User Interfaces: Past, Present, and Future; Good, Bad, and Ugly is from last year's JavaOne, but isn't really Java specific. The slides are available to everyone, but I highly recommend you sign up for a free Sun Developer Network account if you don't have one and watch the multimedia version. Also, the whole Desktop development category may be of interest.
I have heard this a lot from my Business Analyst colleagues - they can gather the bejeezus out of requirements, but translating them into GUI is tougher. I usually recommend Jakob Nielsen's Web Usability book (even though it's old, the basics never change), and Universal Principles of Design by Lidwell, Holden, and Butler as starting points. If you prefer a cookbook-type approach, you can explore Jennifer Tidwell's work on design patterns, which provides you with some basic ideas for the most commonly used GUI widgets. I caution you to also consider the information design/information architecture. You can learn more about the basics of these topics by taking a look at Jesse James Garrett's Elements of User Experience. Ultimately, though, this is something that most people cannot get straight off just by reading books. It takes practice and review cycles to truly craft your skills. You'll get better as you iterate through. Good luck!
The Design of Everyday Things, Donald A. Norman
About Face 2.0: The Essentials of Interaction Design, Alan Cooper and Robert Reimann
Designing Interfaces, Jenifer Tidwell
I'm probably setting myself up for a some abuse here, but has anyone other than myself tried out Office 2007 (which is available at my workplace)? I'm curious what the general consensus was - or even some personal anecdotes... Personally, after getting over a bit of a learning curve, I've actually found the whole context-sensitive ribbon system to be pretty innovative, and I actually prefer it now to older versions. I recall a similar concept used in CorelDraw, where specific toolbars would change based on which particular drawing tool was currently in use, and what type of objects in the drawing were selected.
http://blogs.msdn.com/jensenh/archive/2006/08/22/711808.aspx
I've read some documentation (some interesting videos too, but I can't seem to find them) on the justification for the shift in thinking - about how, for example, the explosion in the sheer volume of functionality makes packing every single function into a static menu structure somewhat impractical. To be honest, when I look at some other modern applications with their enormous menu systems, I'd actually have to agree.
While one may or may not argue the benefits / drawbacks of a specific implementation such as Office 2007, I think an interesting point of discussion is the growth of dynamic interfaces in general - that is, interfaces that adapt to the context of the current work that is being done, to display the functionality most important to a user based on that specific context. Adaptability may even be appropriate, as a computer learns what tasks a user attempts in specific circumstances, and then adjusts itself to try to make accomplishing those tasks easier in fewer steps.
Computers are becoming more and more powerful, and it should be an interesting challenge to try to package all this functionality in a way that doesn't overwhelm users with more and more complex interfaces.
Irony: Agile development has too much intertia to be abandoned now.
The best book I've encountered on UI design is an ancient tome entitled "Principles and Guidelines in Software User Interface Design" by Deborah J. Mayhew. Search for it on Amazon; looks like there are 30 used copies.
This was used as the text for my GUI design class in college. Very enlightening, even though I HATE writing GUIs.
Free as in speech, free as in beer, or free as in lunch?
Tog's great.
Apple's HI Guidelines are really the distillation of [practical, achievable] best practices, as laid down by all the HCI greats that have ever worked there:
http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGHIDesign/chapter_5_section_2.html#//apple_ref/doc/uid/TP30000353-TPXREF130
There's plenty of theory and pontification, but this is backed up by API's. If only Apple would consistently follow their own dog pee.
You can get command line style inputs in GUIs just by going to the properties for a program, or a shortcut, and there is a scheduler in Windows (haven't tried scheduling tasks in Linux, apart from on startup, where I just added the task to one of the many many startup scripts, one of the rclocal ones or whatever they're called)
which is totally what she said
I want a good user interface, so I am going to ask a crowd of people who have tolerated a crappy user interface for years. Brilliant!
http://www.ableton.com/
I was really impress by its UI.
It's a benefit when you want your OS to be flexible. For example as plenty of people point out, you can run Linux on anything from a washing machine to a supercomputer without too much messing about, because of its modular nature and the amount of people out there that do work to improve or customise it, often just for fun.. a world without choice quickly goes stale.. look at what was happening with IE until Firefox got big, and what was happening with Intel until AMD got their Athlons out the door :)
which is totally what she said
Don't forget to have a good look at the Interface Hall of Shame for examples of what not to do.
-- Ed Avis ed@membled.com
Designing from Both Sides of the Screen: How Designers and Engineers Can Collaborate to Build Cooperative Technology, by Ellen Isaacs and Alan Walendowski. It is an easy read with examples as the authors design an application. It goes over the basic design rules, getting feedback, a little of the software engineering process, understanding the user, doing usability tests and usage studies.
if you use the pig's snout as a lever to make the bread go down, you have a shitty design.
Well duh, any good Pig toaster obviously would use the pig's tail for a lever!
I only look human.
My mother is a halfling and my dad is an ogre, so that makes me an Ogreling
I think that three things determine what guidelines you should be looking at-
Platform - Obviously different OSes call for different designs, but even a web application has different rules than a web page. (One is generally for performing a task while the other is about gather information or reading content)
Target Audience - #1 rule is always that your customer doesn't know your audience - and neither do you. You have to do usability tests. It's the only way to know if what you're doing is "right".
Purpose of the software - This will determine what you optimize your application for. Speed, ease of use, appearance, etc. Although not necessarily mutually exclusive you usually have to make some sacrifices in order to achieve your primary objective. Ex - An internal data entry application will probably be optimized for speed first and ease of use second.
Good luck! Personally, I think UI design is a blast.
You are using English. Please learn the difference between loose and lose; they're, there, and their; your and you're.
Designing the Obvious is a fairly good book about UI design. I highly recommend it. Here's a link.
The problem of GUI design is most people come to it with little or no understanding of what underpins it. Basically we a talking about communicating with humans and therefore we need to understand the human psychology. Therefore I would start with books that explain how people visualize objects or how they approach problem solving. While studying other designs have merit, often the mistake is to repeat a design in another situation where it is less appropriate. Also the process of convention is also important. Windows is so ubiquitous that it is difficult to move away from its principles, but that doesn't mean that it is a good GUI by any stretch of the imagination and until you can understand why there is little chance of you writing a good one of your own.
Another important area is how the GUI is designed and tested. The process is very different to software since it requires fine grain of iteration and extensive interaction and analysis of test users.
One suggested book is Human-Computer Interaction by Jenny Preece(and others)http://www.amazon.com/Human-Computer-Interaction-Jenny-Preece/dp/0201627698/ref=sr_11_1?ie=UTF8&qid=1199374522&sr=11-1/
Choose your allies carefully, it is highly unlikely you will be held accountable for the actions of your enemies
The at command (Windows built in scheduler) will run a GUI based app, but since the GUI *assumes* graphical input, if there is a problem, it will usually try to display it on the screen....which is running under another process, so you won't always see it. I'm not saying it isn't possible, just that command line tasks work much better under a sceduler (just redirect the output to wherever you want). And while some GUI programs will accept command line input, they have to specifically be coded that way, otherwise, they aren't of much use in a batch mode.
Layne
it was/is an apple design guide for the mac os interface. addison wesley was the publisher when it first came out.
IMHO the mac gui through it's various permutations (mac os 9/next/os x) is still one of the best gui's out there. sure there are other gui's that have a lot of bells and whistles that the mac os is missing(3d desktop and jello effects of beryl/compiz,desktop gadgets of vista, better multi-button integration) but as far as consistency, user feedback, and ease of use, the mac gui still wins hands down.
three can keep a secret, if two are dead - benjamin franklin
Here are a couple that I just bought and like a lot:
Designing Interfaces: Patterns for Effective Interaction Design [ILLUSTRATED] (Paperback) by Jenifer Tidwell (Author)
http://www.amazon.com/gp/product/0596008031
User Interface Design for Programmers (Paperback) by Joel Spolsky (Author)
http://www.amazon.com/gp/product/1893115941
http://www.craphound.com/est/
Protagonist is a User Interface / Experience consultant. Good story and good (albiet, non technical) commentary on interface design.
I personally found "User Interface Design for Programmers" by Joel Spolsky to be an excellent resource. A fellow developer suggested it to me after experience some of my option-laden interfaces, and it actually did change my ideas of how a UI should be designed so that others can actually use it. It's all about concepts; it has no code and is not specific to a particular OS or UI toolkit. Some of the examples don't even have to do with computers.
If you want to check it out, the author has the http://www.joelonsoftware.com/uibook/chapters/fog0000000057.htmlfirst chapter on his web site.
-- Joe
See: http://www.amazon.com/review/product/0201577577/ref=dp_db_cm_cr_acr_txt/104-4713685-0897556?_encoding=UTF8&showViewpoints=1 for a review. BTW, that's Amiga User Interface Style Guide, but the principles aren't OS specific. Emphasis on general interface principles.
Heisenberg may have been here.
I know this sounds strange, but I've been working as an app developer for *very* untechnical people for quite a while...in all modesty, I'd have to say that I am better at interface design than any programmer I've ever worked with by leaps and bounds...probably because learning CS was *really* tough for me, but I forced myself to do it anyway, so I can relate a little bit better to the average user when they're looking at the front end of a complex system. My secret when I need inspiration for some good UI design? Toys. The Fisher Price "playstation"-type ones are the best..
You're probably like "What??"...But think about it for a sec...most of the time when you're designing an interface, what is your goal? To make something that is 1) intuitive and 2) something that the user can hammer at repeatedly without getting annoyed/bored/cranky. Who does that better than Fisher-Price? Toddlers, for the purpose of UI design, are just like your users...they're not "dumb", they just don't start out with the same level of knowledge about the system that you're developing i.e., they need to use their intuition to learn about it. So take your cues from a toy company that's been around since you were a baby and make your UI just like their toys; Unbreakable. Colorful, big buttons that draw the user's attention...If you give them a square hole, give them a square peg to put in it (and make sure it's designed properly so they don't choke on it).
Honestly, UI design has always been the most natural thing to me...I tried to read a few books on it, but found that they typically bloviated on strange tangents, buzzwords, and irrelevant minutiae. So here's my advice in a nutshell: skip the books, go play with some toys.
One thing that most programmer's don't know, but they seem to teach every Lib arts student: The 'Z'. When people read or look at something, they tend to do it in a 'Z' pattern starting at the top left of the page and going to the bottom right.
And if anyone tries to tell you the mantra "If you make it easy enough for any idiot to use, only idiots will use it", ask them if they've seen www.google.com; There's always a "sweetspot" in UI design. If most of your users are only going to be using 1% of your interface (in google's case, the search box), don't clutter their view up with the 99% percent that they don't need (the advcanced search features).
Interface is criminally overlooked in software design; power to you for taking the time and effort to do it right. The key point to remember: The user shouldn't have to learn anything. The interface should make it obvious how to do what needs to be done.
"Of course life is bizarre. The more bizarre it gets, the more interesting it is. The only way to approach it is to make
Sure, it may not mesh well with the current "throw your shit anywhere" philosophy of interface design, but I guarantee you any interface you design from using the original human interface guidelines will be easily navigated and highly usable.
8==8 Bones 8==8
Want to learn about GUI design--then study GUI's, and how user interact with them. Because you are aware of GUI's you will notice what you like and don't like. In the end I don't think there is much to be learned about interaction--from a media that does not allow it. [There are also lot of Graphic layout magazines, and websites that probably represent the worst in graphic layout.] There are a lot of good and bad user interface designs. A good place to look for bad GUI design are 3D design programs and development tools meant to be used by a company internally. Almost all Flash-powered GUI's on websites are artful, strange, and awful. What's good in GUIs is harder to come up with, because the best GUIs go unnoticed. Ask yourself, what program do I use every day, and have not cursed at it? Because the answers to that question are few, I would be wary of any preexisting GUI knowledge.
https://www.youtube.com/c/BrendaEM
Best Book I ever read on Design is by far Jakob Nielsen's Designing Web Usability http://www.chapters.indigo.ca/books/Designing-Web-Usability-Practice-Simplicity-Jakob-Nielsen/9781562058104-item.html?ref=Search+Books%3A+'Jakob+Nielsen' It provides factual, mesurable data for it's conclusions.
Eduard Tufte has some interesting and quite beautiful books on design and the presentation of data. While all of them are not specifically about the GUI of computer applications I think he provides some very compelling ideas about how the information of our programs gets presented graphically and contextually. His are great books and I recommend them for a fresh view of how our work can look.
IMHO, if you have time it's valuable to take a few graphic and or product design classes. You'll learn things about visual communication and the design process that are often ignored in HCI books / curriculum.
As for recommended reading, you might want to check out:
The Art Of Interaction Design by Chris Crawford
Designing Interactions by Bill Moggridge
The Humane Interface by Jef Raskin
You might also consider subscribing to a design publication like Communication Arts.
"Things are more moderner than before- bigger, and yet smaller- it's computers-- San Dimas High School football RULES!"
I'm a Programmer. That's one level above Software Engineer and one level below Engineer.
I'm sure this will get buried (especially since I'm doing this as anonymous), but maybe you'll read it anyway.
My advice to someone in your position (no HCI background, just a coder that wants to make an interface usable) is this:
1. Design the interface on paper (or with a quick software prototyping tool if you've got one you're good with). This should take you less than one day. Perhaps less than one hour.
2. Get people (real users if possible, other people not working on your project, or team members as a last resort) to "interact" with your prototype. Give them some scenario to work through and have them tell you what interface elements they'll use and how (don't explain it to them in advance). If significant changes would happen on the "screen", reflect that so they're not using their imaginations more than they have to. You'll find out that nobody has a friggin' clue what they're supposed to do with your interface. Ask them what they thought they should do and what they wanted to do. The key is to figure out how they were interpreting the interface and what they were expecting with regard to the scenario you gave them.
3. Redesign the interface based on what you learned worked, didn't work, and was expected in their minds.
4. Iterate until you feel confident. THEN code it up.
The hard part is that no set of rules can really tell you what will work in a particular situation. Until you can understand how someone is going to be thinking when they use your interface, you won't be able to put yourself in their shoes to design it well.
Some guidelines I wrote (for an assignment for an HCI course I just took) for color selection are:
Some resources to look into from my bibliography:
"Luminance Contrast Color Guidelines." Arend, L. Logan, A. Havin, G. Color Usage Research Lab. Nasa Ames Research Centre. 7 Oct 2007 http://colorusage.arc.nasa.gov/guidelines_lum_cont.php
"Color & Contrast: Web Checkpoint 12" IBM Human Ability and Accessibility Centre. 1 Jun 2007. IBM. 7 Oct 2007. http://www-03.ibm.com/able/guidelines/web/webcolor.html
"Effective Color Contrast" Dr. Artidi, A. Lighthouse International. 2007. Lighthouse International. 7 Oct 2007. http://www.lighthouse.org/accessibility/effective-color-contrast/
"Web Content Accessibility Guidelines 1.0." World Wide Web Consortium. 5 May 1999. W3C. 7 Oct 2007 http://www.w3.org/TR/WAI-WEBCONTENT
UTF-8: There and Back Again
Colors and contrasts, etc... can't recommend a book offhand, but try to use colors that can still be discerned as contrasting by people with common color-blindness combinations. There's been a lot of research, some of it from predictable places (IBM, etc.)
To be a good user interface designer you need to be well readin a number of fields.
Some of the more important books that are not explicitly about UI design are:
- Anything by Edward Tufte
- Ware, Information Visualization
If you want a quick overview, that even your manager (might) understand, see Don't Make Me Think by Steve Krug
It doesn't go too in-depth on stuff, but it'll give you general concepts to consider, and is a generally fun read. It's the first book I typically give to folks new to UI design.
Build it, and they will come^Hplain.
Despite what others might say, he is a charlatan in the truest definition of the word.
Most of his advice is utter bunk, and his though process is entirely disconnected from logic and reality. I'll give him credit though for building a reputation around himself the way large consulting firms like Accenture have managed to do --a lot of huff and puff, and very little quality output.
I feel this is important to say, because many people are familiar with his name and when they hear someone ask about "GUI" or "usability" their first instinct is to shout JAKOB NIELSEN!
So...whatever you go looking for, don't waste your time on him.
(note: I spent over ten years of my twenty-five year programming career as a gui programmer/usability expert on both retail and commercial software products for some very well-known companies)
Nothing is inexplicable; only unexplained -Tom Baker, Doctor Who
In my HCI class, we used Robert Bailey's Human Performance Engineering as well as a book on paper prototyping that is linked to in the also bought section on the HPE book's amazon page.
The HPE book was amazing. The previous revision was from the early 90's and was still totally relevant because he author doesn't really go into which controls should be used where. It's more about how humans process information and what developers can do to exploit those tendencies to improve usability.
The paper prototyping book was interesting too. It's a neat and cheap way to prototype things. You just draw each function on an index card, then go through and flip the cards while a user "clicks" on buttons and things.
If bad puns were like deli meat, this would be the wurst
Good book for web based design & simple testing. Don't make me think A Common Sense Approach to Web Usability, 2nd Edition http://www.amazon.com/exec/obidos/ASIN/0321344758/ref=nosim/arm06-20 The ideas in it translate to non web as well - and the price is right.
Get your tagline off my lawn.
Downgrade to XP :)
I found this book a while ago and really like the principles and ideas. People expect certain things about a web site -- if there is blue underlined text people expect it to be a link. If there is something to be clicked it should look like a button. Very easy read but good ideas.
I think that book on design might help with more specific recommendations. For example, #1 and #2 are about making things simple, but you don't talk about how. #4 touches on it, but you don't have numbers.
One of the things I've heard is that we can keep track of seven things at once -- so try to keep seven items or less that the user has to keep track of, and add depth if you need to. (If you have 20 or 30 config options, split them into categories.)
The other thing I would suggest is to constantly check out other programs, and notice the things that they do well. This is especially good if you have direct competitors, but also look at completely unrelated programs. You don't want to be constrained by someone else's design, but at the same time, it's nice if things are predictable.
And what someone else said: Know your audience. If you're writing a Linux program at all, pick a GUI library and stick to it, and provide a rich commandline interface. If at all possible, let your users run the program entirely from the commandline, with no X at all, but even if you need X, give us a commandline and a GUI.
Don't thank God, thank a doctor!
User interface design is quite easy, actually. No need to read books. Here is a short guide.
Use command line interfaces. Users like the command line because it's the most powerful interaction method and users want to be in control.
Using short command names is user friendly, because then users don't have to type so much. For instance, instead of the horribly long name "list" use "ls". However, if you need to choose a name longer than 5 characters (because, for instance, all shorter names are already taken), consider putting one vowel into the name to make it easier to pronounce.
Use lots of command line options: the more the better. Remember, users love to be in control, and what more control would they need than the ability to tell the computer that you want to sort files according to the MD5 sum of the last modification date in UTC+9 timezone?
Documentation is important so that users can learn how to use your programs: thus, make sure you put comments in your C source.
When installing programs, users want an optimized version for their architecture so you only need to provide a source package and let users compile it themselves. You can include a makefile if you want, but do consider leaving it out because compiling the program by hand is an excellent way for users to get familiar with your program and its source code.
Norman's book is great, but it's NOT a GUI design book. It's a theory book, albeit a very understandable and accessible one. I would recommend it as a general background for understanding human limitations so you can consider those in your GUI design, but I think the OP is looking for something more immediately applicable.
The best general-purpose design book I've ever read, by far, is Robin Williams' Non-Designer's Design Book (Second Edition out now; Third Edition due next month). It doesn't deal specifically with GUIs either, but it IS immediately applicable to all sorts of design, GUI and non-GUI. As the former head of the usability group at a large hardware and software firm, I've used principles from this book as the foundation of a one-hour training course I delivered to over 60 developers at a former employer.
At the end of 40-45 minutes of instruction, all developers I've taught are able to apply the principles from NDDB to redesign a particularly hideous sample UI from the old IBM Aptiva PCs. At the start of the hour, none of them can usually explain what's wrong with the existing UI, though all agree it's hideous. By the end of the hour, everyone can ID what was wrong, and come up with various ways to fix it.
The book is short, cheap, and brilliant. It's the best starting point I could suggest; I've never found a better one.
If you want to whiz off your users...
.
From http://toastytech.com/guis/uirant.html
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
Back in the day, I read this. It was a very good GUI design book.
Amazon says 159 pages and the cover is different - my old copy is 144 pages, but 144 Very Good Pages - High Priority Advice, much of it simply not to be found in my other thicker books.
yeah media player is fugly
I have discovered a truly remarkable sig which this post is too small to contain.
Where ever possible, use verbs in the imperative form (Print, Save, Preview, Submit) on buttons and in menus, not just OK, Yes or No. This is a common error i GUI design. Keep all tests short, simple and to the point. Avoid jokes (the joke may be funny the first time you see it, but after that...). Look at how other people design their software, and steal ideas. Focus on primary functions, not features. For positive and non-destructive actions, the buttons should be highlighted so you can just press Enter to activate them. Cancel always stops the proposed action. On a Mac system, the positive action (Save, Shut down, Print) is nearly always to the left on the screen, but under windows in the center or to the left... Under Linux it seems to vary a great deal. Use simple and logical keyboard shortcuts that preferably consists of two, not three, keys. This makes routine actions simple for experienced users. Good luck!
Beauty is in the beholder of the eye.
There exists no book that will teach you good user interface design. Buying a book about "user interface design" is like buying a book on "Learn Visual Basic in 24 hours"--too sepecific. You want the usability version of "code complete" instead--one that is all about theory and "why".
The most incredible and exciting thing about good design is it involves lots of *watching* and *listening* to the people who will use your software. There are no rules of interface design besides "dont violate the costraints of your medium (i.e. dont roll your own widget set"). Like "the rule of thirds" in art, those too are only soft rules and can be broken if you know what you are doing.
Good usability comes from good requirements gathering. You have to get out of your office and *listen* and *watch* the people who will use your work.
The book should spend very, very, very little time on heuristics and "rules of good interface design" because quite frankly, there are very few rules. The best book will probably not have screen shots of stupid error messages; it should be mostly wireframes and paper prototypes. The best book will only have about 1 sentence about fitts law. "Rules" are obvious; users are not.
You want a book that covers how to interview. The book should cover how to write a good persona. The book should talk about how to *correctly* screen for participants (like why you always ask the risky questions like somebodies income last and why you bracket it). The book should talk about how to *correct* do a usability test so you get valid results (for example, never try to correct "mistakes" or help them if they get lost... instead always ask what they expected to find and than shut up and watch). The book should dedicate an entire chapter to cardsorting and why it is so damn useful. The book should dedicate at least half a chapter to paper prototypes.
You do not want a book on "how to write a good interface". You need theory and practice. Usability is the most fun thing you can do in computing. *Nothing* is more exciting than spending two hours watching how somebody works and thinking of about a billion ways you can improve their experience in a way they would appreciate.
I've found it very helpful in understanding key issues, and pointing out the common mistakes.
The problem with quotes on the internet, is that nobody bothers to check their veracity. -- Abraham Lincoln
Learning about web design is a decent idea because many of the ideas of good website design can also be applied to any applications.
Specifically look up things on web usability and web accessibility, you'll be amazed at how much of it is relevant to non-web applications. In terms of accessibility the web content accessibility guidelines (WCAG) are a good started.
Of course, HTML and CSS is a fairly straightforward playground to practice layout and design also, especially as pretty much every OS has a web browser and text editor to hand to try things out with!
some people love it, some people hate it, but Qt is good for the novice UI coder with some development experience. Trolltech puts out a book on Qt 4 that is very good. As far as style, DO YOUR USE CASES. Understanding your users' needs is more important than including every last option. Oh, and a good looking UI will not win you fans as quickly as a well behaving UI- but it helps.
Edward Tufte is mostly known as a data-heavy charts & graphs guy, but his ideas are about explaining complicated things visually, which is all a GUI does. His books are amazingly well done, I recommend the whole set. "Beautiful Evidence" is the latest.
Joel Spolsky's User Interface Design for Programmers points out numerous user interface design issues that are non-obvious to programmers. I highly recommend it.
I agree w/ everything you have said, and would like to add CONVENTIONS.
I did a lot of interface work in Comm. College. I get miffed when I see that Ctrl-C copies, but Ctrl-V doesn't paste! Stick to the things that are common. Back? Undo? Step back? USE THE Z KEY!
Mostly though, the KISS rule is akin to godliness. Let them customize in a customization screen, though the app should work FLAWLESSLY w/o ANY customizations. Categorize the Customize screen as much as you can so people can logically drill down to what they need.
Also, look at scoping the changes. If it is a larger system, w/ multiple users, this may be a necessity.
A good rule for a complicated system is to use Profiles and Roles. Where a Profile can be user changeable customizations
Roles are Admin Changeable customizations. This is so the admin sets how "simple" their specific users need to be.
That's usually far more complicated than needed though, but if you get to that case, please for the love of your favorite deity, make it export/importable so that upgrades, etc. don't wipe profile work. I have seen this system work good, and bad. One particular application I work with had profiles so convoluted, and time consuming to set up, and a version change tossed it all!
Grammar Nazis be warned. I went two publick skewl, and passed all mi class's
One of the things I've heard is that we can keep track of seven things at once -- so try to keep seven items or less that the user has to keep track of, and add depth if you need to. (If you have 20 or 30 config options, split them into categories.)
As a point of interest, that's mostly an urban legend in this context. See the magical number 7±2.
That's not to say that keeping your options organised into reasonably sized, coherent groups is a bad thing, of course. It's just that the number seven isn't quite as special in this context as a lot of developers seem to believe.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
In English, we generally unconsciously associate "holding-back" with the left-side of the page
& "going/doing-it" with the right-side of the page
( check the graphology stuff, used in criminal-cases btw )
If I could have one single wish answered in Linux/KDE it'd be this:
MAKE THE HOLD-BACK OPTION ALWAYS BE ON THE LEFT FOR ENGLISHERS ( & similar L-to-R languages )
and the corollory
MAKE THE "COMMIT/DO-IT" OPTION ALWAYS BE ON THE RIGHT
if that one single thing were implemented, /dev/random for it?
it'd mean I could react to a decision-box window by instinct,
rather-than being stopped every time to
discover what the hell goddamn variant of "flow" this particular window implements.
( do they use
how many millions of us are sabotaged by it every hour? )
The best book to get for UI design? 2, actually:
Don't Make Me Think ( made for web-meisters, but it's still UI stuff ) by Krug
( Advance Book Exchange ( second-hand books search ) http://www.abebooks.com/servlet/SearchResults?sts=t&tn=don't+make+me+think&x=0&y=0
& The Design of Everyday Things
Try also my gallery: http://photo.net/photos/AntrygRevo
meh... My classes on windows server we are expected to use the command line, they show us how to do it the gui way and the command line way.
hello
I'm going to suggest a book not about computers or software at all, but about visual communication: Understanding Comics. Jakob Nielsen endorses it (that might not be a positive recommendation for some of you..).
The problem is that what users want and what they need may be two very different things. To give a simple example, a lot of users still think they work faster with the keyboard than the mouse in a typical office application like a word processor or spreadsheet, despite the fact that most of them are measurably wrong when observed objectively.
As a sales pitch, giving users what they want (i.e., what they think they need) may be smarter than giving them what you know from evidence that they actually need. Then again, sometimes that's just a short-term illusion. If you want to make working software and get long term satisfaction from your users, you might be better to rely on the research. After all, "everyone knew" that the Office 2007 interface was going to suck because it was so different and they'd have to relearn everything... until they tried it.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
May I ask what you have against Nielsen? Aside from his rampant self-promotion in recent years, which ironically has reduced the value of his own web site according to his own principles, much of his real content has always struck me as quite useful and based on objective evidence.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
"Don't Make Me Think" is an absolutely fantastic book which covers the basics of good design in a clear voice. It contains images as samples and outlines why they are good. For someone who is old at the tech side and new to the design side, this book is a must-have.
Those who have telepathy have no need to RTFA.
Consider:
Don't Make Me Think: A Common Sense Approach to Web Usability (2nd Edition) by Steve Krug
A plane ride book but worth the price.
Designing the Obvious: A Common Sense Approach to Web Application Design by Robert Hoekman Jr.
A lot less detailed thank About Face 3 by Alan Cooper (which is also a good book).
Bill Buxton's "Sketching User Experiances" is well worth a read if you are trying to do UI design. You might also want to have a look a employing a User Experiance/Design specialist.. they are worth every penny.
Designing the User Interface (Amazon link) is praised by many, but hated by equally many.
Personally, I made it a point to burn it (literally), but if you can look beyond the silly metaphors (or, as I'm told, get the 3rd edition), you might get some insights. On a personal note, though, I would recommend that you look at it at your local library before purchase...
Best regards,
F
"The number you have dialed is imaginary. Please rotate your phone 90 degrees and try again."
The one element of UI design that must be respected above all else is user expectation. A great UI is one that always gives the results that the user expected. If the user clicks a button they expect to perforum action A, and it performs action B, that frustrates the user. That's what makes people say "this is a bad UI."
What all that hinges on is knowing your target customers. If your customers are professionals who make a living using this software, your primary goal is creating a smooth flowing powerful UI that lets the user work quickly and efficiently. In that case, you can probably get away with a little clutter and lots of advanced features right out front. If your customer is the average PC user, you need a simple UI that is as clearly labeled as possible, very responsive, and shows only what is required to make your app perform its primary expected function. Google's website is a great example of how to do that. It's a search engine, and its primary elements are unmistakably the text entry box, and the search buttons. Everything else is much less prominent on the page, and your average user loves this because they don't care about all the advanced powerful features of google's search engine. They expect the page to search for the text they enter, and it does that with just a couple clicks.
If you have trouble making a good UI that suits a novice user because you yourself are an advanced user, consider getting a less technically minded friend to help you with the design. Somebody who isn't as familiar with computer software will likely give you plenty of UI design ideas that you might not have thought of otherwise.
Oink! a pig toaster would feature a big lid on top.
There are just 3 simple rules to Programming and UI design:
>Consistency
>Consistency
and
>Consistency.
If it's a program and you didn't KISS, if its consistent then it's easy to fix.
If your UI shortcuts, menu layout, menu options, window placement and mouse behavior are the same as the other applications the users are familiar with, learning your app won't be a problem.
Consistency is very difficult in programming. What happens is that you learn as you program, then should go back and update the old to match the new, better way of doing it.
They ARE out to get you simply because They are in it for themselves and they don't care about you.
Speaking as a total ignoramus on UI design, I would also suggest reading everything and anything by Edward Tufte (the Visual Display of Quantitative Information might be a good start). It won't give you any special insights into UI, but it should help to reinforce the point that making a good UI isn't about dumbing things down (a common geek misconception), but having a very strong sense of respect for the user. Good luck! (And the Norman book that everyone recommends is also a great read)
Mega dittos!
I've always believed that if your granny doesn't understand it...no one will.
i) Keep it uncluttered
ii) Keep Advanced options tucked away, particularly those ones that aren't generally going to be used by the average/novice user
iii) KISS (Keep It Simple Stupid)
2.1)In order to 'just work' the UI must function exactly as expected. Expected by who? NOT by you, the coder, but by the user. Which user? The least experienced user you can find. Their expectations will be pure, unfiltered, unbiased, uninformed, and will lay every flaw in your UI design bare. Want to know how the UI menus should work on your cell phone? Give it to grandpa and ask him. Why? Because he won't put up with clicking 18 buttons through a menu tree to get to the second most commonly used feature of the device.
Ah, but why bother to test if you have good design principles like those in your list - KISS, form-follows-funtion, eliminate as many steps/clicks/motions/decisions as possible in any function or process, etc? Because sometimes it just isn't possible to KISS it or make it 'just work'.
90% of your UI will be made of up things you can apply good design principles to. That 90% will utilize 1% of the user's time and effort and cause 0.01% of their frustrations with the device. The 10% of the UI you can't apply your principles to will consume ALL the rest of the user's time and effort and be the source of ALL of their frustrations. THIS is what you need testing for: as long as something works perfectly intuitively - or exactly how you would expect it to work - then it will seem effortless and cause zero frustration, even if it isn't simple or doesn't just work automatically.
A-Bomb
For values of "everything" that don't include "iTunes". Just don't copy that PoS.
(Is iTunes as bad on Macs as it is on Windows? And is iTunes a representative piece of software by Apple?)
"Only the small secrets need to be protected. The big ones are kept secret by public incredulity." - Marshall McLuhan
In the AV world we use this...
http://www.infocomm.org/cps/rde/xchg/infocomm/hs.xsl/avindustry_1157.htm
Ask yourself: is the GUI adding anything over a text editor? In other words, never "literally translate" a file to a GUI. If your file is a bunch of name-value pairs, your "GUI" shouldn't just be a list box that lets the user edit strings.
Some good starts (far from complete):
1. Filter information; hide advanced material by default, and maybe force the really advanced stuff to require a separate text editor. Use progressive disclosure, so that only a subset is ever visible.
2. Present information, don't just map it to the file. For example, maybe you physically store a color as "r: 0.6, g: 1.0, b: 0.75", but you wouldn't give the user an R field, G field and B field: you'd show the actual color, and allow editing in any way supported by the system (e.g. on a Mac you can enter CMYK, or even pick crayons!).
3. De-jargon your terminology. For example, if your file says "alpha: 0.7", your GUI should say "transparency" or "opacity" and use a slider with a live graphical sample or other more intuitive method to set the fraction.
4. Avoid editing strings most of the time. Even if a setting "can" have any value, it is often useful to give the user a menu of common values with an option to add anything else they want. For example, why not keep track of recent values a person has been using?
5. Don't force users to use your crappy text editor for really complex stuff. Usually, if your file format is at least plain text, this is avoidable. But if you store some huge paragraph of text in a database I can't see, and your GUI gives me the crappiest editor imaginable as the only way to change it, then your GUI is causing more problems than it solves (and the real project should have been to write a text importer for your opaque database).
"Microsoft killed my company, I hold a personal grudge. I don't use Microsoft products and neither should you."-JWZ
Commodore's Amiga User Interface Style Guide was really good in its day, and though of course Amiga-specific, it pushed hard for consistency and clarity of communication to the user in the little details such as when to 'gray out' inapplicable menu items, buttons, etc:
Amazon link
I think it's still worth a read if you can get it cheap. Amiga applications benefitted greatly from the Style Guide, even if criticism of a particular developer's app might have come only from a third party who'd read the book. Developers appreciated the way other "Style Guide-compliant" apps worked so nicely together and adapted their programs to suit, resulting in the majority of applications becoming consistently laid out, and therefore very intuitive, for the end user.
LCARS. Nothing more needs to be said!
"Apparatus dignosco occultus, satis non supernus."
So far most people here have said "go read HCI book Z" or offered their own opinions on what you ought to do. Reading the books is a good start but I think you will find that after going through the material, you'll come across a lot of things that make sense yet, try to apply them, yet still fail miserably in your endeavor. That's because nobody has told you the hows. They've only told you the "whats".
So ultimately, here is how you can learn the "how":
Take a piece of software or some gadget. It can even be a web page or something like a GPS receiver. Now that you've decided, write up a couple tasks for using the object. If it is an online furniture store for example, say "task 1: add king size bed with dark wooden frame to cart". And keep going until you've got a pretty realistic list of tasks someone would do using that software or hardware.
Now go find 3 to 4 of your friends who aren't really geeks or nerds. Try to pick from a variety of people: females and males, old and young. Usually it is best to get people that are not familiar with the object you're testing.
Now sit down with each of them individually and say plainly, "I'm conducting a usability test. My objective is to observe how people use this object. The goal is not for you to complete each task, but for me to observe how people can or cannot use the object's interface." Once they understand that they are not being tested, but rather the object's interface, start with your first task you thought of. While they are performing the task, tell them to try to "think out loud" so you can have a better view of what they're trying to do. Don't tell them how to complete the task or anything about how to use the interface. When they ask a question about how something works or what they should do, just say "I can't answer that" or "I don't know." Don't put them down, and if they give up or they don't think they can complete the task tell them it is all right and move on.
Your goal in this process is to observe how people (humans) use an interface. That is why you cannot tell them how or give them any instructions. You simply say "this is the task" and observe. As they're working you try to ask open questions about what they're thinking or why they did something even if it was lightning fast or snail slow. If they click on something that is obviously wrong, don't tell them "that's wrong", instead ask them "why did you click on that?" or "did that do what you expected it to do?" You are trying to figure out their thought process to hopefully gain insight as to why they are not completing the task. Keep in mind that there is nothing wrong with the person, but rather that the problems exist in the interfaces. You won't get anywhere if you start coming up with reasons to blame your users for their faults in using the interface.
The results are very eye-opening when you first do this. In my first study we came up with a list of tasks and thought they were pretty simple. But when we observed different people attempting the tasks incredibly simple things had all sorts of problems. On many tasks the people failed or couldn't complete. On some tasks that seemed complex, people were still able to finish. In short, it is actually pretty common to see things all over the map on an untested and new interface.
This will do a number of things for you:
User interface design for mere mortals / Eric Butow.
This book is a primer that puts together the leading practices and ideas about
user interface design and usability design and testing into a "big picture"view
of how people can and should design and implement user interfaces that
your customers will enjoy.
The book begins with grounding in user interfaces so you understand how
we got from the beginnings of user interface design to where we are today.
Then the book delves into designing user interfaces and usability testing for a
product; that product can be a hardware product such as a printer, a software
interface, or a Web site.
Quicktime player won all sorts of awards for "design" but it's a total piece of crap. All form and zero function - unbelievably basic mistakes/problems. Take the opinion of fashion designers with a pinch of salt.
A book...? How about Joel Spolsky's "User Interface design for programmers"?
http://www.joelonsoftware.com/uibook/chapters/fog0000000057.html
No sig today...
"Any particular one of the four books that people might know to be most useful for me, or a suggested reading order anyone might have?"
They're all good books but you may have trouble going from theory to practice. A book I'd recommend A website I'd also recommend Here's some more. A nice tool for those doing 3d flash and it's open source. Have fun!
For that matter, Quicktime player (an earlier version) feaured prominently and deservedly on Interface Hall of Shame.
Second the book suggestion. No need to agree with everything Joel Spolsky says, but at the very least it's a good way to jumpstart thinking on avoiding UI annoycances.
"Only the small secrets need to be protected. The big ones are kept secret by public incredulity." - Marshall McLuhan
Try out "Don't Make Me Think". It is a great book, showing a variety of websites (practices will carry over to other apps), and details the author's thought process and redesign of the sites to make the GUI more intuitive and accomplish the goals of the site. It really helped me out and made me think of things in a completely different way.
1. Keep it simple and consistent. Even technologists get tired of complex user interfaces (compare Logic 8 with ProTools for simple v. complex) let alone ordinary users.
2. Obey rule one of die.
"I hope you like Guinness, Sir. I find it a refreshing substitute for, er... food." Col. Jack O'Neil, SG-1
It's all primitive crap. I trust people who rehash others' material and republish it in order to make money, more than I trust people who want to help you by feeding you with more primitive crap.
Why do I say primitive?
Because today's GUIs have not evolved one iota since the original rip-off from PARC. Software has followed the cultural landscape: suburban sprawl, huge resource drains, high social cost. 'Make 'em wait' is the watchword of the day. And give 'em carpal tunnel; force repetitive motions, unnecessary click-throughs etc.
You'd be better off:
1. Follow your instincts;
2. Completely decouple your UI from the business logic of the app so that the UI can be easily replaced by the user; allowing users to switch UIs at need. (even provide a scripted command line version);
3. Talk to the users!
Talking to the users is the biggest no-no in the field. You're supposed to tell the users what THEY want, and involve Marketing to assimilate them. As an Architect, I broke this rule in 1998 when I talked to stock traders on the floor of a 'major city' stock exchange; the result was a scripted, 'skin' UI that could be configured by the user (e.g. they could drag controls around the screen and resize them, make them left- or right-hand, how sinister) and rescripted from the server on updates. It was ahead of its time, was written in TCL-TK, so I could show running prototypes to the users and then immediately program in their suggested changes and improvements so they could experiment with them right then and there.
Alas, 9/11 came and went, and the project was bangalored, rewritten in Java and turned into expensive bloatware. Good news is that it had the buy-in of the traders, who knew that they had their input and that their concerns were addressed. Operations bought in because it was instrumented, out-of-box (no stupid monitoring scripts running on yet another Unix host --- today's Architects try to add as many moving parts as possible). Even Management bought in because it was simple and cheap, got Linux onto the Floor and got expensive HP servers off of the Floor.
Cheers!
If at all possible get a real end user involved early on in the design process. My late wife and one of my best client's office manager were my testers. If they could understand it, I rarely had a problem. Other than that, just keep in mind that the purpose of a GUI is to make life easier for the end user, not test their technical knowledge.
It may be overkill for what you want but have a look at http://www.uie.com/
"GUI interfaces are easier for input (no switches to remember, easy to navigate, etc.)
Command lines are easier to schedule and include in custom batch scripts
Command lines allow input prior to the program loading
Both have their place.
The big problem I have is that most administrators* that rely on the command line (in particular DBA's using SQL*Plus) don't help themselves out and manually enter that string of commands instead of batching them up or writing a GUI to simplify their normal tasks. (* administrators that I have personally encountered, your experience my be different).
Layne"
You forgot one major thing. Command line programs also have versatility that gui programs can never have. Think of all the things you can do with dd, netcat, ssh, used in combo with can take stdin/stdout. With one line I can do things like search pdfs or MS Docs for a string and have them print the matching line or send it to a file. I could stream MP3s or soundcard in/ouput from one box to another, incrementally backup/mirror a directory offsite, etc.
This versatility is why we love our command line based utilities and why I think excessive use of MS Windows stifles innovation and creativity. GUI only programs must have all possibilities thought-out for a program ahead of time. Because of these reasons and others, it seems to me that nearly every program should take command line switches and handle stdin/stout appropriately. Guis are great for simple mindless tasks, but the commandline unleashes creativity.
EOF
Two years ago I was directly hooked to Adobe Systems executives on a variety of subjects. Behind their Video Beta wall I challenged Bruce Chizen to get Macromedia Flash or face online annihilation. At the same time I requested an e-book GUI for their Acrobat platform that would allow for a simple scroll across panoramic e-books. I ended up assigned to this arrogant project manager named Alan P[isser] who wrote me saying that "if this is going to happen, it is because I am going to make it happen!" Wholly avid response! I also asked that they offer the outdated code for Premiere 6.5 into Open Source so the Linux community could have a slick video editor. Amidst record profits [or so they say] Adobe shined me on both ideas. Bob Kiger Videography Lab Oceanside, CA http://videographyblog.com/
I'm not trying to start anything but...this entire comment seems to talk about linux gui developement during the previous 15 or so years...
:)
Only recently has GGUI (the extra g is for good) been a consideration in OSS...I'm not trying to start a war...Just...
"* Always use bizarre, scary sounding code names for the name of your application. For best results it should be an acronym for something that doesn't make any sense, and the acronym should be recursive."
hehe!!
"Helping to keep you two steps ahead of the Thought Police!"
There are some great UI design tips in the Palm OS manuals. The gist is that because (older) Palm devices have screen and graphical capabitilities that are much more limited than the PC, you really have to think about how you are going to present your UI. The tips there provide a guide for what to focus on, and the concepts extend well into the PC realm.
Can't remember the exact book title but you can find it here (NOTE: free signup may be required).