The programming books I cannot let go of
Over the years I collected many things. You could say that I collected collections. Belgo-french comic books, CDs, Vinyl Records, iPhones, Coins, computer keyboards, headphones, and computer books. I could be forgetting a few.
About a year ago I came to the realization that maybe collecting too many things is collecting too many things. I decided to “own less”.
I gave (and even trashed) entire collections of comic books. A few years ago I had trashed ALL my CDs, and I still remember how difficult that was and was not looking forward to throwing away all these books as well. Luckily I found a few people who were happy to take them off my hands. Not all books died in a dumpster and I’m thankful for that.
My computer book collection was another nightmare I did not want to deal with. I started by buying the digital copy of every single one, and the plan was to then sell the hard copies. Or give them away if no one wanted to buy them. Or dump them if no one wanted them for free.
And so they went. My modest collection went from over 100 computer books to just 6 (7 if I count different editions of the same book!)
These are the books I cannot let go of, even for money.
1. Extreme Programming Explained: Embrace Change by Kent Beck
Kent Beck introduces Extreme Programming, a methodology that emphasizes customer satisfaction, simplicity, and frequent communication. The book outlines key practices like pair programming, test-driven development, and continuous integration, promoting a more flexible and responsive approach to software development.
This book pretty much changed my life. In the late 90s, programming was a mess: waterfall, manual testing, cowboy coding, no customer interaction, and death marches. I had started reconsidering my life choices. Then I came across this book (and I recommend Editions 1 and 2, as they are quite different) and became hopeful again.
If you are a developer and use CI, Unit Tests, Refactoring, or even “sustainable pace”, you have this book to be thankful for. I no longer buy copies to give away to frustrated programmers, but I’m keeping my 2 copies!
2. Structure and Interpretation of Computer Programs by Harold Abelson and Gerald Jay Sussman
This one, often referred to as SICP (say sick-pee), is a classic in computer science education. It offers a deep dive into the fundamental concepts of programming. Abelson and Sussman use Scheme, a dialect of Lisp, to teach important programming paradigms and theoretical foundations.
As far as I am concerned, in this book the authors cover, even invent most things that define “computer science”. Topics like recursion, abstraction, garbage collection, algorithm efficiency, and more, are all explored in depth. For those willing to invest the time, it's an incredible journey into the essence of programming, especially when paired with the lessons captured on video here.
3. Introduction to Algorithms by Thomas H. Cormen, et al
The definitive book on algorithms. The authors cover topics like data structures, sorting, searching, and graph algorithms. The book has detailed explanations, and rigorous mathematical analysis, making it a must for students and professional programmers alike, even if it can be a little overwhelming for beginners.
Nonetheless, it's a must-have reference for anyone serious about understanding and implementing algorithms. I had 10 or so books on algorithms, and this one is the only one I can’t part ways with.
4. The Mythical Man-Month: Essays on Software Engineering by Frederick P. Brooks Jr.
The book is famous for Brooks' Law: "Adding manpower to a late software project makes it later."
This was true in the 60s and continues to be true today. It even comes with a mathematical formula to justify the law. Yet, more often than not teams add people to late projects in the hopes of finishing on time.
This central idea challenges common misconceptions in software project scheduling and resource allocation. Brooks draws from his experiences at IBM to discuss the complexities and pitfalls of large-scale software development. He advocates for small, sharp teams and emphasizes the importance of good design and clear communication. It isn’t a book on agile, as it was released almost 30 years before agile was coined, but the agile ideas, certainly the mindset, are all there.
This is a must-read for understanding the human element in software development and for anyone involved in managing complex projects.
5. Peopleware: Productive Projects and Teams by Tom DeMarco and Timothy Lister
"Peopleware" focuses on the human side of software development. It argues that the major issues of software work are not about technology but about managing people and teams.
"The major problems of our work are not so much technological as sociological in nature."
Still true.
The book covers topics like team dynamics, office environment, and the psychology of working in teams. DeMarco and Lister emphasize that successful projects are the result of nurturing a productive and healthy work environment. They provide practical advice on how to create a team culture that fosters creativity and productivity.
The book was published before Extreme Programming and other pre-agile literature, and I like to believe that it laid out the path for agile. Where XP and Scrum, for example, emphasize “how” to work, Peopleware made the point of
”why” a radical change was necessary. He anticipated agile.
It's a timeless guide that continues to offer valuable insights into the management of software teams.
6. The C Programming Language by Brian W. Kernighan and Dennis M. Ritchie
If I remember correctly this was my first computer book. The book that made me transition from being a “hacker” to becoming a “software developer” (the engineer bit came later)
"The C Programming Language" by K&R, is the definitive guide to the C language, C’s creators. It covers fundamental concepts like data types, operators, control flow, and functions, along with the standard C library. K&R is not just about syntax; it also teaches good programming practices and provides a deep understanding of how programs interact with hardware.
While the book is compact, its content is dense, and some beginners may find it challenging. But for those looking to master C, like me at the beginning of my career, K&R is an indispensable resource.
It remains one of the most influential programming books ever written.
How about you, what book or books can you not let go of? Programming books or not! I would love to hear your stories.









Reading The C Programming Language is probably the most important thing that ever happened to me.
https://www.raggedclown.com/2010/04/11/it-changed-my-life-book-four/
XP Explained ruined software engineering for me. I blame Julio.
https://www.raggedclown.com/2023/11/20/it-changed-my-life-book-five/
I've read all the others too, of course. And loved them. I didn't know I had been quoting Peopleware for 20 years.
I got rid of most of my books when I left America and I only keep books that I love now. I have several hundred still. God knows what will happen to them when I am gone. I don't know anyone else who reads books.