top | item 16351310

Ask HN: What are the books you wish your colleagues had read?

225 points| xstartup | 8 years ago | reply

124 comments

order
[+] conjecTech|8 years ago|reply
There is a class at Georgia Tech I colloquially referred to as "making sure your coworkers don't hate you." It covered design patterns, software testing, and project management. I'd tack on a basic knowledge of databases to that. These are things you can gain a true functional knowledge of in a couple of weeks, and which not knowing might make senior engineers hate working with you.

So to mimic the class:

The Mythical Man Month

Design Patterns - Even if some of the particulars are not as relevant, it still provides a useful framework for thought.

Lessons Learned in Software Testing: A Context-Driven Approach

I'd also add Harry Potter & The Methods of Rationality. A lot of engineers can think empirically, but its not their first reaction. Going through this book helped make it second nature for me. Can't remember if a certain data structure is immutable? Now I'll write a couple of lines of code to see rather than go looking for documentation. A lot of big problems start as false assumptions. Having the instinct to think to test them and knowing how to will prevent a lot of wasted effort, regardless of your role.

How to Solve It by Polya also gets an honorable mention for similar reasons.

[+] mattmanser|8 years ago|reply
Design patterns feel completely obsolete now.

Not only does no-one at all talk about them, most of the design patterns themselves were harmful and are now completely unnecessary due to functional language features being available in modern languages.

Design patterns are like TDD, no-one wants to come out and admit it, but they were really, really bad outside of theory.

InitiatorFactoryFactory I do not mourne thee!

[+] conjecTech|8 years ago|reply
An addition directed particularly at cofounders: The Freelancer's Survival Guide by Kris Rusch. It is the single best book on entrepreneurship/running a small business I have ever read. It covers pretty much all the bases. It also covers an enormous number of the issues that you will inevitably encounter if you start a business, but likely have never experienced otherwise.
[+] framebit|8 years ago|reply
2340 (the mandatory group project course) also covered a lot of this stuff, though not in as much detail.

The suggested reading for that course is a book that blew my mind when I first saw it as an undergrad: Clean Code by Robert Cecil Martin. I believe the examples are all Java, but the lessons are applicable to any language. Stuff like naming your variables more carefully than you name your children.

https://www.amazon.com/Clean-Code-Handbook-Software-Craftsma...

[+] godelmachine|8 years ago|reply
Harry Potter & The Methods of Rationality - I'd to Google to see if that was really even a book.
[+] mettamage|8 years ago|reply
How is the class actually called?
[+] jawns|8 years ago|reply
"How to Win Friends and Influence People" by Dale Carnegie.

I'm not saying my coworkers are a bunch of jerks, but it's got a lot of great advice for working alongside others and resolving differences.

---

"How to Not Write Bad" by Ben Yagoda.

I'm not saying my coworkers are all terrible writers, but for many of them, writing just isn't their thing. But learning how to avoid the most common writing problems is important for programmers, because everybody ends up writing some degree of documentation.

--

"Experimenting With Babies: 50 Amazing Science Projects You Can Perform on Your Kid."

I'm not saying my coworkers are a bunch of babies, but I wrote the book, so I want _everybody_, not just my colleagues, to read it.

[+] aembleton|8 years ago|reply
I loved experimenting with babies. Thank you!
[+] guan|8 years ago|reply
Marian says hi! (I live with her.)
[+] kabdib|8 years ago|reply
"I gave my manager two copies of The Mythical Man-Month so he could read it twice as fast."
[+] invalidOrTaken|8 years ago|reply
Actually my colleagues are pretty smart!

For most people, though, it's hard to beat Jurassic Park, the morality tale that goes something like "Myopic optimization leads to BEING EATEN BY DINOSAURS."

[+] matfil|8 years ago|reply
In terms of books to (gently) influence colleagues... I generally find myself looking for pretty-much the opposite. Something that emphasises the joy of stealing fire from heaven.

Old-school sci-fi (lots to choose from) could be pretty good in that regard. Newer stuff often leans a bit too much in the morality tale direction.

[+] gaius|8 years ago|reply
"Just because you can doesn't mean you should" applies to so many situations in software development.
[+] hawktheslayer|8 years ago|reply
Storytelling with Data - because so many people are bad at PowerPoint: http://www.storytellingwithdata.com/book

R for Data Science - because it is such a solid foundation for a career in business analytics: http://r4ds.had.co.nz

And for extra credit two books I hope my collegues DON'T read since they are best kept secret are Cialdini's two books on influence: https://en.m.wikipedia.org/wiki/Robert_Cialdini

[+] craftyguy|8 years ago|reply
Consider that powerpoint is not the right medium 95% of the time, but is being pushed as the only medium 100% of the time.
[+] Recursing|8 years ago|reply
Why are they best kept secret?
[+] skittleson|8 years ago|reply
Working Effectively with legacy code (http://amzn.to/2CazEm5) and The Design of Everyday Things ( http://amzn.to/2H23a0R )

Both have a huge impact on how I work with code and design them. Trying to explain these concepts are hard without context. Sometimes i just copy/paste the sections i think they could benefit from.

[+] peterkelly|8 years ago|reply
Structure and Interpretation of Computer Programs (SICP) by Abelson, Sussman, and Sussman.

Full text is available here: https://mitpress.mit.edu/sicp/full-text/book/book.html (or PDF at https://github.com/sarabander/sicp-pdf).

It is IMHO the most important book on programming and programming languages ever published.

[+] sjellis|8 years ago|reply
If anyone is interested in SICP, I strongly recommend finding videos of the lectures (which are free online) and watching those, then going back to the book for reference and exercises. I found the SICP book very hard work until I discovered the actual lectures that it is meant to support.
[+] Kapura|8 years ago|reply
Snow Crash - Convincing possible future dominated by media, corporations, computers, and drugs.

The Origin of Consciousness and the Breakdown of the Bicameral Mind - Fascinating delve into, among other things, why Homer is boring but gets better, prehistoric art in early human cultures, schizophrenia, and perception and the points it breaks down.

(I work in VR games so take with a grain of salt)

[+] take4|8 years ago|reply
Don’t Make Me Think: A Common Sense Approach to Web Usability.

The chapter about “religious debates” in particular was hilariously accurate, about how teams of people will argue about strongly held personal beliefs about things that can’t be proven.

[+] odiroot|8 years ago|reply
Peopleware: Productive Projects and Teams

I mostly wish this to my ex and future managers, but colleagues wouldn't hurt as well.

Working in Berlin I'm constantly baffled how ignorant of the "old" research people are. Time and again.

[+] rimliu|8 years ago|reply
Seconded. At a couple of places I was actually thinking about leaving this book as a good-bye gift for managers when I quit. But that wiuld most likeky be effort and money wasted.
[+] olavgg|8 years ago|reply
Thank for this suggestion, I have just read the introduction and first chapter. This is my current company in a nut shell!
[+] bor0|8 years ago|reply
Design patterns get obsolete. Programming languages get obsolete. Libraries get obsolete.

Mathematics doesn't. Learn CS foundations, logic, proofs to get better at understanding and gain abstraction experience.

Edit: books: How to prove it by D.Velleman, Proofs and concepts, Discrete Math by S.Epp

[+] Dowwie|8 years ago|reply
I am a proponent for depth over breadth. To read is one thing but to understand is another. Rather than read 5 books and superficially grasp their concepts, read one closely and carefully.

The one book I wish my colleagues would read and learn from is "Man's Search for Meaning" by Victor Frankl [1].

"Between stimulus and response lies a space. In that space lie our freedom and power to choose a response. In our response lies our growth and our happiness."

[1] https://www.amazon.com/Mans-Search-Meaning-Viktor-Frankl/dp/...

[+] DyslexicAtheist|8 years ago|reply

  - Nassim N. Taleb: Black Swan and Antifragile[0]
  - Robert Cialdini: Influence: The Psychology of Persuasion[1]
  - Franklin Foer: World Without Mind: The Existential Threat of Big Tech[2]
  - Herbert Marcuse: One-Dimensional Man: Studies in the Ideology of Advanced Industrial Society[3]
[0] https://www.amazon.com/Black-Swan-Improbable-Robustness-Frag...

[1] https://www.amazon.com/Influence-Psychology-Persuasion-Rober...

[2] https://www.amazon.com/World-Without-Mind-Existential-Threat...

[3] https://www.amazon.com/One-Dimensional-Man-Ideology-Industri...

[+] jxub|8 years ago|reply
Then your overall goal must be to persuade them of the black-swan collateral risks of the big tech sector in an advanced industrial society.

I'm in!

[+] emmelaich|8 years ago|reply
All in no particular order....

As a Unix systems engineer, I would choose

    1. W.R. Stevens books on Unix and Tcp/ip.
    2. Rochkind's Advanced UNIX Programming.
    3. Most of the Unix/Linux manual pages.
    4. Bash FAQ
As a Unix systems programmer I would choose

    1. Mythical Man Month
    2. Jon Bentley's Programming Pearls.
    3. K&R C and Stroustrup C++
    4. A recent Java reference and Bloch's Java Puzzlers
    5. a reference and cookbook for the language of your choice -- Python, Ruby, Perl, etc.
    6. Google's style guides
[+] tzhenghao|8 years ago|reply
Principles by Ray Dalio

This is a good start for crafting better mental models and thought frameworks before engaging others in meetings.

[+] sus_007|8 years ago|reply
Clean Code Series from Uncle Bob.

The books made me realize how horrible my codes are. No matter how long you've been programming, I think these books should be read by every single programmer out there.

[+] raverbashing|8 years ago|reply
CC seems to be Design Patterns meets Moral Harassment

It turns development teams into a judgemental arena, demeaning of other colleagues and a race to see who follows "the gospel" closer to the letter

Who says their code is clean? Who says that's the best way of doing things? In all cases?

It just reeks of "I'm better than the rest", which is already a problem in the industry.

[+] BoorishBears|8 years ago|reply
I wish they hadn’t.

Clean Architecture is a plague on Android development undoubtedly unleashed by some obscure IDE programmer paid by the number of times you use the “Go To Definition” function.

[+] oldcynic|8 years ago|reply
Amusing Ourselves to Death - N. Postman

From the 80s, and talking of TV, but it's worth reading again today as it's so applicable to the current landscape. More so than its original target.

[+] Jach|8 years ago|reply
Just about anything. Too many coworkers don't read any technical books at all. Some will pick up books to learn specific tools or languages, which is better, but not enough...

If you made me pick one, though...

The Practice of Programming - Brian W. Kernighan, Rob Pike - http://www.amazon.com/Practice-Programming-Brian-W-Kernighan...

[+] beeskneecaps|8 years ago|reply
1984 just so they don’t get any crazy ideas and invent big brother. cough cough FACEBOOK cough cough