- Structure and Interpretation of Computer Programs (doing all the exercises is key). This book helped me think about how programs run, how state is stored, how you can build out asynchronous computation, and how you can build your own languages.
- Designing Data Intensive Applications. This book profoundly changed how I think about application performance and data. It describes so much about different kinds databases and query languages, that now I feel like I've got a big picture view of the whole industry.
- Harry Potter and the Methods of Rationality. This book really taught me to think rationally and logically. I think I really did not understand the scientific method until this book.