A book about user interface design
Donal Fellows: Though this book is extremely Windows-and-VB-centric, much of what Cooper says is extremely instructive and should be read by anyone wanting to create a user interface (even if they are so foolish as to use a GUI toolkit other than Tk.) Highly recommended reading for anyone working with client-side interactions...
Of particular interest to me are what he writes on the problems with the misuse of File menus; I've been using an application recently that worked with images (from a scanner) and by the simple expedient of abstracting (most of) the file management away, the program was a lot easier to use, both for me and the rest of my family (who are far less computer literate.) Not that I'd actually recommend this program in practise due to its numerous other bugs, but this part of the UI worked very well... :^)
Bryan Oakley: Absolutely a must-read for anyone who must develop a UI, even if you aren't the one designing it. It is easy to read, and chock-full of wisdom.
Even though, as DKF suggests, the book is heavily window-centric, don't let it sway you if you write for the Mac or unix or any other platform. All of the advice is applicable to any other platform. The problems and suggestions are mostly universal in nature.
I'm on my third copy of the book -- the first two I've let other borrow never to see it return. It's such a good reference I hate not having a copy around. If you only have room on your shelf for one UI related tome, pick this one.
WJR: About Face 2.0: The Essentials of Interaction Design has been available for a while now. This is the latest version of About Face. It seems like VB-centric than the former version, at least what I've read so far.
bll 2016-4-15 Updated ISBN info.
bll 2016-8-17 I have the 4th edition. I did not find that the 4th edition is windows centric. It covers aspects of desktop, web and small screen (mobile) design. And of course the design decisions are universal across platforms. I haven't quite finished reading it yet, but I have already applied many of the ideas to my application. I got rid of the multitude of top level windows I had before -- now everything is in a single tabbed notebook interface. Modeless validation. No more saving all the time -- almost everything is automatically saved and the user has fewer file operations to manage. Added undo and redo operations where appropriate. I have enjoyed this book very much and have learned a lot from it.