10 Books Every Programmer Should Read

Books I always go back to or shaped my understanding of computer science

Posted by Tariq Abughofa on September 21, 2019 · 9 mins read

If you’ve just decided to become a programmer or you are already in the path to becoming one then you are in the right place. I have read and (still do) many books during my learning journey but in this article I present a list of the best books that help understand important topic. These books are the special ones that shaped my understanding of computer science, made go back to them every time I’m in doubt, and carved their names in my memory for long.

Let’s just jump into it:

1. Head First Design Patterns by Eric & Elisabeth Freeman

This is the book that introduced me to programming design pattern and what an introduction it was! Clear, comprehensive, and with easy to understand and imagine real-world examples that stick to your memory easily. Every time I have a doubt about which design pattern to use, I go back to this book and it solves my problem. Mandatory read by any programmer!

2. The C++ Programming Language 4th Edition by Bjarne Stroustrup

Which book would be better to learn a programming language more than a one written by the creator of that language? Moreover, what if the language is as hard as C++? This book is a comprehensive guide for C++ 11 and provides a good guide for many general programming concepts including Object Oriented Programming.

3. Pro Git, 2nd Edition by Scott Chacon and Ben Straub

If you want to handle code conflicts like a boss and understand why your manager start pulling out his hair when you amend a pushed commit, this is the book for you. This book goes into depth with the version control tool and it helped me understand the genius yet simple concepts git is built on.

4. Thinking Functionally with Haskell by Richard Bird

Although functional programming is unlikely to threaten the dominance of imperative programming anytime soon, learning a functional language helps enrich the programmer thinking and broaden their perspective. Many functional concepts were introduced to imperative languages in the last decade such as lambda functions and high-order functions. Hence, this book is a great read to write more elegant less verbose code.

5. O’reilly’s Linux in a Nutshell

Since this book is 944 pages long, I doubt the authors know what “in a nutshell” means… However, this is a great reference book for Linux. It servers as the go-to book whenever I need some information about a command or a system feature. I consider knowing how to handle Linux/Unix as a core skill for any serious programmer.

6. Thinking in Java by Bruce Eckel

The book I learned Java from. Easy to read and comprehensive. Great to pick up Object Oriented Programming.

7. Programming Ruby 1.9 & 2.0 by Dave Thomas

This book was given to me by my team lead who introduced our company to this charming programming language. Although I had a love-hate relationships with many programming languages, this precious gem is still by far my favourite. It introduced one of the best programmer-friendly frameworks I’ve seen and many brilliant pleasing-to-use libraries. I hereby feel the need to give the following disclaimer: learning Ruby is guaranteed to produce unwanted side effects that include displeasure and disgust when dealing with any other peasant-level alternatives (joking… kinda :P).

8. Database System Concepts 7th Edition by Avi Silberschatz, Henry Korth, S. Sudarshan

This is a comprehensive book on SQL database management. The book covers the relational database model, design, Querying, and transaction management in general without covering a specific system. In the last chapters, the book discuss these concepts in existing database systems: Postgres, Oracle, DB2, and MSSQL. It’s a great resource to build a great base knowledge of how relational databases work.

9. The Hundred-Page Machine Learning Book by Andriy Burkov

A fast read to get exposure to the modern concepts of machine learning for anyone in the computer science field. The point of the book is not to provide code but to explain the concepts. A heads-up: a lot of math in there, but again: you’re reading about machine learning. If you don’t want to deal with math, you’re into the wrong topic! ;)

10. SQL Performance Explained by Markus Winard

This book helped me to understand how to do SQL optimizations and how indexing actually work. Every developer deals with query optimizations at some point whether it’s for large data migrations or application performance enhancements. Definitely must known principles for ETL and data engineering.

Bonus Book: Clean Code by Robert R. Martin

I have to admit, this is not a personal recommendation. Through the years, almost everyone I know recommended this book to me as the best book to read for programming but I didn’t have the chance to read it yet. Maybe I should now :D.

Here’s what a friend of mine had to say about the book: “I would say Clean Code is the best book on programming. It touches on many aspects on CS while giving a voice of wisdom on what the author believes is most clean… It’s very opinionated though.”

I will leave it to you to judge on the last criticizing statement.

Card image cap
80+ Free Big Data Resources to Satisfy Your Knowledge Appetite

Data is becoming a cornerstone in software services. Whether it is the business model or...

Card image cap
How to Paginate (the right way) in SQL

Server-side pagination is a commonly-used feature in SQL databases. It helps when showing a huge...