“Not all readers are leaders, but all leaders are readers.” –Harry S. Truman
It’s been said that most programmers read less than one professional book per
year. I get it. Books about programming can be have short shelf lives, as well
as be expensive, hard to find, and challenging to read.
But in my experience, great programmers have read a lot of them anyway. There
are concepts defined in classic programming books that are ubiquitous in the
field. When you read those books yourself, you absorb those concepts. Or at
least develop great critiques of them.
Some of these books in this list are programming classics, while others focus
on teams, management, communication, and ethics. I’ve broken the list
accordingly into two categories: code and culture.
I will update and edit this list over time with new books I discover.
- Ball, Thorsten. Writing An Interpreter In Go. I don’t think everyone should
read this book. However, understanding the components of a programming
language has been indispensable to me. A wise idea in programming is that you
should strive to understand ‘one level below’ where you work. One level below
writing in a high-level language like Go is the subject of this book. You
learn via a hands-on, test-driven Go project.
- Beck, Kent and Andres, Cynthia. Extreme Programming Explained: Embrace
Change. XP informs so much of modern software development. I revisit this
book often to mine for techniques and inspiration.
- Hoover, Dave and Oshineye, Adewale. Apprenticeship Patterns: Guidance for
the Aspiring Software Craftsman. Advancing from entry-level requires time
and a strategy. This book will help anyone create a winning strategy.
- Hunt, Andrew and Thomas, David. The Pragmatic Programmer: From Journeyman to
Master. This is a broad survey of the techniques every programmer must know,
described in useful metaphors. An alternate title could be “How programmers
solve problems in the real world.”
- Krug, Steve. Don’t Make Me Think: A Common Sense Approach to Web Usability.
Good user interfaces ask their users to make very few arbitrary decisions.
- Metz, Sandi. Practical Object Oriented Design in Ruby. I think this is the
defining introduction to Object-Oriented Programming, and required reading
for any Rubyist. Ruby is so readable and her examples are so clear that you
could probably pick this up without knowing any Ruby.
- Shaw, Zed. Learn Ruby the Hard Way: A Simple and Idiomatic Introduction to
the Imaginative World of Computational Thinking with Code. This was my first
Ruby book. I wish that Zed’s ‘type it, then understand it’ approach was more
common in programming tutorials. Computers are understandable, and the sooner
you realize that, the faster you will become the kind of programmer who can
write a tutorial.
- Simpson, Kyle. This & Object Prototypes. Succinctly explains some of the
- Carr, Nicholas. The Shallows: What the Internet Is Doing to Our Brains. A
detailed account– good, bad, and ugly– of what we programmers are building
- Ford, Martin. The Lights in the Tunnel: Automation, Accelerating Technology
and the Economy of the Future. A preview of the future of work in the face
- Godin, Seth. Linchpin: Are You Indispensable? Makes the argument that as
more work, including programming, becomes automated, the professionals who
will stand out in the future will be those who’ve mastered soft skills like
authenticity, passion, and communication.
- Godin, Seth. The Dip: A Little Book That Teaches You When to Quit (and When
to Stick). Starting a project or working for a startup both require an
important ability: knowing when to lean in and when to walk away.
- Isaacson, Walter. Steve Jobs. A gripping biography of a technology icon. I
can’t think of any person who better embodied product vision.
- Lanier, Jaron. You Are Not a Gadget. This is the first book that made me
think critically about technology, and led me down a path to considering
programming as a career. An impassioned plea for a better internet.
- Newport, Cal. So Good They Can’t Ignore You: Why Skills Trump Passion in the
Quest for Work You Love. Makes the case that the passion we chase as
professionals only comes when we have first put in the work to be
- Swartz, Aaron. The Boy Who Could Change the World: The Writings of Aaron
Swartz. Thoughtful essays about technology and ethics from one of the Web’s
pioneers, gone too soon.
- Weinberg, Gerald M. The Secrets of Consulting: A Guide to Giving and Getting
Advice Successfully. Not just for consultants, but anyone who would like to
influence a technical organization.
Please reach out if you have any suggested reading for me. I’m always looking
for new ideas to consider. I’m also writing a similar long-running post on
essays that have influenced me. I
recommend that if you prefer shorter-form ideas.