Ask HN: Name 3-5 books that had the most impact on your career and knowledge?
Let me start:
1. Designing Data Intensive Applications
This book doesn't need any additional praise, but it's just brilliant how it manages to be both highly technical and very readable (and even capturing).
2. The Pragmatic Programmer
I wish I had read it years ago. It reads like a great conversation with an incredibly experienced friend of yours
3. Philosophy of Software Design
It's debatable whether this book is the better replacement for Clean Code, but I really like how nuanced and undogmatic it is.
It goes without saying that with such books it's often the case that you revisit some parts or delay until you have a usecase that includes the topic discussed in the book. This is especially true for DDIA.
What are your top 3-5? Please, also add your brief comments on how exactly this book changed you :)
90 comments
[ 0.26 ms ] story [ 180 ms ] thread1. XML Schema by Priscilla Walmsley - https://www.amazon.com/Definitive-XML-Schema-Priscilla-Walms...
2. DOM Scripting by Jeremy Keith - https://www.amazon.com/DOM-Scripting-Design-JavaScript-Docum...
3. CSS Pocket Reference - Eric Meyer - https://www.amazon.com/CSS-Pocket-Reference-Visual-Presentat...
Most of the developers I have worked with in my career are absolutely terrified by tree structures. They will admit otherwise like some kind of pathological liar, but this is easily exposed and that's so unfortunate. A tree structure is just a data structure like any other and embracing that liberates you from a kind of Stockholm Syndrome.
2. Javascript - The good parts
Professional SQL Server 2000 Programming by Robert Vieira
Programming BASIC for Tandy Computers by David A. Lien
Got me to start thinking about reliability and able to express my thoughts on it.
2. Design of Everyday things
Read it as a junior and it got me thinking about UX and putting the user first.
3. The Pragmatic Programmer
Another one I read as a junior that had some really interesting ideas in it. Along with Release it! it gave me the language to talk about the ideas as well.
Thinking about this now, I’m keen to give the Design of Everyday Things a read. I now work in a different area and it’d be interesting putting it in that light.
1. Lean startup - Eric Ries
2. Inspired - Marty Cagan
3. Sprint - Jake Knapp
4. Creativity inc. - Ed Catmull
5. Range - David Epstein
2. Quantum Mechanics by Eisberg, Resnick
3. Mathematical Physics by Arfken, Weber, Harris
4. Introduction to Statistical Learning with R by Hastie et al.
5. Deep Learning for Coders by Jeremy Howard
Is Fundamentals of Physics by Halliday et al a good starting point for me?
https://en.m.wikipedia.org/wiki/The_Theoretical_Minimum
I like the No-Nonsense Series by Jakob Schwichtenberg a lot. I worked through the Classical Mechanics book already and found that it teaches the conceptual framework very nicely. I plan to go through the Electrodynamics and Quantum Mechanics books in the series and then work through some other books with exercises (there are no exercises in the Schwichtenberg books, which usually is a no-go for me, but I am reading them to get the concepts in an uncluttered fashion.).
The best classical mechanics book IMO is the one by John R. Taylor, I have worked through 2/3 of it with nearly all exercises years ago, I can heartily recommend it.
For Electrodynamics I would recommend the book by Griffiths and for QM there is a very promising new book by Barton Zwiebach which has been created based on a course he is giving at MIT.
I wish you good luck with your learning journey!
I'd like to understand General Relativity, and do not care about Quantum Physics. I have found this post to be helpful. Hopefully it can help you to some degree, too.
https://physics.stackexchange.com/questions/14074/what-are-t...
Can you discuss a bit more on this choice?
This learnt me how to analyze "small" datasets which have helped me incredibly in my career. Technology wise is very out of date, but the concepts are still valid.
I think it's hard to get more with less investmtent. Really underrated book.
2. Expert Oracle Database Architecture
If you have to develop on Oracle (something I undestand it's not very popular in HN), you have to read it. It's a great book that delves into the why's and not only into the how's.
3. Software Estimation: Demystifying the Black Art.
Only the "cone of uncertainty" concept would make it a must-read. It provided me a framework for doing estimations and at same time, to worry less about them. It has helped me to divert lots of uncomfortable conversations about "when" towards a much more productive "what-and-why-is-needed".
I read this as a teenager in the late 80's and it was an epiphany for me to discover what was possible to do with rather simple tools.
So much of our career path is decided on relations more so than deliverables, also self-promotion is key but it doesn't come naturally for everybody.
The idea that I shouldn't self-promote (because somehow it felt like bragging) and that people will notice if I do amazing work but stay silent was probably one of the most negatively impacting inhibitions I had at the beggining of my career. Also the book made me realize how 'utilitarian' and sometimes selfish I was in communication with others.
I had an amazing manager as a Junior who gifted me that book, it really gives you some perspective. We are often selfish listeners and are not committed to acknowledging the other in a 2 way relation. Once you condition yourself not to do that then building relations is way easier, and the space for self-promotion occurs naturally without a feeling of humblebrag.
Carnegie opened my eyes to how to communicate productively, but it’s also a really manipulative way of being.
Nonviolent communication comes from a position of love and understanding instead of just getting what you want.
There is significant overlap, but where they differ, NVC is going to lead to better relationships especially with family.
I find it odd that people keep raving about this book. As you said it is a very manipulative and exploitative way. It is ok if you are just aiming for getting what you want. Instead I find Robert Green's books which callout and does not sugar coat anything.
I’m still looking for a more science-backed book on influence and persuasion and I’m currently looking at Influence + Persuasion from the HBR Emotional Intelligence series. Would be happy to hear about others’ recommendations as well.
Like the other reply said: it’s an opportunity to switch one’s mindset from a manipulative one (getting people to… like you/whatever) to a mindset of serving what’s alive in them, and yourself.
It’s an invitation for a deeper alignment with one’s humanity and generates effortless compassion and understanding.
Leading to satisfaction much deeper than the one of getting your way.
For the rest I just read whatever I can get hold of, I don't really have any "cornerstone books" - probably because I've seen too many of them rise to fame to later decline when the fad they promoted got out of fashion...
https://en.m.wikipedia.org/wiki/Peopleware:_Productive_Proje...
We are still making the same mistakes managing software projects and teams 30 years later.
The Secrets of Consulting by J. W. Weinberg
Understanding SEO by F. Enzenhofer (wrote it myself, changed a lot for me)
* Learn C++ in 21 days. May seem strange from the title, but this was the book that helped me really grok OO design. It's examples about mammals horses dogs and unicorns (!) have stick to me for ever.
* Digital Computers (this is a greek-only book, publish date was 1979 or something): We had this book for a course at our first year on the University. It introduced everything from transistors to logical gates to flip flops, to more complex circuts to a complete (teaching) ALU to writing ASM for that ALU. Understand everything was a revalation to me.
K&R and Unix Programming we’re two of the few books in my local library that were about programming. My hacker career/life started with reading page one of K&R. I never looked back.
The Network one by Ilya Gregorik. There's just not a lot of other material that covers this and certainly not this thoroughly. This one is probably responsible for me "looking smart in front of others" more than any other book on the list.
"100 things every designer should know about people" by Weinschenk (sp?). Actually I take it back: _this_ is the most "look smarter than everyone" book you can read if you work anywhere around the web. Especially if you have to argue with designers.
I have a few more, but I'd start with those.
This one https://hpbn.co/ ?
It has "disenchanted" a lot of the tech-related stuff for me, and it has disenchanted most of our industry, for that matter (I'm a computer programmer, forgot to mention that). Still doing my small thing, getting my salary doing honest work, work which, hopefully, doesn't send anyone to prison nor enables some genocide half-away around the globe, so there's that.
[1] https://www.amazon.com/le-bluff-technologique/dp/2818502276
Code Complete 2 - McConnel
Professional Software Development - McConnel
Structure and Interpretation of Computer Programs (SICP) - Sussmann et all. (main artifact: Implement the scheme interpreter, not in Scheme, but in a language of your choice)
Algorithm Design Manual - Skiena
The Timeless Way Of Building - Alexander. Software patterns often refer this book, but the concepts used in software patterns generally are far more pedestrian in scope than Alexanders timeless vision for quality in architecture. Goes really well with this older book Notes On The Synthesis of Form.
Domain Modeling Made Functional (Wlaschin) provided me with concepts and techniques that I've used practically every day since I read it, especially functional design patterns and DDD/CQRS without the jargon.
2. Structure of Scientific Revolutions
3. The Myth of Sisyphus
4. How to Win Friends and Influence People
5. Design of Everyday Things
I don't think I even finished the book. (assembler is tedious and hard!) But it began a lifelong love of computers and software.
Everyone ought to read and absorb Deming. It's hands-down the most life-changing read I've ever come across, by a wide margin.
Dealing with life statistically rather than overreacting to randomness means it's possible to achieve much higher levels of effeciveness and productivity. Working with people to unleash their inner motivation is vastly superior to trying to carrot-and-whip them around.
Understanding that a specific process will yield a specific outcome, whatever outcome you wish for, is how to avoid getting the same result over and over while thinking you ought to see something different because gosh-darned if you aren't trying really hard!!
= Willful Ignorance by Weisberg.
This isn't that good a book, in that it doesn't cover very much content at all, but it really gave me a good intuition for what statistics and probability is about that has helped me understand more advanced things than I was able to before.
Both this book and Deming will take a few years to digest. You'll want to practise it in real life, then come back to read it again, then practise some more. Eventually the lessons will start to stick.
= Performance Modeling and Design of Computer Systems by Mor Halchor-Balter.
Despite the name, this is a book about queueing theory. You know, that branch of statistics that shows up literally everywhere, except nobody seems to understand that it does. I have been dabbling in queueing theory before this book, but the focus this book put on practical applications really made me understand it on a deeper level than before.
= Working Effectively with Legacy Code by Michael Feathers.
I didn't originally want to put this one in this list because it's so predictable, but I can't not. I keep coming back to it and re-reading portions of it every time I have to deal with tricky code. It's just that good at explaining clever ways to get things under test, so they can be worked on with confidence.
= How to Measure Anything by Douglas Hubbard.
What I really take away from this is how powerful it is to be able to estimate ranges that are true 90 % of the time. It's hard to convince others of what a superpower this is, but I hope to work with people who understand that some day.
My other mentions would be Algorithms to Live By (Christian and Griffiths), and Tufte's Visual Display of Quantitative Information (with a follow up of Doumont's Trees, Maps, and Theorems. Tufte I really enjoyed.
Thank you for the Deming reference -- will need to put that and Performance modelling on the list!
2. https://www.tedinski.com/archive/
If so, his functionalCS syllabus is some of the best content online.
Convinced me to leave Java and start doing Ruby instead. Did a lot more programming languages since then.
* Javascript the Good Parts, by Douglas Crockford
Taught me how to write better js. Of course since then the language has changed so much that this little booklet is completely obsolete, but for a brief period, this book was absolutely essential.
It's hard to single out a third book. No other books come close to these two. Most books are too thick and wordy and boring, and I'm not a fast reader. I'd love to list one of the books about design patterns here, but I never finished any of them, so I think I'm going with:
* Beginning Scala
I haven't actually done any big projects in Scala, but it was captivating, showed me how beautiful a programming language could be (but also how ugly, in later chapters), and changed how I think about programming languages. I still regret never having actually begun anything in Scala, although I still fear the complexity of its type system. The world needs a cleaner Scala.
> Convinced me to leave Java and start doing Ruby instead. Did a lot more programming languages since then.
So you did not like the book?