10 Books Every Programmer Should Read

Search for a command to run...

Allow me to recommend the books from Watts S. Humphrey, especially: "Winning with Software: An Executive Strategy", "Managing the Software Process" and "Reflections on Management". It will change very deeply the way you create software for good.
Another book that I would strongly recommend is Computer Science Distilled by Wladston Ferreira Filho. It's a short book, less than 200 pages, so it can be read in a single weekend. But it manages to give both a good introduction to and overview of, computer science topics.
Honestly, it's worth the read just to see how much the author was able to pack into such a small book!
This blog post is about the DOs and DON'Ts of code logging I picked up along the way in my coding career. This is a quick list, a "cheat sheet" if you will, which I will expand on down below. DO log your program output to stderr. This is meant for b...

Over the years, I have read numerous poorly written specs. Don't get me wrong, writing good specs is hard and it's more of an art form than anything else. The three main "themes" of bad specs I saw over the years, that come up repeatedly are the foll...

I still remember dabbling with my father's first computer in the mid-90s when I was around 7 or 8 years old. Back then, the computer "unit" took up the space of a small desk, and the big CRT monitor was placed on top of the unit. My very first intera...

Everyone probably heard at some point in their career that "Util packages are bad", "Don't use util modules!", or "Utils are an anti-pattern". The problem with these statements is that they are living on the "extremes"; and extremes in programming ar...

Inspired by other articles I've read about various developers' opinions on software. These opinions formed along the way in my career that I wouldn't always agree with in the past, but that is called learning. So here's my list in no particular order...

Due to the dynamic nature of software development, we as programmers can be sometimes overwhelmed by the sheer amount of information we're being bombarded with on a daily basis.
Even though we can take programming to a multitude of avenues there still are some "general truths" in programming that every developer should learn and practice.
The following list of books covers a wide range of areas in programming (and not just) that, practiced, can be implemented in a multitude of programming languages.

Author: Frederick P. Brooks Jr.
It is a timeless classic on the software development management process. It is a must-read, not just for programmers, but all the people working in this industry, including clients.
This book shattered the myth of putting more people on a project will be finished more quickly. It is absolutely false, you simply can't finish a project more quickly by simply using more developers, in fact, the opposite will be true.

Authors: Andrew Hunt, David Thomas
This book should be on the shelf of every beginner software developer, even though most of the ideas presented in the book are sort of "common sense" for most programmers, it still helps to reiterate these ideas.
It's one of the best non-technical software development books, it presents ideas such as taking ownership of our code, fighting code rot, applying the "broken window" theory to software, and so on.

Author: Donald Knuth
Another classic, and possibly the most influential book in computer science. Donald Knuth truly raises software development to an art form.
The Art of Computer Programming is a collection of books covering everything a developer should know about computer programming, starting from how math applies to computers, algorithms, floating-point calculations, data structures, and much much more.

Author: Jeff Erickson
Just like blood running through our veins, algorithms are the lifeblood of computer programs.
The author presents this complex topic in a clear and simple manner, it covers techniques most other books on the same topic ignore. If you want to master this field, going back to basics is sometimes necessary.

Author: Bruce Tate
The Pragmatic Programmer book above in the list recommends learning a new programming language every year, to be truly dedicated to the craft. The author of this book demonstrates as the title suggests, seven programming languages in seven weeks.
It achieves to broaden the reader's perspective of programming by striking correlations between the different programming languages, showing the reader the pros and cons of each.
The languages presented in this book are Clojure, Haskell, Io, Prolog, Scala, Erlang, and Ruby.

Author: Martin Fowler
Business expectations and project features sometimes change, dependencies are always being updated, and inevitably code rot happens.
Refactoring code should be part of every development process, it's inevitable after a while and that's just the reality of programming. The author shows us clear strategies we can take on our codebase, presents the principles of refactoring, how to recognize code smells, and much more.

Author: Steve McConnell
Talking about code smells, this book takes it to another level. You can find every type of bad practice and "what not to do" in this book, and more importantly "how to do it right".
This book focuses on the process of software construction and everything relating to it like software architecture and design decisions, debugging, testing, code smells, and more.

Author: Robert C. Martin
This book is widely popular in the software developer community, and it's for a good reason. The author, also known as Uncle Bob, shows us that the practice of writing code is a very complicated process.
Writing good code is truly an art, this book presents clear and concise strategies a programmer should take to "get to the next level", methods such as, how good OOP principles look like in action, classes are not just containers for procedural code, there's a reason behind every design pattern, and so on.

Author: Eric Evans
If you want to take the practice of designing good software to a whole other level, this book is for you.
The author focuses on the topic of domain modeling, how to actually implement those models, normalizing the domain across all parts of the project, having a clear cut line between various entities, etc.

Author: Matthew Walker, PhD
If you want to do a favor for your personal health then read this book. It's one of the more eye-opening books you can read and it's worth every second of your time.
This book manages to change the general idea of living a healthy life. In the past, the priority was diet, exercise, and sleep. Today this order changed to diet, sleep, exercise, thanks to this book.
We, as humans, not just programmers, should put our health as the number one priority.

Author: Gene Kim
An entertaining read on the concepts, the struggles, and the problems of DevOps. The characters in the book are fictionalized, but their doings are oh so real for system administrators living it on a daily basis.