HACKER Q&A
📣 sdevonoes

Best book for software engineers (besides the well-known ones)?


We all know the most popular books for software engineers. One could just google it (e.g., Clean Code, DDIA, SICP, TAOCP, K&R books, Steven's books, etc.).

What are the not-so-popular-but-still-good books in computer science/software engineering out there?


  👤 avmich Accepted Answer ✓
IMO, one should understand that software is the current era engineering focus. Just like electrical engineering in mid-20th century, aeronautical engineering in the early 1900s and steam engineering (remember, the origin of the term "engineering" is "engine") for some centuries before that. Before that there were optics and mechanics.

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.


👤 dmux
Oddly enough, three of my favorites are all written by Davids.

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


👤 Jugurtha
Books, concepts, and mindsets that help build the right thing. Problem solving, design, design thinking, consulting resources.

"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

https://news.ycombinator.com/item?id=26446169

https://news.ycombinator.com/item?id=26366426


👤 yakubin
Computer Systems: A Programmer's Perspective by Randal E. Bryant and David R. O'Hallaron

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...>


👤 Jtsummers
The Psychology of Computer Programming by Gerald Weinberg. Some dated language (which he calls out himself in the 25th anniversary edition), but overall very good.

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).


👤 bwh2
Here's a book more people should know about: Masters of Doom.

Awesome read.


👤 grolle
Effective Java (taught me way, way more than just java)

👤 goatcode
How To Win Friends And Influence People

👤 kody
The Linux Programming Interface by Michael Kerrisk. It might be well-known, but I just discovered it a few years ago. I expected it to be a dry reference book but it's a really delightful read.

👤 tjr
Software Engineering for Internet Applications

About Face / The Inmates Are Running the Asylum


👤 mac3n
"Death March", Yourdon. Doomed software projects - how to recognize and deal with them, and sometimes use them to your advantage.

"Software Craftsmanship", McBreen. Take pride in your work.


👤 cotsog
Writing Solid Code by Steve Maguire

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.


👤 sumnole
Code Complete

Software Design For Flexibility

A Philosophy of Software Design


👤 rboyd
Coders at Work