Note that some of these are of historical rather than actual relevance. For example, the C++ books which regard C++98 rather than newer version of the language have some timeless advice, but also suggestions and idioms which have since been supplanted (sometimes by the authors themselves) by better alternatives utilizing new language features.
It would've been nice to see why a particular book was included in the list. I certainly don't agree with the addition of Clean Code, but I may be missing something, hence my wish.
I read it two years ago. I personally believe it's amazing as an example of what 150% of a good thing looks like, and the point is deciding what 1/3rd to cut to make a neat 10/10.
Without that book, you barely see what 50% of programming goodness looks like. The only way to 100% is to go too far and dial it back. Offering 150%, imo, is a humble way to offer a path forward without getting the reader all the way there. Maybe it's better that way.
*Most influential books for programmers
These are books considered most influential for programmers from this StackOverflow thread.*
That was point farming question on SO and people were voting on what was most influential for them.
Title might be tricky to read. Because title is saying that those books are not influential on the scientific field but are about that field. Problem is that there are books that are not about that topic so it adds to the confusion.
Books are about "computer science" topic and those books are meant to be influential in general.
It is by popular vote of how influential those books are on practitioners of software development.
To my surprise I own 15 books on this list (physical copies). But some are more computer history related (Levy, Kidder, Kushner): and even though those books are some of my alltime favorites I don't know how a retelling (i.e. biography) can be an 'influential' book, since it's usually written after the fact?
As someone with experience in computer systems research, I recommend the following books that weren't on the list:
- Any of Marshall Kirk McKusick's books on the design and implementation of various BSDs; his latest book covers FreeBSD 11. These books are very well-written.
- Computer Architecture: A Quantitative Approach by David Patterson and John Hennessy. This is a wonderful book on computer architecture for graduate students written by the founders of RAID storage and RISC processors, respectively. For undergrads wanting a lighter introduction, I recommend Computer Organization and Design by the same authors. The authors won the 2017 Turing Award for their contributions to computer architecture.
- Three Easy Pieces by Remzi and Andrea Arpaci-Dusseau. This is a well-written, freely available operating systems textbook intended for undergraduates. It's also great for grad students and practitioners who need a refresher on OS topics.
Another book that is dear to me is the 1995 version of the Macintosh Human Interface Guidelines. I personally think that the classic Mac OS and the Windows Classic (introduced in Windows 95) interfaces and their respective UI guidelines for applications were the high water mark for well-designed user interfaces, and I feel that today's UI/UX designers can learn a lot from mid-1990's desktops.
Using the criterion at the bottom of the page: "a specific book I would tell myself to read at the beginning of my career as a developer", the closest for me is probably The Pragmatic Programmer.
Not The Tao Te Ching (huh?), not Zen and the Art of Motorcycle Maintenance (really now?), not Advanced Windows (that I did read near the beginning of my career as a Windows C++ programmer), not any of The Little/Seasoned/Reasoned Schemer (all of which I read and I had tremendous fun with).
IMHO, this sounds more like a "I'm a programmer and this is a book I remember fondly" kind of list.
Christopher Alexander's "A Timeless way of building" is a very good book, but his "Notes on the synthesis of form" is perhaps even better - and shorter. And is maybe 10x more relevant to programming. I think "A Timeless way of building" is good reading so you see how object oriented design really is not based on it, but that the timeless way of building discusses higher level composition of systems based on constraints, and how similar constraints result in situations where similar solutions are applicable. Recognizing patterns in systems, and applying existing patterns of solutions on them is hardly unique to object oriented programming.
24 comments
[ 3.1 ms ] story [ 71.7 ms ] threadAlthough http://touch.ethz.ch/ looks like an update to the classic.
The main take away, which is really really really important is Design by Contract.
That's an autobiography. No relationship to computing.
Without that book, you barely see what 50% of programming goodness looks like. The only way to 100% is to go too far and dial it back. Offering 150%, imo, is a humble way to offer a path forward without getting the reader all the way there. Maybe it's better that way.
That was point farming question on SO and people were voting on what was most influential for them.
Title might be tricky to read. Because title is saying that those books are not influential on the scientific field but are about that field. Problem is that there are books that are not about that topic so it adds to the confusion.
Books are about "computer science" topic and those books are meant to be influential in general.
It is by popular vote of how influential those books are on practitioners of software development.
I don't find that list useful or valuable.
While I am sure he was a maverick, he loved to talk about himself as such even more!
- Any of Marshall Kirk McKusick's books on the design and implementation of various BSDs; his latest book covers FreeBSD 11. These books are very well-written.
- Computer Architecture: A Quantitative Approach by David Patterson and John Hennessy. This is a wonderful book on computer architecture for graduate students written by the founders of RAID storage and RISC processors, respectively. For undergrads wanting a lighter introduction, I recommend Computer Organization and Design by the same authors. The authors won the 2017 Turing Award for their contributions to computer architecture.
- Three Easy Pieces by Remzi and Andrea Arpaci-Dusseau. This is a well-written, freely available operating systems textbook intended for undergraduates. It's also great for grad students and practitioners who need a refresher on OS topics.
Another book that is dear to me is the 1995 version of the Macintosh Human Interface Guidelines. I personally think that the classic Mac OS and the Windows Classic (introduced in Windows 95) interfaces and their respective UI guidelines for applications were the high water mark for well-designed user interfaces, and I feel that today's UI/UX designers can learn a lot from mid-1990's desktops.
Not The Tao Te Ching (huh?), not Zen and the Art of Motorcycle Maintenance (really now?), not Advanced Windows (that I did read near the beginning of my career as a Windows C++ programmer), not any of The Little/Seasoned/Reasoned Schemer (all of which I read and I had tremendous fun with).
IMHO, this sounds more like a "I'm a programmer and this is a book I remember fondly" kind of list.
Having categories would be nice too. (Section headings, don't mean the FP kind.)
- Annotated Turing by Petzold
- Code by Petzold
Maybe influential?
- Designing Data Intensive Applications by Kleppmann
- Digital Design and Computer Architecture by Harris
- How to Solve It by Computer
- Algorithms + Data Structures = Programs by Wirth
Large discussion on this one earlier https://news.ycombinator.com/item?id=25572852
And this:
https://news.ycombinator.com/item?id=12991562