Hacker News new | past | comments | ask | show | jobs | submit login
Ask HN: Which non-programming books are a beneficial read for programmers?
209 points by tomerbd on May 22, 2018 | hide | past | favorite | 85 comments

Here are some books I listened to on Audible in the last year and a half, listing those that I enjoyed the most. Each of these books changed me in some ways, I never thought how much fun it is to listen to biographies and how many lessons there are.

0. Crucial Conversations: Tools for Talking When Stakes Are High, Second Edition

1. The Five Dysfunctions of a Team: A Leadership Fable

2. Elon Musk: Tesla, SpaceX, and the Quest for a Fantastic Future

3. Grit: The Power of Passion and Perseverance

4. Steve Jobs: The Exclusive Biography

5. What Got You Here Won't Get You There

6. The Power of Vulnerability: Teachings of Authenticity, Connection, and Courage

7. The Obstacle Is the Way: The Timeless Art of Turning Trials into Triumph

8. The Like Switch: An Ex-FBI Agent's Guide to Influencing, Attracting, and Winning People Over

9. Influence: The Psychology of Persuasion

10. Pre-Suasion: Channeling Attention for Change

11. Thinking, Fast and Slow

12. Mindset: The New Psychology of Success

13. Emotional Agility: Get Unstuck, Embrace Change, and Thrive in Work and Life

14. Originals: How Non-Conformists Move the World

15. Radical Candor: Be a Kick-Ass Boss Without Losing Your Humanity

16. Sapiens

17. The Everything Store: Jeff Bezos and the Age of Amazon

18. If you like space: Endurance: A Year in Space, a Lifetime of Discovery

19. Shoe Dog: A Memoir by the Creator of Nike

20. Quiet: The Power of Introverts in a World That Can't Stop Talking

21. Long Walk to Freedom: The Autobiography of Nelson Mandela

22. The DevOps Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations

> The Five Dysfunctions of a Team: A Leadership Fable

I need to give this a try again. When I originally read it, it was part of a team activity a decade ago and left unmoderated, so it devolved to everyone being at each other's throats by the end of the day.

Note that it is in "Business Novel" style. If you don't like that style, you should read The Advantage by Lencioni instead.

Did you manage to absorb the material from Thinking, Fast and Slow by listening to it? I tried to start reading it, went back over lines I didnt understand, reread chapters, and in the end gave up because it was too difficult.

I'd add two here both from Dale Carnegie: 1. How to Win Friends and Influence People 2. How to Stop Worrying and Start Living

Both of these books helped me immensely when I was down and I think DC's writing style (by examples) is what I found very useful.

I love 14. Different but equally interesting, you might like Superforecasting

Thank you for the list! I've read and enjoyed 6 of your top 10, so naturally you've now given me a great reading list for the rest of the year!

A classic that hasn't been mentioned yet is Doug Norman's "The Design of Everyday Things". My main takeaway 10 years after reading it is that a bad user experience, even one so subtle that the user doesn't notice, can usually be prevented by careful design.


This and The Inmates are Running the Asylum by Alan Cooper could go a long way to improving UI abilities, I think.

Inmates Running the Asylum was the book that changed my view on interfaces. Sadly, for some reason is not liked by many developers.

I recently read and enjoyed Orlando by Virginia Woolf. It tells the story of an English nobleman who lives for hundreds of years and accumulates a bunch of experiences. To me, its main point is about the fluidity of identity and what it means to age (or not). It's also just a fun and funny centuries-spanning story full of great sentences like these

"Memory is the seamstress, and a capricious one at that. Memory runs her needle in and out, up and down, hither and thither. We know not what comes next, or what follows after. Thus, the most ordinary movement in the world, such as sitting down at a table and pulling the inkstand towards one, may agitate a thousand odd, disconnected fragments, now bright, now dim, hanging and bobbing and dipping and flaunting, like the underlinen of a family of fourteen on a line in a gale of wind. Instead of being a single, downright, bluff piece of work of which no man need feel ashamed, our commonest deeds are set about with a fluttering and flickering of wings, a rising and falling of lights."

I'm not sure it's useful for programmers in particular -- maybe all this stuff about the ad-hoc nature of identity will help you choose what language to learn next or something :)

