I highly recommend, also: The Pragmatic Programmer. This book is less about programming idioms and more about philosophies and approaches. It was given to me when I finished my first software engineering job, and I wish I had it to start with. In fact I've bought copies of this book for brothers, friends that were interested in becoming programmers.