Advice for Developers: Make Common Usage Easy
Ken Hendrickson writes "Thomas Sowell has some fantastic common-sense advice for software developers from the viewpoint of an ordinary user: Make it easy to do what almost everybody wants to do. I don't believe he uses Free Software; that means that Microsoft is not satisfying their customers, and Free Software can perform better than Microsoft even in the ease of use area!"
read "The Inmates Are Running the Asylum : Why High Tech Products Drive Us Crazy and How To Restore The Sanity" by Alan Cooper.
This book clearly and succintly states the difference between how programmers and engineers design (for the edge case), and how people really want things to work (make the common cases easy.) An excellent book, it could be used as a textbook but it's too short. Go read it.
Design your software from use case perspectives to get a clear idea of what the user is actually doing with the system. Seems to me programmer's don't tend to spend a lot of time getting a strong idea of how the client is actually using the product. Focus your energy on the paths that 80% of the product use follows.
This book was written in the 80's but the concepts are timeless. It's not software specific but it is an excellent primer for designers and engineers of all types.
The Design of Everyday thingsBoth are excellent reading for those interested in the art (science?) of good UI/usability design.