In what ways? From an ethical perspective, books like Orwell's famous 1984 are good reads that can help reflecting on privacy and its implications on societal and individual levels, helping decide on whether or not to participate in produciton of software that is antagonistic to data privacy. Also, Aprender a rezar na era da técnica of Tavares is a contemporary novel that can be useful in a similar vein. So also the Anarchist Banker of Pessoa. Maybe also the A Caverna of Saramago. All these books depict the clash of morality and modernity in some ways, and us as programmers are of a profession that is central to the change of times; thus, our perception of ethics is of immense importance to the furthering of the world.

P.S.: also, given many of us publish open source stuff and write blogs etc., reading some literature will always help regardless of whether the contents are relevant or not. I observe from various past threads and this one that the crowd here really likes sci-fi novels and self-help stuff, and also biographies to some extent; but the rest of literature is not as popular. Certainly many lack the time, but reading a 200-300 page novel in a week or two should still be possible even with a very tight schedule (hint: less driving and more public transport helps, if available).

"Never Split the Difference"[1] - A book on negotiation, which can be used at work or personal life.

[1] https://www.amazon.com/Never-Split-Difference-Negotiating-De...

Some books I enjoyed and which could be beneficial:

- Borges' Aleph, and his essays (for example Other Inquisitions). He was fascinated about concepts programming is famous for now, he would have loved recursion

- Mann's The Wizard And The Prophet. He uses the life of two highly influential scientists (Borlaug and Vogt) as exemplars for two ways of viewing progress, one highly focused on technological progress, one being sceptical of technological progress

- Wachter-Boettcher's Technically Wrong, about implicit biases in modern technology and how that excludes or mistreats people. Some good lessons if you want to start a company and get as many customers as possible ;) Similar book with more academic stringency: Weapons Of Maths Destruction

- Roman's Writing That Works, non-fiction/memo/email advice from big advertising guys, lots of good advice on getting your point across

- Fromm's The Art Of Loving & The Sane Society, two non-fiction books from a sociologist/psychologist on how to work on your relationships (i.e., love as a movie concept doesn't exist, it's mostly very hard work and self-critique), and how society as a whole has very broken goals. Becker's The Denial Of Death (on how fear of death is a major drive in life) comes from a similar place

- Wilson's How To Teach Programming - delves deeply into the psychology of learning and how to build stable communities, it's available for free so why not

- Statistics books are always good to mend your thinking! My favorite layman's introduction is Motulsky's Intuitive Biostatistics (no formulas, plain English), for a non-practitioner Wheelan's Naked Statistics is probably better

- Seth Godin wrote lots of good business books, pick one (I liked Linchpin)

- If you haven't read them yet, get the 'classics' of software management: The Mythical Man-Month, and Facts and Fallacies of Software Engineering

- Cuckoo's Egg is a marvellously fun non-fiction book about a programmer tracking a hacker in the 80s, one of the first international computer crime cases, featuring tons of fun low-tech hacks

I listen to books during commutes and errands, and give them a letter grade when I'm done. I read a lot of different genres as I believe there's value in all genres (and mediums too).

These are some of the books I've given an "A" over the last few years, roughly grouped by genre:


- A Short History of Nearly Everything

- Fabric of the Cosmos

- Dataclysm

- The Righteous Mind

- Merchants of Doubt

- Dead Wake

- Man's Search for Meaning

- Evicted

- The New Jim Crow

- Night


- We

- The Sirens of Titan

- Hyperion

- Stories of Your Life

- Frankenstein

- The Day of the Triffids

- Childhood's End


- The Stormlight Archives

- The First Law Trilogy

- The Lord of the Rings


- The Stranger

- Dubliners

- Things I've Learned from Dying

- The Things They Carried

- Cloud Atlas

- Stoner

- Pillars of the Earth

Thanks for the recommendation! I've heard so many good things about Malazan. I'm a big fan of the 'grimdark' genre, and Malazan seems like the quintessential series for that genre.

+1 for the Stormlight Archives I would add the rest of Brandon Sanderson Cosmere books:

Mistborn Trilogies Warbreaker Elantris etc.

Getting More: How to Negotiate to Achieve Your Goals in the Real World by Stuart Diamond[1].

I didn't actually enjoy reading it - it's written in a pompous, braggy way that struck me as over-the-top even for a business book. However, the negotiation and communication tools it explains have been really helpful both at work and in my personal life.

[1] https://www.goodreads.com/book/show/8095067-getting-more

