What are your favorite books on programming?

I am not an old guy, but started the in the industry fairly early and educated myself as best as I could with professional books.

Back in the days I’ve read Code Complete 2 and it was a good starter.

Another excellent starter was Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development Hardcover by Craig Larman. (there is newer edition, but back than I’ve read that one).

I found GRASP Patterns (specially Low Coupling and High Cohesion) far superior to any SOLID ideas.
Fast forward 15 years later when I read Clean Code and found the book very basic and idiotic. I think Uncle Bob is overrated.

Going back to the early 2000s, I’ve read the GoF and “Pattern-Oriented Software Architecture” books. Back then I was smitten with the ideas presented there. I even got to meet some of the writers of those books.

Somewhat later in the early 2010s I found those books (the POSA’s) more “Not Applicable” than useless or wrong or complicated. Regarding design I reverted back to my early university instincts, back to the 90s. I found out that is actually called Domain-Driven Design (DDD).
I also became disillusioned by certain ways of working. I did not gave up and discovered Behaviour-Driven Design (BDD) own my own. Later I found books about it.

One can screw up in many ways:

  1. Hack and design spaghetti mountains
  2. Pompously build well crafted and architected mountains that nobody needs. Or just need a small functionality and the rest becomes cancerous growth.

Getting the requirements right became the most important thing for me. Latest books that I found excellent on this topic:

  1. User Story Mapping: Discover the Whole Story, Build the Right Product by Jeff Patton (Author), Peter Economy (Author, Editor) - Favourite book.
  2. Writing Great Specifications: Using Specification By Example and Gherkin by Kamil Nicieja
  3. Behavior-Driven Development with Cucumber: Better Collaboration for Better Software by Richard Lawrence (Author), Paul Rayner (Author)

The thread is about “best books on programming”. I’ve ended up ranting. :slightly_frowning_face:

Here in the end I will share a good technical book about programming:

Previously I found TDD as trivial (BDD and DDD is my main thing), but this book showed how to influence design with the right TDD (Detroit style of course :slightly_smiling_face:). Note: One can apply the concepts presented in the above book in any language not just C#.

9 Likes

Thanks so much for posting such a comprehensive and brilliant list of information on resources to delve into.

I am mid-way through the ‘Headfirst Go’ and really enjoying it. It’s been really good to build up from the ground up.

2 Likes

I recently enjoyed the recently released 2nd edition of Code: The Hidden Language. It provides a nuanced but accessible introduction to how computers work from the bottom up from and how code plays into it, highlighting Boolean logic, logic gates, semiconductors, and finally software. It made a few things click for me that were only semi-articulated before.

4 Likes

Of all the programming books I’ve read, two came to mind immediately because they were an absolute joy to go through:

  1. Eloquent Ruby by Russ Olsen - which I think would be an interesting read for anyone interested in OOP, even if they have no intention of ever using Ruby.
  2. Deep Learning with Python by François Chollet - which is by (very) far the most approachable book about DL I’ve ever come across.

I just started reading O’Reilly’s Programming Rust: fast, safe systems development and so far it is also extremely pleasant to read.

9 Likes

Crafting Interpreters is an AWESOME book. One of those books that can get you excited about programming again. I think an excellent final exercise for any language track would be to implement tree walk interpreter, maybe for the Exercism programming language haha. Something simpler than Lox though.

Also agree with Martin Fowler’s Refactoring. Got my copy from one of those take a book leave a book boxes not knowing how popular it was. Great read.

I’m also a rustacean so I’d be remiss if I didn’t mention Jon Gjengset’s Rust for Rustaceans. It’s an especially useful book for learning how to do effective API/Library design in Rust.

2 Likes

Totally agree with this!

I love this. @taiyab has been wanting a “final boss” style exercise for ages - maybe this is the one! If you fancy starting a new topic on this (so we don’t derail this one entirely!) then I’d be up for chatting about it more. I bet @ErikSchierboom and @kytrinyx would love this too :slightly_smiling_face:

Oh, and welcome to the forum :slightly_smiling_face:

4 Likes

Some of the books I wanted to mention have already been suggested by other fellow devs, so let me offer a suggestion from my country.

As an indian who started programming in my early school days, I found Let Us C to be a helpful entry point to the world of C programming.

