I've read a good amount of books this year.
There were some that I enjoyed and others that I didn't. But the biggest mistake is that I didn't drop the books I didn't enjoy. For example, I've read Code Complete which is around 1000 pages and I honestly don't remember any of it.
That's why for the past couple of books I started to incorporate a different strategy which has helped me recall information much better.
Today we are gonna talk about how to read books efficiently and the books I recommend for every software developer to read.
Why Read Books?
Books are simply irreplaceable.
The amount of effort taken in writing a book is much more than other forms of content. This is why books are irreplaceable, you can't replace them with videos or articles. The other thing is that there are some topics that aren't covered much by other forms of content.
You might argue that you don't remember much from reading books, this is solely the problem of the reader. There are many ways to increase compression.
I also want to talk about how books influence us in our daily lives. You may not notice but after every book you read, your mind changes, you get exposed to different information and this makes you grow as a person. A good analogy would be food, you don't remember what you eat on daily basis, but this food essentially makes you. If you eat junk food all the time, you would be pretty unhealthy while eating nutrient-dense food will make you healthy.
How to read books?
I like systems, and systemizing your reading will make the habit stick better.
The first rule is that you don't have to read everything.
There are few books that you actually have to read from cover to cover.
I personally have a three-step process for finding and filtering books.
- Get a list of books from different sources and add it to your to-read list.
- Read a summary of each book.
- If you find the summary interesting, then read the whole book.
Sometimes I only read the summaries because I already got the main idea of the book and don't need anything extra.
Another important note is that if you don't enjoy a book or it's getting too hard to read, then it's fine to drop it. You can read some other book and get back to the hard book whenever you feel ready.
This is because if you force yourself to read something, you feel so unmotivated and you eventually will stop reading altogether. You can't consistently rely on willpower and getting back on track will be difficult.
This is something I recently started to do, where after every book I summarize the main points. This has helped my compression a lot and I would recommend everyone to do it.
You can also take notes while reading, I personally don't do that because I read on my kindle and it's simply a pain to get out a notebook or my laptop.
To make things more organized I've organized the list into three categories.
- LifeStyle – These are books that are about how to succeed in software engineering.
- Management – This is about people management and how to deal with the business side of software development.
- Coding – These are books directly related to coding and its different techniques.
- Theory – You will find here books about Computer Science theory such as data structures, algorithms, distributed systems, etc...
PS. I use amazon affiliates for all the links. So if you want to support the blog, feel free to buy them from the links.
This is the go-to book on self-development for software engineers. It not only covers topics about software development but also things such as fitness, marketing and finances. This is a must-read for all engineers at all levels.
The book is easy to read and can be consumed in small chapters.
The guy who wrote this book is a self-taught engineer who ended up at Amazon, so he knows a thing or two on how to start from the bottom. Unlike the previous book, this primarily talks about how to advance in software engineering.
He covers topics such as:
- How to learn efficiently
- How to pick technologies
- How to go from junior to senior
- Many more...
This is a book about software engineering project management. It presents many ideas about how to efficiently structure a project and how to deal with the business side. I really enjoyed this book, it opened my eyes on the decisions that my managers make in my own projects.
This book isn't directly related to software development but is more of a business book.
So if you are interested in entrepreneurship, this is a must-read.
This is by far the most popular book on software development. It was written by Uncle Bob. This book teaches you how to write clean code, even though the language presented in this book is Java. Many of the principles can be applied in other languages.
This is another book in the "clean" series by Uncle Bob. This time he talks about architecture and proses a new type of software architecture called hexagonal architecture or clean architecture. The first part of the book is all theory on how what makes a good architecture, and the second half is about his new proposed architecture.
Do you know that popular book Refactoring by Martin Fowler?
This is a more animated version of that. This is an easy to read book that teaches you all about refactoring code. Alexander Shvets went above and beyond in this one with his easy explanations and artwork.
This is another book by Alexander Shvets. This time covering design patterns.
As with his previous books, he excels in taking difficult topics and breaking them down into easily digestible bites. This book is no different, it's a joy to read because of his explanations and artwork.
If you ever want to get a job at FANG? or it's called MANG now?
Anyways all these companies ask coding questions, which can be hard for many people. That's why Gaylee wrote this book to help engineers like us pass these interviews.
It contains common questions that are asked in interviews. I would advise pairing this book with some LeetCode to properly prepare yourself for your interviews.
This is the book that you would've wanted in your CS 101 class.
It covers many topics in computer science in an easy and digestible way. The amount of topics covered is huge and that's why it does not go too deep into each. This is perfect for people who want a simple introduction to computer science.
You might have noticed a pattern here. I like books with pictures.
This is no different, this book is about algorithms but with pictures.
I really like this book, it covers the most common algorithms and explains them in simple methods.
This is the best book I've read this year.
As the title says it covers designing distributed systems. The great thing is that it starts off easy and slowly picks up the pace. I didn't feel as lost in this as with other books on distributed systems and by far I've learnt the most from this book.
I'm sure that missed some books, so if you have any that you would recommend to me.
Feel free to message me on Twitter @tamerlan_dev.
If it's a good fit I would definitely add it to my reading list in good reads.