UI design is a topic that many programmers are afraid of. It is perceived to be similar to graphics design, a work that is said to be very difficult for the average programmer. Anyways, Joel Spolsky (he is the guy behind Joel on Software) wrote a tutorial on UI design a few years ago (available online) and Apress published it as book.

UI Design for Programmers is divided into 18 little chapters and looks at the usability side of things. Each of the chapters is a few pages long at best, however, reading the book from cover to cover usually is the best approach!
Joel Spolsky has a few basic theories, and about half of the book goes around them. UI should make people happy, usability and learnability are different, users can’t read, users can’t use the mouse and so on. While I didn’t agree to every point made, most of the concrete hints given here are very useful.
The second big topic of the book is usability testing. Joel Spolsky has probably experienced more usability tests that most others (at various companies), and the first conclusion that he pulls is: you need no lab! After that, he covers the amount of needed users (no more than 6) and the difference between usability and usability success rate.
The text is written very well, and the images included simplify understanding. Reading the book is no problem for a non-native speaker like me, and reading it before falling asleep is no problem either, as there are no really difficult words.
Overall, this book gives you a great overview of the “people related” things in UI design. It may not teach you about using specific UI elements, but rather tries to give you a big picture of what the phenomenon User Interface is trying to accomplish and how it can screw up. Read it together with O’Reilly’s UI Design Patterns, and your UI design skills will receive a big boost!