I've just finished reading a book from Joel Spolsky called UI Design for Programmers. I can recommend this book to anybody working in software development, no matter what you are doing (as long as you are doing something). It is about designing software for real users - it won't teach you how to create good dialogs, but it will help you to think as a user. Why is that important? People working on software forget one important difference - you already know a lot about the program you create and care about it, while normal people know almost nothing about your program and don't care so much about it.
By reading the book you realize some hidden facts, like most people just don't read manuals - you knew that, didn't you? But it goes further, most people don't read descriptions in dialogs either - unless really necessary. So they just click on the error message you gave them, ingoring the content. Very bad users. But how many times did you click the button without actually reading what's in the dialog? Let's admit it, we all do it from time to time.
Joel is great in explaining simple principles - to understand them you don't need to have a degree in nuclear engineering. Still these principles are a bit surprising. By showing some of the annoyances of software we are using every day (web browsers, office suites, e-mail clients, etc.) you get a lot of knowledge of what \*not\* to do when designing software. Every programmer thinks that users like many options, because then the software they are making is greatly configurable. Wrong! Most users hate many options, because they don't understand them - they didn't spend all those months by designing the software as you did. They don't care if your program's database should be small, medium or extra large with double chips and hot mexican sauce. All they care about is that the program does the job they want from it.
What I also like on the book is it's size, it has 134 pages with a lot of pictures. Joel is always to the point, you read the book with one breath - it's very easy to read and amusing. Probably inspired by opensource, Joel published big part of the book online on his webpage here. I recommend checking out the other articles he wrote, there's a lot of truth about software development. I have to admit that Joel inspired me with his writing style and his posts were one of the impulses for me to start to blog. Thanks, Joel!