Best Books For Programmers (The Ultimate List)
Best Books For Programmers (The Ultimate List)
Best Books For Programmers (The Ultimate List)
I know the first thing you probably did was to go to Google and search for the best programming books.
There is a ton of programming books out there, covering different topics and different programming languages.
With all the options, it’s so easy to get confused and never get started.
In this article, I am going to share with you my favorite books in an attempt to help you make a decision that suits you the
best.
My philosophy is simple.
First, all the books I recommend here are books that I have read myself and they are highly acclaimed by the community.
Second, I am going to keep this list as small as possible without compromising on generality.
But before we get started, I want to mention that these books are only related to the topic of Programming.
Programming is just one topic out of many in the field of Computer Science.
If you also want to view my recommended list for CS books, then check out this article.
I chose the most widely used programming languages in the industry that are NOT domain-specific.
1. Programming Concepts
Structure and Interpretation of Computer Programs (also known in the industry as SICP) is a classical book that teaches you
the fundamentals of Programming.
And even though this book uses Scheme as the programming language of choice to illustrate programming concepts, it is
not a book about the Scheme programming language.
You should rather think of this book as a generic programming book that happens to use Scheme to illustrate some
programming concepts.
Having this mindset is crucial if you want to get the best out of this book.
With that said, should you start out your programming learning journey with this book?
I personally prefer you don’t start with SICP, I suggest you learn one or two concrete programming languages first before
you jump into this book.
One more thing before I forget, all the MIT video lectures (from 1986) are available online, for free, by the authors of the
book themselves!
I went through most of them while I was studying SICP and they were absolutely amazing.
2. Python
Python is a widely-used programming language and I don’t see it slowing down any time soon.
In other words, it is not boring :). For absolute beginners, the last thing you want to start with is a dry book that is not
interesting enough for you to keep going.
The downside of this book is that it not comprehensive. You will get up and running fast, but it won’t teach you everything
there is about Python that you need to learn.
Learning Python
Unlike Python Crash Course, Learning Python is a very comprehensive book that goes into much more detail about the
Python programming language.
It doesn’t take the project-based approach that Python Crash Course takes as it adopts a more traditional way of teaching
the language.
If you are a beginner, you won’t go wrong with getting both books and going through both of them.
Fluent Python
After you become very comfortable in your Python programming skills, and you want to step up your game and take your
skills to the next level, this book is the ultimate book for advanced Python programmers. Period.
3. Java
Case in point: Hadoop, Spark, Kafka, and ElasticSearch are all widely used distributed systems that are written entirely in Java.
Core Java
It teaches you the basics of the Java Programming Language with lots of illustrating examples and code samples.
It covers some advanced topics that are not covered in Core Java.
Effective Java
This book is not about the ins of the language itself but rather about best practices for writing professional high-quality code.
The book offers roughly 80 best practices to follow for making your code cleaner, easier to read, and more idiomatic.
4. C++
I love C++
Mainly because this was the first programming language that I learned in college
However, it is very uncommon these days for college students to start programming with C++.
The reason for that is C++ is a, relatively, harder programming language to learn compared to, say, Python or Java.
And in fact, I agree that it’s a much better strategy to start with Python or Java.
However, C++ is still widely used and very important especially if you’re interested in low-level kernel programming, or
programming embedded systems.
Case in point: Windows, Mac OS, Linux are all written in C++ (and C)
As for my favorite book, I really like C++ Primer. It is well written and fairly comprehensive.
5. Go
The language was completely designed by Google and is growing at a very fast pace.
Case in point: Kubernetes, Docker, and Consul are all written in Go.
There aren’t many books out there about go, but the one I own and recommend is The Go Programming Language by
Donavan and Kernighan.
They are actually geared more towards teaching the craft and art of software engineering.
In other words, these books cover topics that you would only come across through your professional and industrial
experience.
So the topics covered here are not typically taught in school and could save you years of learning through trial and error.
Let’s go through this list of my favorite books one by one and see what topics they cover and why they are important.
1. Code Complete
Code Complete is not something you read in one sitting.
In my opinion, the best time to read this book is before you start your first internship or job.
For example, the book covers everything from laying the foundation for software development, creating and improving
high-quality software, to potential issues that may arise during software development and how to avoid them.
While the book brushes on a lot of concepts, it digs deep into timeless software development practices that most
programmers (should) use.
A no-nonsense piece that appeals to everyone’s common sense, it’s impressive in its subtle guilt-inducing, applicable
solutions, and advice.
Before you know it, you’ll be a converted believer and a pragmatic programmer.
3. Clean Code
Clean Code offers an easily understandable insight into software development and code cleaning.
This book provides valuable information and step-by-step explanations of writing, cleaning, and refactoring code.
It not only explains why writing clean code is vital, but it also gives plenty of practical examples.
Shunning the theory, code cleaning shows you how to solve real issues that many programmers have stumbled upon
before you.
So save yourself years of trial and error, and learn from other programmers’ mistakes.
I am honestly having a hard time remembering who exactly said this quote so if you know, please leave a comment below
with the name of the person so I can credit him
These words are very true though. Understanding data structures and algorithms at a deeper level is what differentiates solid
programmers from average joe coders.
When it comes to algorithms and data structures, there isn’t really much debate about the best book that covers the subject.
If you want to sound cool and use the lingo of the craft, you can call it CLRS.
This abbreviation is commonly used and it refers to the authors of the book (Cormen, Leiserson, Rivest, and Stein).
CLRS is written in a language-neutral way. Most of the code in the book is mostly pseudo-code.
If you want to learn data structures and algorithms in Java, then I recommend you also get Data structure and Algorithms in
Java.
Even though I don’t really do much Java these days, I have this book and it was fun to read and understand.
I’d still say this book is a good companion to CLRS but it is not, by any means, meant to be a replacement.
By Karim
Leave a Reply
Subscribe
Search ...
About Karim
Karim has a PhD in Computer Science from the university of California, Santa Barbara. He had over three years of
experience teaching CS to undergrads, over 5 years of experience doing research, and is currently working for a
Fortune 100 company. He is largely interested in distributed systems, machine learning, fitness, and soccer
Let’s connect
ABOUT
My name is Karim Elghamrawy. I started Afternerd.com to be a platform for educating aspiring programmers and computer scientists.
SITE
Blog
Programming
Fundamentals
Career
LEGAL
Privacy Policy
Affiliate Disclosure
LET’S CONNECT
© Copyright 2017-2019, Afternerd