TOP 5 books to become a better programmer

5. Design Patterns: Elements of Reusable Object-Oriented Software Erich Gamma, Richard Helm,