1. Coders at Work
Peter Seibel does an amazing job of asking programmers questions that make them explain their methodology. The interview with Donald Knuth is awesome; really enjoyed hearing him talk about literate programming.
2. The Soul of a New Machine
Tracy Kidder's 1981 Pulitzer Prize winner I think is a brilliant case study on how engineers work together and the things that can go wrong and right with different personalities interacting with highly technical ideas. The project in this book starts without the consent of management, which to me shows the value of questioning the system to add business / engineering value.
3. Little Schemer
Small book that will give your brain a serious workout and show you how to problem solve with Lisp like languages. Even if you never end up using a Lisp dialect, this book expands your brain.
I have more here, all of which I recommend for software and other careers http://benbrostoff.github.io/books/