What surprises me is that the book has been revised many times (running 18th edition now!) and with many readers in the Asian geographies. I think this book is translated to many regional languages, thereby making it easy to jump start programming without the knowledge of English language.

Kudos and mad respect to YPK, the author. :saluting_face:

3 Likes

Two really good JS books that I gladly recommend to anyone to read are:

  • Eloquent JavaScript which was an amazing starting point for me to learn JS “properly”. And this is the first programming book I read.
  • JavaScript - The Definitive Guide (7th edition) - which I consider to be the JS Bible :smiley: I have it next to my desk and open it regularly.

I’m currently reading the The Rust Programming Language. I think this is an insanely well written educational book. Very easy to follow, and makes you really excited about Rust. It also mentions some basic topics on Systems Programming langs that I didn’t know about, but can do the research after this.

4 Likes

Despite having some JS experience, I’m going through JavaScript - The Definitive Guide to fill my knowledge gaps and I quite like it so far too. I’m finding the pace really good, in that introduces some concepts briefly early and then expands on them later.

2 Likes

I’ve been reading Modern Software Engineering by David Farley with some friends and would highly recommend it. I’ve been on the Uncle Bob train most of my career, but recently have been straying away from his work. I think he has essential concepts to share, but there is a deeper conversation past his books I think David Farley captures well. It’s been really helping me put my career and thoughts on programming into a new perspective.

6 Likes

The last book I read which is definitely in my top list : A philosophy of software design by John Ousterhout. It deals with software complexity and is not language specific. It is concise and easy to read. It’s the one I always carry.

I also love Clean Code which was very inspiring and helped me write better, more readable code I believe.

Last one I’d say is Domain Driven Design by Martin Fowler. I must admit that as a non native English I found it not so easy to read but I discovered a great programming paradigm which I felt very in line with.

4 Likes

The Structure and Interpretation of Computer Programs, anyone?

8 Likes

That’s the book that’s responsible for introducing me to Lisp, and leading me to learn Clojure. But a couple of things happened since then that make that seem like an accident of history unlikely to be repeated:

  1. The famous MIT course responsible for the book switched from using Scheme to Python
  2. The SICP JavaScript edition was released
1 Like

I’m kind of surprised no one has mentioned The Art of Computer Programming, but perhaps I shouldn’t be, because it’s not really a book, it’s an encyclopedia (written by one person over like 40 years) that one does not simply read…

…unless they’re in a situation like I was last Summer, away from civilization recovering from Covid, without access to the internet.

No, I didn’t read the entire thing. But I developed a very keen appreciation for pseudorandom number generators and sorting algorithms.

Oh, and I think it’s the reason for LaTeX… I heard the legend that when Donald Knuth saw the first printing he was appalled at how terrible the mathematical expressions looked, and decided to, as one does, stop everything and design an entire typesetting system

6 Likes

I found Introduction to Computation and Programming Using Python: With Application to Understanding Data to be a good book for a beginner to get comfortable with Python and also programming concepts.
The Go Pogramming Language has been a good primer/reference to get started with Go.
I’ve also glanced at JavaScript - The Definitive Guide and completely agree with what has been said above.

4 Likes

I wanted to read this but it is a bulky one. I’d like to know if it is worth spending time.

Also I bought The Linux programming Interface a while ago with grand ambitions of learning C on the side and eventually tinker with driver code! With Go and Rust seen as successors, I am not sure if I should continue on that path.

I thought someone would have mentioned Why’s poignant guide to Ruby already, but no foxes :fox_face: :man_shrugging:

3 Likes

SICP is one of my favorite books ever, but I’m not sure I’d recommend it to the average developer. Other fans of it might be angry at me for saying this, but unless you are into Lisp, and specifically Scheme, and/or very adventurous, I think your time would be better spent checking out some of the others in this thread! Just my two cents.

FWIW, even Rich Hickey (the creator of Clojure) isn’t a fan, and even wrote a piece saying something to the effect that its value doesn’t really transfer beyond its historical context.

EDIT: I found it in case anyone is curious: Rich Hickey on SICP and Clojure - NeoWiki (7thgen.info) It was a response to a question someone asked about whether it would help them learn Clojure.

3 Likes

I like the Headfirst series. I’ve read Headfirst git and Java, both very good books.

3 Likes

@a89529294
I agree , I find the Head First book about JavaScript very enjoyable to read from page 1 till last page

1 Like