What are the not-so-popular-but-still-good books in computer science/software engineering out there?
Considering that software isn't just a branch, but a current "engineer's engineering", the more complex, flexible, powerful area, a good software engineer should strive to maintain and expand his knowledge in other areas as well. Physics(actually, natural sciences) and math, and also other traditional branches of engineering can provide a lot of useful material. Search there too.
"Quantum Computing Since Democritus" is a good specific example, I think.
1. "Object Thinking" by David West (http://davewest.us/product/object-thinking/)
2. "Introduction to Computing" by David Evans (free PDF available: https://computingbook.org/)
3. "Data Model Patterns: Conventions of Thought" by David Hay (https://www.amazon.com/Data-Model-Patterns-David-Hay/dp/0932...). He also gives a great talk about this here: https://www.youtube.com/watch?v=fLFXewSpltw
"The Complete Problem Solver", "Change by Design", "The Design of Everyday Things", "Jobs to Be Done", concepts like non-consumption. Questions that confirm that feature requests are valid and avoid solving Y problem when the actual problem is X. Thought processes to prioritize work and focus on what matters.
Example: https://news.ycombinator.com/item?id=26814150
Then books, concepts, and mindsets that help software engineers reap the reward of the software they write. Marketing, sales, prospecting, pricing, communication.
I believe there is a huge quantity of beautiful, idiomatic, code that solves no real problem, and a huge number of software engineers who have trouble monetizing their skill, or get stuck in unfulfilling roles because they have not found a way to shape an interesting one for themselves.
A few examples of threads searching for answers one usually answers through piecing together many resources, books, and life experiences:
https://news.ycombinator.com/item?id=26805216
https://news.ycombinator.com/item?id=26650563
https://news.ycombinator.com/item?id=26550896
https://news.ycombinator.com/item?id=26465891
A bit of a look into how your computer works as a whole, from the CPU, through assembly, how C is translated into this assembly, a bit about caches, Amdahl's law, virtual memory, processes, threads, I/O and a dozen other things.
<https://www.pearson.com/store/p/computer-systems-a-programme...>
A Philosophy of Software Design by John Ousterhout, short book, quick read. I'll be rereading it once I figure out which bookshelf my wife hid it on (she doesn't like my bookstack approach to "organizing" and moved many things to shelves while I wasn't paying attention).
Awesome read.
About Face / The Inmates Are Running the Asylum
"Software Craftsmanship", McBreen. Take pride in your work.
Really well written and an easy read. Examples in C but applicable to any language. At some point I was reading it once a year.
Software Design For Flexibility
A Philosophy of Software Design