Ask HN: What are the books you wish your colleagues had read? - xstartup
======
conjecTech
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
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!

~~~
fdw
Could you please elaborate that? I still see patterns like Builders,
Factories, Singletons and even sometimes a Strategy in Java. Why do you think
they are bad? What are the functional alternatives?

~~~
mattmanser
Java's not a good example as Java 8 took so long to come along. Almost took
them 10 years to catch up with the rest.

In modern C# you won't see hide nor hair of Factories, Singletons, etc.

Expect modern Java to be the same in a few years.

~~~
maveonair
Well, what’s about the new HttpClientFactory...
[https://github.com/aspnet/HttpClientFactory](https://github.com/aspnet/HttpClientFactory)

~~~
mattmanser
Yeah, what with the asp.net core team being such great devs, I'll definitely
listen to them.

That team can't commit to anything and yet make regular sweeping changes to
the framework depending on whatever the current flavour of the month is. This
month it's DI, DI, DI.

They've been incredibly inconsistent since ScottGu left.

------
jawns
"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
I loved experimenting with babies. Thank you!

------
kabdib
"I gave my manager two copies of _The Mythical Man-Month_ so he could read it
twice as fast."

~~~
zhte415
Excellent!

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

~~~
rthomas6
At the cost of being downvoted, I like _The Fountainhead_ for this. Trusting
your own judgement, daring to create something beautiful even if nobody else
appreciates it, even if everyone else hates you for it. Because it's beautiful
and because your singular vision improves the world by existing in it. And
because you become a better person for daring to realize the great work that
is inside of you.

The love story in it is kind of weird, okay really weird, but besides that I
like the book. Most of the over-the-top strawman librul bad guys, and attempts
to morally justify Laissez-faire capitalism mostly came from _Atlas Shrugged_.
_The Fountainhead_ is more focused on an individual who wants to realize
greatness for its own sake.

------
hawktheslayer
_Storytelling with Data_ \- because so many people are bad at PowerPoint:
[http://www.storytellingwithdata.com/book](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](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](https://en.m.wikipedia.org/wiki/Robert_Cialdini)

~~~
Recursing
Why are they best kept secret?

~~~
tvmalsv
Ostensibly to prevent them from using the techniques on yourself, or so that
they don't recognize when you are using the techniques on them.

~~~
Recursing
Aren't we talking about colleagues? Shouldn't it be a collaborative
environment?

~~~
hawktheslayer
I meant it somewhat tounge-and-cheek, but if I recall correctly even Cialdini
quotes Uncle Ben's line to Spiderman about _" with great power comes great
responsibility"_. I also should mention that I work for a large corporation,
and while I strive to be collaborative, it is still a political environment I
operate in.

------
skittleson
Working Effectively with legacy code
([http://amzn.to/2CazEm5](http://amzn.to/2CazEm5)) and The Design of Everyday
Things ( [http://amzn.to/2H23a0R](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
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](https://mitpress.mit.edu/sicp/full-text/book/book.html)
(or PDF at [https://github.com/sarabander/sicp-
pdf](https://github.com/sarabander/sicp-pdf)).

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

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

~~~
lashkari
Here's a link for anyone else that wants it:
[https://www.youtube.com/playlist?list=PL8FE88AA54363BC46](https://www.youtube.com/playlist?list=PL8FE88AA54363BC46)

~~~
yesenadam
OMG Thank you to both of you! I've seen dozens of references to SICP in lists
online, but I never knew there's video of the course, no-one mentioned that.
Great stuff.

After watching the first 10 minutes of the first lecture, was so good I
immediately got my super-non-techy housemate to watch it, after explaining how
revered among programmers the book is. She said "Thank you for showing me
that!" hehe.

~~~
sjellis
"After watching the first 10 minutes of the first lecture, was so good I
immediately got my super-non-techy housemate to watch it, after explaining how
revered among programmers the book is. She said "Thank you for showing me
that!" hehe."

Yeah, the lecturers are really good, and IIRC, the videos were professionally
produced (HP paid for them). The book is written like course material for a
maths class, more than a commercial programming book.

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

~~~
odiroot
Hear hear.

I was considering the same thing. Outside of the reasons you listed you can
also be viewed as smug / bitter.

------
bor0
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
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/...](https://www.amazon.com/Mans-Search-Meaning-Viktor-
Frankl/dp/080701429X)

------
DyslexicAtheist

      - 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...](https://www.amazon.com/Black-Swan-Improbable-Robustness-
Fragility/dp/081297381X)

[1] [https://www.amazon.com/Influence-Psychology-Persuasion-
Rober...](https://www.amazon.com/Influence-Psychology-Persuasion-Robert-
Cialdini/dp/006124189X)

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

[3] [https://www.amazon.com/One-Dimensional-Man-Ideology-
Industri...](https://www.amazon.com/One-Dimensional-Man-Ideology-Industrial-
Routledge/dp/0415289777)

~~~
jxub
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
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

------
androa
Reinventing Organizations by Frederic Laloux -
[https://www.amazon.com/Reinventing-Organizations-Frederic-
La...](https://www.amazon.com/Reinventing-Organizations-Frederic-
Laloux/dp/2960133501)

For me it is the most influential book on how I think about "agile" , what
that really means, and which factors really matter.

------
tzhenghao
Principles by Ray Dalio

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

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

~~~
fdw
While I agree that can devolve into a dogmatic belief system, I also think
that that's partly a people problem.

Many of the ideas in Clean Code make code more readable (for example small
methods, each containing only one level of abstraction; or good naming). It's
on the coders to know how far to take these ideas and when to be pragmatic and
say "good enough".

~~~
raverbashing
> It's on the coders to know how far to take these ideas and when to be
> pragmatic and say "good enough".

Which works in theory, in practice it's not that that easy, especially since
UB seems to cater for the most "religious" ones

~~~
fdw
It isn't easy, but so far I've had luck with my co-workers. If they were more
dogmatic, I think I would see Clean Code more critical too. But as it stands,
I still recommend the book to new colleagues, and our culture takes care that
we don't follow each "law" to its letter.

~~~
raverbashing
Yes isn't easy, that's why I'd rather avoid it

------
oldcynic
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
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...](http://www.amazon.com/Practice-Programming-Brian-W-
Kernighan/dp/020161586X)

------
beeskneecaps
1984 just so they don’t get any crazy ideas and invent big brother. _cough
cough FACEBOOK cough cough_

------
astatine
Fascinating question. I recently went about compiling a list of books that I
though our team will benefit by reading (or re-reading). It was rather tricky
to find books which are of lasting value and are best read in a contemplative
frame of mind. Not necessarily intended to solve immediate problems, but to
help become better in some immeasurable way. This is the list we collectively
came up with. Our goal was to find 50 books and we went a bit above that in
the end. YMMV. Link to list of books:
[https://docs.google.com/spreadsheets/d/1QOSqT2B_2skXlyG9lKI8...](https://docs.google.com/spreadsheets/d/1QOSqT2B_2skXlyG9lKI8O_wgPbz4eWQ7TeEJSNx3Zbk/edit?usp=sharing)

~~~
rorykoehler
Mythical man-month was so good you put it twice?

------
alexleavitt
"Everything is Obvious," by MSR researcher Duncan Watts.

Imagine every time when people infer seemingly-obvious extrapolations from
data. This book addresses that phenomenon to make you more self-conscious
about the limitations of data and the constant need for more research.

------
wyclif
The entire "You Don't Know JavaScript" series of books by Kyle Simpson:

[https://github.com/getify/You-Dont-Know-JS](https://github.com/getify/You-
Dont-Know-JS)

Highly recommended because:

1/ They're up to date and you'll be able to avoid all the outdated JS
tutorials on the web

2/ They're extremely well written

3/ They're thorough in a way that a lot of books and tutorials aren't. They
are short, dense, incremental books and if you work through all of them you'll
have a complete understanding of the language, including what's outside the
so-called "Good Parts."

------
mustardo
Effective Java by Joshua Bloch

~~~
olavgg
That book is awesome, should be read by every Java developer! Discussions and
examples from this book is often on Stack Overflow too, where the discussions
go deeper and may be clearer.

------
xstartup
McConnell, Steve. Code Complete. Redmond, WA: Microsoft Press, 1993.

McConnell, Steve. Software Project Survival Guide. Redmond, WA: Microsoft
Press, 1998.

Maguire, Steve. Writing Solid Code. Redmond, WA: Microsoft Press, 1993.

Ranade and Nash. The Elements of C Programming Style. New York: McGraw-Hill,
1992.

Kernighan and Plauger. The Elements of Programming Style. New York: McGraw-
Hill, 1982.

Caner, Cem, et al. Testing Computer Software, Second Edition. New York: Wiley
Computer Publishing, 1999.

Hunt, Andrew, et al. The Pragmatic Programmer. Reading, MA: Addison-Wesley,
2000.

Holub, Allen. Enough Rope to Shoot Yourself in the Foot: Rules for C and C++
Programming. New York: McGraw-Hill, 1995.

------
cimmanom
Getting Things Done.

The engineers usually aren't so bad, because they have what's essentially a
GTD system for 98% of their work in the form of an issue tracker (though I've
also known one or two who could benefit from a system to help them track the
complexity and non-code aspects of larger projects).

But the managers and the people I interface with in other departments are
incapable of keeping track of what projects they have going on, what the next
step are to keep those projects moving, and who's responsible for what.

------
lsc
Personally, though, I think there are book anti-patterns, too. If you start
somewhere new or get new management and they hand out Machiavelli or Sun Tzu,
You should probably update your resume and start taking recruiter calls;
things are about to get rough.

I mean, those are important books, and you should read them for
historical/cultural reasons, but if management hands them out at work, from
experience, it's indicative of an, uh, unhealthy or at least unpleasant work
culture.

------
qilisiang
The Mythical Man-Month - Fred Brooks

To all Project Managers & Top Management.

~~~
unpythonic
Another good one for project management is _The Checklist Manifesto_ by Atul
Gawande. When running many large projects, there's always a common set of
stuff that needs to get done before declaring a project ready for deployment.
The techniques in this book are simple, effective and a lot more subtle than
simply writing down a list.

------
drawdown
I would like it if my coworkers and managers read and took to heart the
message behind

    
    
       • Six Degrees: Our Future on a Hotter Planet
         https://en.wikipedia.org/wiki/Six_Degrees:_Our_Future_on_a_Hotter_Planet
    
       • Drawdown: The most comprehensive plan ever proposed to reverse global warming 
         http://www.drawdown.org/the-book
       

but sadly most are too focused on their stock options.

------
cm2012
Worm, the amazing superhero deconstruction web serial, only so I could geek
out with them.

------
sledgehammers
Peopleware.

How about not stuffing people into open offices.

------
spodek
" _Getting To Yes_ " [https://www.amazon.com/Getting-Yes-Negotiating-
Agreement-Wit...](https://www.amazon.com/Getting-Yes-Negotiating-Agreement-
Without/dp/0143118757)

I've given away more copies of that book than any other. Improves all
relationships.

" _Elements of Style_ " aka Strunk and White.
[https://www.amazon.com/Elements-Style-Fourth-William-
Strunk/...](https://www.amazon.com/Elements-Style-Fourth-William-
Strunk/dp/020530902X)

I'd prefer they not only read Elements of Style, but work on it.

~~~
xiuyuan
You might find this interesting regarding Elements of Style:
[https://www.washingtonpost.com/news/volokh-
conspiracy/wp/201...](https://www.washingtonpost.com/news/volokh-
conspiracy/wp/2015/04/21/against-strunk-whites-the-elements-of-style/)

The original article it quotes can be found here:
www.lel.ed.ac.uk/~gpullum/LandOfTheFree.pdf

It's quite heavy criticism of Elements of Style from the Professor of General
Linguistics at the University of Edinburgh.

------
matfil
"The Soul of a New Machine", by Tracy Kidder. Solving hard problems, dealing
with (and balancing) both technical and business concerns, but with emphasis
on getting things done over process and organisational concerns.

~~~
feydaykyn
It's also extremely well written, and a great introduction to how computers
work in the inside that can be understood by non technical readers. It's also
the only book which succeeded in expressing both the rollercoaster I feel when
programming.

------
tobyjsullivan
1) The Pragmatic Programmer by Hunt and Thomas will always be a classic.

2) The Decision Maker by Dennis Bakke. This one pairs well with the more
thorough Reinventing Organizations which has been mentioned in another
comment.

~~~
ozim
I was disappointed with Pragmatic Programmer, but maybe I picked it up too
late. It is quite obvious stuff for experienced person. If someone is 5 years
in dev and content of the book is not obvious for him, then I am afraid the
book will not help.

~~~
tobyjsullivan
I agree insofar as any developer should probably know that stuff as a minimal
baseline. Which is why it made my list of books I wish my colleagues had read.

------
andersthue
Leaders and Self Deception

Crucial Conversation

These two books will teach you and your colleagues how to communicate and
maintain an open and centered dialouge while removing bad intentions and bad
mindsets from your being.

~~~
yesenadam
Actual titles: _Leadership and Self-Deception_ and _Crucial Conversations_.

------
macieklaskus
Nonviolent Communication

------
t176
Dreaming in Code by Scott Rosenberg. As a programmer of 30 years I have taken
more quotes and found more common ground with this book than any other. Here's
a small extract that caught my attention: "In order to build something, you
have to have a blueprint. And we don't always have one. Then you hit
unexpected problems. It's hard to know how long something is going to take
until you know for sure you can build it."

------
EliRivers
Anna Karenina and a selection of other classics. Anything from David Mitchell.
At least a couple of the more well-known Haruki Murakami novels. Some history
from the more scholarly end of the layman accessible works. Little bit of
classic philosophy. More of my colleagues speak two (or more) languages than
are monolingual, but if that weren't the case, I'd wish more of them read in
another language.

------
bem94
Player piano by Kurt Vonnegut. Essential reading for anyone who forgets how
powerful and often out of touch engineers are as a class of professionals.

------
rotrux
The Denial of Death by Ernest Becker
([http://a.co/aGEmQBl](http://a.co/aGEmQBl))

------
iamdave
The Phoenix Project.

It's terrifying the parallels.

~~~
matfil
It's certainly an _interesting_ read. But very oriented towards big,
conservative organisations.

To me, the message was just how operations-focussed and, above all, anti-
individualistic big chunks of our field have become.

------
donretag
One of the worst managers I've had was actually well read. We read many of the
same books and he also read many listed so far in this Ask HN. I often
wondered how did he end up so bad if we read the same books?

~~~
nathan_f77
I don't think reading a lot of books is a panacea that will magically make you
a better person, or even a better manager. It's important to have a lot of
"mental models" to make better decisions, but books won't fix a short temper
or make someone more friendly. That comes from habits like reflection and
meditation, or therapy. Also getting enough exercise, having a healthy diet,
getting enough sleep, not working too much, and not having too much stress.

------
irundebian
Ross Anderson: Security Engineering - A Guide to Building Dependable
Distributed Systems

Matt Bishop: Computer Security: Art and Science

------
peteretep
Perl Medic is a phenomenal book about refactoring in the general case, through
the lens of Perl

------
skilesare
Chris Alexander’s Timeless way of building and Nature of order Robert Pirsig’s
Lila

------
jroes
Crucial Conversations

------
tinymollusk
You Are Not So Smart && The Halo Effect.

------
rookiemaverick
The lean startup and from zero to one.

------
uber1geek
1\. Peopleware

2\. Code Complete 2

------
rookiemaverick
Pragmatic programmer

------
g5095
The bible

------
thesmallestcat
Any, really.

