What are your favorite books on programming?

The Algorithm Design Manual by Steven Skiena

This is my goto reference for data structures/algorithms. Includes “The Hitchhiker’s Guide to Algorithms”, a comprehensive collection of practical examples.

His free video lectures on the topic are also great!

5 Likes

From the Books already mentioned I enjoyed:

  • Pragmatic Programmer
    Not sure if it offers that many values for new programmers today but it was the first book that I read on programming and I think it taught me valuable lessons.
  • Clean Code
    I’m a bit conflicted about the book because I think Robert C. Martin is a bit dogmatic with his style and it’s not the end all be all the he claims it to be, but I think my programming style is still heavily influenced by his thinking.
  • Practical Object Oriented Design in Ruby by Sandi Metz
    POODR was such a joy to read, one of the books that sparked my joy for programming at the time. I’d recommend it to anyone somewhat familiar with Ruby that wants to learn about the Small Talk school of OO.
  • Eloquent Ruby
    I can’t remember a lot about this book, just that I had a great time reading it.

Books not mentioned so far:

  • The Little Schemer
    The “The Little X” book series has a really nice didactic style, showing you one column with a questions and providing the answer in the other column (you’re supposed to hide the column until you think you found the answer, of course). I think it’s good book to get more comfortable with recursion. I probably should reread as I was still quite new to Lisp when I first read it.
  • Effective Java by Joshua Bloch
    One of the evergreen / more or less timeless Java books, but still only interesting if you’re programming in Java… Joshua Bloch lead the designed of the Java Collections package (and quite some more) and shares 90 items / rules that teach you how to effectively use the Java language and it’s standard library.

Honorable mention for “What Every Programmer Should Know about Object-Oriented Design” by Meilir Page-Jones, as it introduces the concept of Connascence. The book was written before UML won the struggle for modeling language dominance so it’s kind of hard to get into nowadays. You’re probably better off by reading about connascence on https://connascence.io/.

3 Likes

+1 for Pragmatic Programmer and some parts of “Clean Code” (not endorsing Uncle Bob as a person though)

BIG +1 for “Eloquent JavaScript” (free book) for learning JavaScript basics.

Also “The Linux Command Line”(free book) was really helpful for me to understand the basics of what’s actually going on there.

  • (✚ 1) The Pragmatic Programmer
  • (✚ 1) Domain Driven Design (by Eric Evans, not Martin Fowler. Though he wrote the Foreword :see_no_evil:).
  • (✚ 1) 99 Bottles of OOP (The 2nd edition includes JS and PHP)
  • Practical Object-Oriented Design
2 Likes

John Resig’s Secrets of the Javascript Ninja, second edition
Great book that taught me a lot, read it twice.

1 Like

on my side I wish I read this one earlier in my career. I found it to be a very very good book about TDD and practices like that. Agile Technical Practices Distilled

and the one about refactoring-guru I found it very nicely explains the different design patterns.
Dive Into DESIGN PATTERNS

Domain Driven Design is actually by Eric Evans, not Martin Fowler. And I agree that it is not the easiest of reads, though its content and the concepts it exposes is immensely useful.

I have found Vaugh Vernon’s DDD Distilled and Implementing DDD much easier and enjoyable to read.

2 Likes

Anything by Robert C. Martin, Martin Fowler, Kent Beck, Mark Seeman, Vaughn Vernon and Micheal Feathers. Many of which were already mentioned by others.

On top of that I really enjoyed these.

3 Likes

Plus one for Eloquent JavaScript. When ChatGPT or Stack Overflow fails me, I return to the book, study the fundamentals, and try to arrive to solutions on me own. I keep Eloquent JavaScript close at all times.

2 Likes

What do we do as programmers? We reduce complexity. We simplify. My favorite programming book did exactly this for me. The Programmer’s Brain by Felienne Hermans takes an approach to teaching programming that helps you learn how to think more like a programmer with indelible techniques meant to be applied directly to the problem solving part of your brain. Oftentimes requiring you to step away from the keyboard, grab a pen, and spend some time getting a deeper understanding of some complex code.

This book also taught me about Sajaniemi’s 11 Variable Roles which has completely changed the way I look at and think about code now.

If you read only one book on programming in your entire career, you could definitely do worse than this book.

5 Likes

How come no one has mentioned yet “SICP: Structure and Interpretation of Computer Programs” It is one of (if not) the best introductory book for programming. For those people that want to understand how things work from first principles, I would highly recommend this book. It makes it so much easier to learn any programming languages. I noticed a lot of people mentioning Crafting Interpreters, I am glad that book is on my reading list, and now because of the numerous mentions here I am looking forward to reading Regular Expressions as well.

2 Likes

I really enjoyed “The Little Schemer”, and think SICP is great. “Coders at Work” was also a fun read, particularly with the benefit of hindsight. I have also found a soft spot for introductory/gentler programming books: “A Data-Centric Introduction to Computing” by Kathi Fisler et al (amongst which is Shriram Krishnamurthi, one of the authors of “How to Design Programs”) is the kind of stuff I wish I’d read in college, along with Eric Normand’s “Grokking Simplicity”

3 Likes

I too think “The Little Schemer” is awesome.

1 Like

Hello everyone,
first comment here.

Since “SICP”, “Grokking Simplicity” and “Data-Oriented Programming” have already been mentioned, I’d recommend “Let Over Lambda”.
It’s quite opinionated, but nonetheless a very interesting read.

4 Likes

“Land Of Lisp” is also very funny and interesting.

And a very beautiful and at least to my knowledge very underestimated book is “COMMON LISP: A Gentle Introduction to Symbolic Computation”.

4 Likes

Not only this is a great book in its own right, it quotes and recommends many other good reads about software engineering. Throughly recommended.

1 Like

I can see the Lox language is written in C language. Is that correct ?

1 Like

As an Uncle Bob’s fan, “Clean Code” and “Clean Architecture” have been my #1 books in my career. But in my research to go deeper into OOP I found this very useful classic gem:

3 Likes

I’ve read and benefited from many books already mentioned but if we’re talking “favorites”

  1. The New Hacker’s Dictionary
  2. Masterminds of Programming - A collection of interviews with programming language designers
  3. The Elements of Computing Systems (also known as: Nand to Tetris)
  4. OpenBSD manual pages. I mean, not something I’d read casually for fun but wow are they good manual pages.
  5. UNIX: A History and a Memoir (Brian W. Kernighan)

And a bonus for the career The Clean Coder. It’s also by Uncle Bob, but not the same book as Clean Code.

2 Likes

Eloquent Ruby was memorable to me! The very book seems to be an example of idiomatic code in my view. Also, gave me a glimpse on the power of the Ruby interpreter.

1 Like