1. Mythical man month Frederick P Brooks – This classic book looks at the human elements of software engineering. I know some of you will scream, “not this book again!”. But this is a must read book if you are a programmer and many of the conclusions in the book are still very valid after all these years.
2. The pragmatic programmer: From Journeyman to Master by Andrew Hunt and David Thomas – This book explores the “apprentice” way of becoming a master programmer. I found this very informative look at programmer evolution.
3. Code Complete by Steve McConnell – An instructive book on programming by a Microsoft engineer. But there is nothing specific about Microsoft in this. It is a pleasure to read this book and you will find yourself reading it again and again.
4. Object-Oriented Software Construction, Second Edition by Bertrand Meyer – This book is a complete reference on the object oriented software design. I don’t think there is any other exhaustive book on the object oriented topic. Only drawback is that this book is too academic. Still a must have item for a programmer.
5. Design Patterns: Elements of Reusable Object-Oriented Software – This is a gold mine of programming wisdom. But you need some solid coding experience before you can appreciate this book. Don’t just memorize the pattern names in the book, but try to understand the real motivation for each of the patterns presented in this book.