Getting better as an engineer is as much about reading code as it is about writing it


Cracking the Coding Interview


Code Complete


Clean Code


Refactoring


Head First Design Patterns


Patterns of Enterprise Application Architecture


Working Effectively with Legacy Code


The Clean Coder


Introduction to Algorithms


The Pragmatic Programmer