The more recently read books have rough dates associated with them. The older ones… I forget exactly when I read those.
The Design of Everyday Things, by Donald Norman
Donald Norman has written a fascinating book on, you guessed it, the design of everyday things Doors, keys, light switches and so forth. The insights he draws though are particularly applicable to the world of computing and user interface design: Inside our applications, we can shape reality any way we please, but frankly, we shouldn't - and Norman tells us why.
The Pragmatic Programmer, by Andrew Hunt & David Thomas
I bought this book second hand off Amazon in late 2002. Over the following month it slowly percolated its way up my “to read” pile - somewhat faster than the other books too. That speed was well deserved, and after devouring this book, I had only one question: Who the hell was dumb enough to sell it to me? It is a goldmine of advice and suggestions and examples. Its beauty lies in how it crystallises the trade offs we make every day, explaining them in clear language and illustrating decision making strategies that can be applied to them. It thus arms us with the vocabulary to go out and make informed and rational compromises. Where as before I only had a vague feeling of unease when things weren't going as they should I can now clearly state what has gone wrong - and how to fix it.