I have read many books during my learning journey but in this article I present a list of the best books that helped me digest important topics. This special book list shaped my understanding of computer science, and kept me going back any time I’m in doubt.
1. Head First Design Patterns by Eric & Elisabeth Freeman
This is the book that introduced me to programming design patterns 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. A must 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 more of a 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 manager 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 alternatives ;).
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 in-depth 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.
Top comments (0)