Contrary to the self-help nature, "The Subtle Art of Not Giving a F*ck: A Counterintuitive Approach to Living a Good Life" has a set of somewhat structured ideas on how spending time/attention a bit more selective and sometimes going deep instead of broad gives you a better return on your efforts.

Say you're in a position where you can work on any aspect of a project, in any language, framework, SDLM, and with whoever you want. Some advice would be to learn new things all day long, but if you do that 100% of the time, you end up with a lot of nothing. Diversity is good, but not at the expense of in-depth knowledge, just like change is good, but change for the sake of change doesn't really do much by itself. Doesn't mean you should stagnate all development of course ;-)

As with all books on ideas and processes: it's just ideas someone else wrote, take what works, leave what doesn't work.

Anything and everything Gerald Weinberg has written. I particularly recommend 'Are Your Lights On?' as a place to get started, 'The Secrets of Consulting' as a steady companion, 'The Psychology of Computer Programming' as the perfect thing to read two-to-five years into your career, and 'Becoming a Technical Leader' when you're looking past individual contributor, but I do mean everything he's written. He's been thinking seriously and lucidly about people in programming longer than many of us have been alive.

BTW, his recommendation would be 'Alice in Wonderland', something he's mentioned using when teaching courses on software engineering.

"Seeing Like a State: How Certain Schemes to Improve the Human Condition Have Failed" by James C. Scott (https://www.amazon.com/dp/0300078153)

"Never split the difference" has made a huge difference for my communication style.

Reading that book represented a step change in my productivity, because I learned to communicate in a way that better prioritized my tasks. I've read it three times now.

I like that the techniques in that book work even if both parties have read the book -- especially if both parties have read the book.

Some psychological books teach a person to play psychological games, and if both parties have read the book, they both just play games and no communication actually happens. Not so with "Never Split the Difference", the book teaches that simply listening is one of the most effective yet difficult things you can do to get what you want.

"Pragmatic Thinking and Learning" by Andy Hunt


I found it tremendously useful both in my career (where I can legit say I'm pretty good) and with outside activities like karate (where I'm very early in the learning cycle). It's one thing to tell people they need 10,000 hours to be competent at something, but quite a lot more helpful to explain all the steps along the way.

Lila - "Enquiry into Morals" (R.Pirsig) .. "good" is a noun.. and MoQ in general, with all the orthogonal layers, and identity being the most basic characteristic of things

probably also C.N.Parkinson laws (of burocracy)... as computing is the ultimate burocracy.

and... Winnie the pooh, and the Little prince. aloud (to a kid probably). Really. esp. if u muse over what u just read aloud..

the little prince is really one of the best books I have ever read about enjoying life while subsequently understanding the decisions I make/Will make/Have made.

To be honest there's no telling what anyone means by beneficial, but the argument can (and has) been made that any fiction, especially character driven pieces, are good for building neurological processes; as the imaginative processes when reading this type of book not only "creates" worlds inside one's head, but also engages other, disparate portions of the brain, not typically used when reading text books. This type of reading, in turn, helps the user (in theory) more easily digest and retain information from text books. Almost like working out for the brain..... I'll try and find the study, when I get a chance and come back and put the link in. Sorry I don't have ready access to it at the moment, was just doing a quick read through at work =)

Crucial Conversations


If resolving conflict is a skill that you are weak in, this or any book that promotes growth in that area will lead to improved satisfaction on the job for both you and your colleagues.

Here's a few I enjoyed:

Soft Skills: The Software Developer's Life Manual

The Lean Startup

The Idea Factory: Bell Labs and the Great Age of American Innovation

"Drive" by Dan Pink (or his Ted Talk if you want the short version)


"Flow: the psychology of optimal experience" by Mihaly Csikszentmihalyi (or any of his other publications as they overlap a lot)

Understanding the psychology behind motivation and productivity is going to buy you way more than most productivity hacks IMHO, and even more helpful if you have to work with people.

"The existential pleasures of engineering" by Samuel Florman.


I would suggest "Zen and the Art of Motorcycle Maintenance" by Robert M. Pirsig.

"Never Split the Difference" by Chris Voss https://www.amazon.com/Never-Split-Difference-Negotiating-De...

Chris was an FBI hostage negotiator. His book takes you through some of his hostage negotiations and demonstrates his techniques.

As a software developer, I "negotiate" all day long from code reviews to getting a promotion. His advice has helped more times than I can count.

Polanyi's How to Solve It.

I really liked "The Effective Engineer" by Edmond Lau. Its not intended for starting your own company. But it has some good insight for doing good in your job and how to grow as a software engineer. https://www.amazon.com/Effective-Engineer-Engineering-Dispro...

Great suggestions so far. This is really an untapped genre in science fiction. Post-Internet Literature. Examples that come most readily to mind are things like Flatland, The Machine Stops, The Last Question, Arrival, and The Three Body Problem. Perhaps some of the more obscure "recursive" and "ergodic" fictions such as House of Leaves. But I dare say the great "coding" novel has yet to be written ;)

Soft Skills: The software developer's life manual is a unique guide, offering techniques and practices for a more satisfying life as a professional software developer. https://www.amazon.com/Soft-Skills-software-developers-manua...

In that section, would like to add recommendations for:

- "Being Geek: The Software Developer's Career Handbook" https://www.amazon.com/Being-Geek-Software-Developers-Handbo...

- "Team Geek: A Software Developer's Guide to Working Well with Others" http://shop.oreilly.com/product/0636920018025.do -- Software engineering teamwork a-b-c. I'd love to work on teams where everyone has read this one.

[edit: 2nd edition of "Team Geek" is titled "Debugging Teams"; having read both, no difference which you get]

Two that I particularly liked:

1. "How to win friends and influence people" - Dale Carnegie

2. "The seven habits of highly effective people". - Stephen Levy

The Systems Bible


A great book to understand the general workings of systems, be they technical or human (including companies, governments, ...)

Very useful to go from plain programming to actually identifiying problems and solving them efficiently.


Seconded again. Fundamentally changed how I think about systems, and makes me smile every time someone says, "We need a new system for x!"


It’s got a little bit of tech, but I can’t recommend “The Soul of a New Machine” (Tracy Kidder) highly enough.

A basic book on finance or accounting to help you scan over the Annual Reports of companies. Their write-up on finance, product strategies, marketing, sales tactics, pricing, compensation, company valuation, etc can familiarize you with many aspects of creating a viable company on your own.

Tractatus Logico-Philosophicus

Is this serious? I'm hard put to imagine anybody who doesn't get paid to do philosophy (or at least have regular access to such a person) getting anything out of this book.

I think there's plenty useful to meditate on in the Tractatus, 6.0+ has most of the exciting stuff but it's worth working through to get there.

But at the same time I totally get what you mean.

Good man.

How about Mary Shelley's Frankenstein; or, the Modern Prometheus?

The SJW Attack Survival Guide.


Ask Roberto Rosario why.

The world's worst satire?

Nope. Read it carefully. It could save your career.

Pretty much the same books that are beneficial for non-programmers to read.

The Principles of Product Development Flow: Second Generation Lean Product Development http://amzn.to/2DK6kVP

My top 3:

- The Mythical Man Month

- Peopleware

- Good Strategy Bad Strategy

Which programming books are actively harmful for developers? I'd put the "Gang of Four" Design Patterns book in this category.

Peeking at your website, I suspect that the reason you don't like the GoF book, or perhaps design patterns in general, is that they are aimed at an audience solving different problems than those in your work. For developers doing application level development, the GoF book, while a bit dated, is useful. More generally, this kind of systematic approach ("Where have I seen this pattern before, and is it applicable to my current problem?") is IMHO, a good thing, as it brings structure to the thinking process.

I find it useful for labelling things, then its simple to remember the last time you did the same in a particular environment, assess wether or not the pattern is useful for solving the problem and either reject or use it.

Technically not programming. TCP/IP Illustrated by W richard Stevens is a classic that explains, in great detail, how networking works.

"Getting to Yes" and "Getting Past No".

"A Pattern Language" by Christopher Alexander.

"The No Asshole Rule".

"How to Lie with Statistics".

Algorithms to Live By. It's a very good book on how computer ideas work in the real world, and vice versa.

"Tools of Titans" by Tim Ferriss A must-read piece for wannabe achievers like me

"the moon is a harsh mistress" and other things by Heinlein

Crossing the Chasm, for anyone trying to launch a product or startup.

The Elements of Style, 3rd ed., by William Strunk and E. B. White

7 Brief Lessons on Physics, Carlo Rovelli

Don't Make Me Think by Steve Krug

Hackers and Painters by pg himself

The Goal by Eliyaho Goldratt

Eliyahu (I only realized the typo because I have it sitting right here). I've read The Phoenix Project which is an IT/software/devops analog of it (covering the same topics, but for those fields rather than manufacturing as the focus). I really liked it (the writing was average, but it was a great way to introduce the concepts), and stumbled across this in our (undocumented, no one knows what books are there) office library. I've read the first 1/4 and I'm going to put it on my manager's desk once I'm done.

For those curious what this book (and the one I mentioned) is about: Theory of constraints. But it's not just that. It goes through, in the form of a novel, the experience of a plant manager (VP of IT or something in Phoenix Project) as they go from clusterf--k mess towards a leaner, tighter, functioning plant.

An important lesson to take away (besides ToC itself) is that you have to make that lean enterprise the target. You cannot just, from day 0 of your clean up, rearrange everything and expect positive results. It's a growth process, a process of continuous improvement. If you have any role in project management, and have any desire to clean up how your office or enterprise functions, these are really good books to help along the way.

The essentials, looking at my non-CS shelves:

* "Alice in Wonderland", Carroll

* "Gödel, Escher, Bach: An Eternal Golden Braid", Hofstadter

* Either "His Dark Materials", Pullman; or "Illuminatus!", Shea and Wilson

* "The Hitchhiker's Guide to the Galaxy", Adams (all of its sequels are also good)

* "Zen and the Art of Motorcycle Maintenance" and "Lila", Pirsig

* Either "Watchmen", Moore and Gibbons; or "1984" or "Animal Farm", Orwell

* "Neuromancer" or "Pattern Recognition", Gibson

Be wary of anybody who recommends self-help, attitude improvement, psychology, business/management, or similar genres.

Also, I notice that some folks have recommended the official Steve Jobs biography. From my biography shelf, I humbly recommend instead "iCon", by Young and Simon, which is unauthorized and much more detailed.

> Be wary of anybody who recommends self-help, attitude improvement, psychology, business/management, or similar genres.

This is a fairly broad rejection of multiple genres. While I agree that there are bad eggs in all of those categories (some moreso than others), there also is value to be found, and wariness of someone simply for recommending a book from one of those categories sounds overly harsh and dismissive.

Not to put words in someone else's mouth, but isn't the advised wariness targeted at the recommenders rather than the genres?

I like your train of thought, but the logic that follows is one can not enjoy or recommend self-improvement books to one another lest they be lumped in with some group of undesirables .. which is silly, as there are many beneficial books in the genre.

After all, not everyone is born with a perfect understanding of social science and behavior, especially many programmers.

I agree. My former mentors and colleagues need to understand more psychology and how to improve themselves, because they tore our team apart and cost themselves and all of us incredible opportunities.

A good programmer isn't just one who can program. They must be willing to accept the fact that they aren't a special snowflake and that great achievements come from sharing and teamwork, having constructive and wholesome paradigms, etc.

I have been building world class e-sports teams for two decades. It breaks my heart for the future to see so many well educated folk ripping into eachother and themselves in these ways.

Assuming you already have a fairly well-defined set of values and a personal philosophy, the next most useful genre by far is psychology. It's not even a close contest.

As for self-help/attitude improvement, it's only useless if you don't already know what science suggests are good habits and behaviors. From there, it's the process of integrating those into your life that becomes critical.

Speaking as someone who chronically lacked discipline, which then translated into a lot of mistakes, among the most important things a person can understand is the value of positive habits and behaviors, compounded over a long time period. Habits and behaviors are what drive wellbeing across a variety of different dimensions: diet, exercise, learning, growth, experience, socialization, etc. They are the principal foundation of a happy life, and most people never even come close to appreciating their full importance.

All that said, I'll be the first to admit that the self-help genre is typically more about dopamine hits and quick sales than real results.

I agree with your whole list except for the fact that I have not read neither "His Dark Materials" nor "Illuminatus!", so thank you for that :)

What I want to add is that while "Gödel, Escher, Bach" is great, I found "I am a strange loop" makes a better point. I'd say that the two books from Pirsig, plus "I am a strange loop" helped me form a lot of my personal philosophy.

Godel, Escher, Bach definitely to see how nearly everything can be made into symbols which computers can manipulate, eg how music is maths etc

Came here to recommend Zen and the Art. Its either a book that changes your life or utter garbage.

"Debugging Teams", helps me understand how to operate as a member of a software team.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact