@Todd covered it. Here is my take on some new classics along with old ones.
- Clean code by Uncle Bob
- Grokking Algorithms by Aditya Bhargava
- Pragmatic Programmer by Andy Hunt and Dave
- Head First Design Patterns
- Designing Data Intensive applications by Martin Kleppmann