Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: Best book for software engineers (besides the well-known ones)?
54 points by sdevonoes on April 16, 2021 | hide | past | favorite | 22 comments
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?



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.


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


Data Model Patterns looks very interesting. I just ordered a copy.

What was your favorite takeaway from the book?


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


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


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


I was underwhelmed by A Philosophy of Software Design. The first 100 pages are solid, but the last 70 didn't resonate with me at all.

In those last 70 pages, the author advocates strongly for lengthy comments which felt excessive and often unnecessary to me. Here's an example from page 124:

  // Controls cursor blinking: true means the cursor is visible,
  // false means the cursor is not displayed.
  private boolean cursorVisible = true;


Fair enough. I was also a bit underwhelmed after all the hype it had received here and in a couple other places. I still thought it was a worthwhile read and will probably include it in a list of books I'd recommend to a mentee in the future. I guess my second reading of it will either confirm that for me or get it moved off that list.


Funny :) . I remember a comment "The next line is empty to improve readability".

With all that, John Ousterhout is a very knowledgeable person, so maybe the book deserves some close look.


Second A Philosophy of Software Design it's a very good book.


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

Awesome read.


As far as reading for entertainment as opposed to reading to learn, this is one of the best books I've ever read. Very inspiring.


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


How To Win Friends And Influence People


I loved that book.

I found the part about criticism interesting. It doesn't work. Even Al Capone thought of himself as an underappreciated and misunderstood public benefactor.


It was interesting, but other than the part about developing a genuine interest in what other people like to do I found it pretty difficult to implement most of the advice.

I'm autistic though. Knowing what to do is far easier than doing it when you have crippling social anxiety.

I do think that one bit mentioned above was incredibly helpful though. I have quite a few more friends than I used to. I was actually always interested in most conversation topics I just started paying more attention to when its my turn to talk and let other people drive the discussion.


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.


Software Engineering for Internet Applications

About Face / The Inmates Are Running the Asylum


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


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.


Code Complete

Software Design For Flexibility

A Philosophy of Software Design


Coders at Work




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: