What are your must-read programming books?

Ben Halpern Jan 11, 2017

Robert C. Martin
Clean Code: A Handbook of Agile Software Craftsmanship

I second that

Really good book

I fourth that

I third that.

TDD by Example, by Kent Beck. This is the one programming book I go back to every few years, and even though it's not a huge book, I always come away with something new.

Refactoring, by Martin Fowler. Though I don't revisit this one quite as often (except maybe to look up one of the less common recipes, I think it's still a book ever programmer should read at least once.)

Both of them are excelent pieces.

Essential JavaScript - Solid introduction to JavaScript and common programming principles
Secrets of the JavaScript Ninja, 2nd Edition - Function context, closures, ES6, oh my!
Learning JavaScript Design Patterns - Because fundamentals are good, and you should work on them.

The Swift Programming Language (ie: the docs!) - It's literally the docs. That's how conversational the documentation for Swift is; they took it and put it in a book and it actually reads like one. 10/10 pretty much my only resource for learning Swift.

Learn Python The Hard Way - It's. Uh. Amazing.
Learning Django Web Development - Django documentation is great tbh, but it can be a little overwhelming given how deep every section goes. This book is a solid way to gain clarity on some of the verbose sections in the documentation.

Great list 👏

Written in order of recommendation per topic. Eloquent JS is a great lead-in into SotJS (which has become my favorite JS book), and once you've got a firm grasp on those core concepts understanding the various implementations of modules and stuff is covered pretty well in Learning JavaScript Design Patterns. Swift docs genuinely are as awesome as I hype them up to be.

Python, if Learn Python the Hard Way is too much, 'Automate the Boring Stuff w/ Python' is more interactive.

You don't know JS by Kyle Simpson
Eloquent Javascript
Professional JavaScript for Web Developers by Nicholas C Zakas

Between Eloquent Javascript and Professional JavaScript for Web Developers, which should I read first?

Eloquent Javascript

Software Engineering by Ian Sommerville. This is not a book about writing code. It is instead about all the non-technical aspects of programming, such as the trade-offs of code reuse, managing risks to projects, dealing with complex "socio-political systems", and handling ethical dilemmas. It's a college textbook but it has practical advice for dealing with real-world situations, and it is the first book that I read that made me scared for programming. Even the textbook questions at the end of each chapter can give me pause.

Oh, this sounds great.

I am on my second, dog-eared copy of The Pragmatic Programmer by Andrew Hunt and David Thomas. Cannot recommend this book enough as a blueprint for your minimal skills base

I second that. This is probably my favorite book about software.

This one is great for any developer

For testing: the RSpec book. I know it's old and dated, but nothing made it click for me like that book did.

For understanding programming: the Elements of Computing Systems. Amazing book (people are calling it "Nand to Tetris" these days). That book is the reason I have understand hardware (the big patterns, not like all the nuances of modern complex hardware).

For Ruby: The Pickaxe and Ruby Under a Microscope. The pickaxe is shockingly practical. I wasted so much effort trying to learn stuff that was in that book. A lot of it is just docs, too, which makes it thick and scary, but the first half is a wonderful collection of super practical information. Ruby Under a Microscope is basically "how does Ruby work", pick that one up if you're writing Ruby based on syntactic patterns you've seen and you want to actually understand why anything does what it does.

The book Absolute Java was wonderful when I read it, too. At that time, I was very new, so their lengthy explanations of how things worked were very useful and enlightening. Now it's an obvious / boring read for me, but I'm not its audience any more. So if you've got less than a year or two of experience, this book does a good job of helping you understand how language level stuff are implemented. If you've never worked with a typed language before, it's also worth reading for that reason (any typed language will be good for your programming brain, it will make explicit and obvious a class of errors and ways of thinking that dynamic languages leave implicit).

I'm sure there are others, but my books are in storage.

Definitely all of the following:

  1. Clean Code by Robert Martin
  2. Design Patterns Explained by Shalloway and Trott
  3. Joel on Software by Joel Spolsky

My "good to read" list includes:

  1. Working Effectively with Legacy Code by Michael Feathers
  2. More Joel on Software by Joel Spolsky
  3. Smart and Gets Things Done by Joel Spolsky
  4. Design of Everyday Things by Donald Norman
  5. Return on Software by Steve Tockey

Release It! by Michael T. Nygard - lots of solid advice on building robust systems.

Effective Java - does what it says on the tin.

Paradigms of Artificial Intelligence Programming by Peter Norvig - the content is out of date, but one of the best books on programming I've ever read.

Essentials of Programming Languages (1st edition) by Friedman, Wand and Haynes. My first introduction to Scheme and Lisp many years ago and it blew me away.

Concepts Techniques and Models of Computer Programming - Peter Van Roy and Seif Haridi. Comprehensive coverage of pretty much every programming paradigm ever invented. It's a big book!

Other good older books that I learned a lot from: ML for the Working Programmer, The Craft of Prolog, Practical Programming in Tcl/Tk.

I really loved Steve McConnell's Code Complete

+1. Such a great book!

"Dependency Injection in .NET" by Mark Seemann. It teaches you so much more than what the title says.

"C# in Depth" and "C# in a Nutshell" are very good.

As a non-techincal book but excellent nonetheless, "The Clean Coder" by Uncle Bob.

+1 for DI in .NET. That book helps me deal with coworkers who have learned one of the many DI antipatterns and misconceptions. Must read for anyone who is learning about DI, no matter what language they use.