5 ms·
Ask HN: 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?
- tjr 6y agoSoftware Engineering for Internet Applications About Face / The Inmates Are Running the Asylum
- goatcode 6y agoHow To Win Friends And Influence People
- m463 6y agoI 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.
- chevill 6y agoIt 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.
- mac3n 6y ago"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.
- bwh2 6y agoHere's a book more people should know about: Masters of Doom. Awesome read.
- chevill 6y agoAs far as reading for entertainment as opposed to reading to learn, this is one of the best books I've ever read. Very inspiring.
- Jtsummers 6y agoThe 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).
- girishso 6y agoSecond A Philosophy of Software Design it's a very good book.
- bwh2 6y agoI 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;
- Jtsummers 6y agoFair 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.
- avmich 6y agoFunny :) . 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.
- kody 6y agoThe 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.
- rboyd 6y agoCoders at Work
- dmux 6y agoOddly enough, three of my favorites are all written by Davids. 1. "Object Thinking" by David West (http://davewest.us/product/object-thinking/ http://davewest.us/product/object-thinking/) 2. "Introduction to Computing" by David Evans (free PDF available: https://computingbook.org/ https://computingbook.org/) 3. "Data Model Patterns: Conventions of Thought" by David Hay (https://www.amazon.com/Data-Model-Patterns-David-Hay/dp/0932633749 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 https://www.youtube.com/watch?v=fLFXewSpltw
- tmaly 6y agoData Model Patterns looks very interesting. I just ordered a copy. What was your favorite takeaway from the book?
- grolle 6y agoEffective Java (taught me way, way more than just java)
- sumnole 6y agoCode Complete Software Design For Flexibility A Philosophy of Software Design
- yakubin 6y agoComputer 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-programmer-s-perspective/P100002502659?format=MASTERING https://www.pearson.com/store/p/computer-systems-a-programme...>
- Jugurtha 6y agoBooks, 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 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=26805216 https://news.ycombinator.com/item?id=26650563 https://news.ycombinator.com/item?id=26650563 https://news.ycombinator.com/item?id=26550896 https://news.ycombinator.com/item?id=26550896 https://news.ycombinator.com/item?id=26465891 https://news.ycombinator.com/item?id=26465891 https://news.ycombinator.com/item?id=26446169 https://news.ycombinator.com/item?id=26446169 https://news.ycombinator.com/item?id=26366426 https://news.ycombinator.com/item?id=26366426
- avmich 6y agoIMO, 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.
- cotsog 6y agoWriting 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.