Books every programmer should read

“Best programming books” and similar queries are something that every programmer has searched for. In fact, Google Trends shows us there is no decline in those searches.

In his blog, Pierre de Wulf, “Tech Explorer, Python Lover, and Indie Hacker”, explores the subject by scraping web pages, forum posts, and discussions and digests it as a list of most recommended programming books. Here are some of them:

The Pragmatic Programmer by David Thomas & Andrew Hunt

The first one on the list is a 20th anniversary edition. That would mean people were programming 20 years ago(crazy, right?). But the problems that developers faced 20 years ago and now are still the same. Those are not the technical issues, specifics of languages or tools, but the way a programmer does his work. To quote the book: “Programming is a craft”. And every craft has its tried and true practices, techniques, and habits that transcend years, technologies, and paradigms. Sure, one can try to acquire that knowledge by trial and error, or maybe learn it from the generations of masters before them.

Refactoring by Martin Fowler

The second entry in our list is another reprint. In this case, it is about a tricky subject of refactoring.
To quote the author: “Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior.” So it’s about changing existing code, right? But why would we change our code if it was working? Maybe we inherited a legacy project. Maybe the user requirements have changed. And just maybe, our code wasn’t really that good, no matter the reason. This book is a catalog of refactoring techniques and of “code smells” which point to code segments that may require change and how to change them. The second edition improves on the first, changes some of its chapters and instead of Java, it shows its examples in JavaScript.

Head First Design Patterns by Eric Freeman / Bert Bates / Kathy Sierra / Elisabeth Robson

A part of Head First book series, which features a distinct writing style, where a complex topic is explained using a conversational form, redundancy, and multiple learning approaches that activate both sides of your brain.

This edition covers an important topic of Design Patterns, which are considered as general, reusable solutions to commonly occurring problems in software design. There are even patterns for specific architectures such as microservices.
Some consider it as an entry-level book to the subject, while Design Patterns: Elements of Reusable Object-Oriented Software, mostly referred to as Gang of Four book as an homage to its authors, is a defacto reference guide.

In contrast to Gang of Four, it slowly explains the concepts with lots of examples, situations, and even comics, with its examples written in Java.

We do recommend starting with Head First and combining it with Gang of Four for better understanding.

This is our first choice, but feel free to check other books in the list