Books Every Software Engineer Should Read

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 (those pages are very long) and I honestly don't remember any of it.

That's why I started to incorporate a different strategy for the past couple of months, which has helped me recall information much better.

With that in mind, I wanted to share with you guys the strategy I've developed for reading non-fiction books.

💡
If you're reading fiction, then read however you please. I like to binge-read fantasy/sci-fi series. I'm a Brandon Sanderson fanboy.

I've also added a list of my recommended books for software engineers.

Why Read Books?

Books are simply irreplaceable.

Books are difficult to write. An author usually spends years mastering a topic and then takes another more just to write a book.

But this is why they are irreplaceable, you can't replace them with videos or articles. Some books are just so great that they are the only pieces of content that go very deep about a specific subject.

🤦‍♂️
As of 2024, I've taken back this statement. There are some great pieces of content out there, be it YouTube videos, blog articles, or Reddit posts.

You might argue that you don't remember much from reading books. That's because you're reading a nonfiction book like a story.

I cannot remember the books I’ve read any more than the meals I have eaten; even so, they have made me. – Ralph Waldo Emerson 

Books require action. Books aren't sacred physical objects. Write notes, create mindmaps, and do whatever helps you understand the subject better.

Reading a book is a workout for the brain

This especially applies if you're reading a book a bit out of your comfort zone. I'd highly recommend this because then you'd be growing as a person.

So if you ever feel stupid while reading then you're reading the right stuff.

If you truly feel stupid and the subject is a bit wacky then that might be a different case. Always try to read multiple different viewpoints about a subject.

Anyhow, the more you read books. The more you train your brain to absorb information. Hence, when someone says that they can't read books or can't focus. The best remedy is to just read on a daily consistent basis.

Even one page a day would work wonders.

How do I 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 a few books that you have to read from cover to cover.

But how do you what to read and what to not read?

Well for that, I've developed a three-step process for finding and filtering books.

  1. Get a list of books from different sources and add it to your to-read list.
  2. Read a summary of each book.
  3. 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.

🧠
This is very true for a lot of these self-help books. Usually, it's about one main idea but it is cluttered with a hundred different stories.

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 that you eventually stop reading altogether.

It isn't worth risking your reading habit over a bad book.

Become a Proactive Reader

Being a proactive reader means doing whatever helps you understand the book better.

The reason why I can't give you concrete techniques here is because everyone is different. Some people like to take notes while reading, others summarise the book at the end.

So make sure to find things that work for you.

But if you're looking for concrete techniques then here are some stuff that I do:

  • Creating mind maps between new information and old ones.
  • Highlighting passages and coming back to them at a later point in time to reflect.
  • Summarising the main ideas and trying to fit them into the context of my life.

But the most important thing is...

Apply what you read for god's sake.

How I organized this list

So there are a bunch of books here but to make it easier for you guys. I've organized them in the following categories:

  • Career – These are books that help you navigate your software engineering career.
  • Business/Management – These books deal with people and some general business stuff.
  • Coding – These are books directly related to coding and its different techniques.
  • Computer Science – You will find here books on Computer Science such as data structures, algorithms, distributed systems, etc...

Career

Soft Skills: The Software Developer's Life Manual

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.

Coding Career Handbook

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...

Management

Mythical Man-Month

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.

Rework

This book isn't directly related to software development but is more of a business book.

The authors are the founders of BaseCamp and Ruby on Rails. They offer very practical advice on how to run a business efficiently in the 21st century.

So if you are interested in entrepreneurship, this is a must-read.

Code

Clean Code

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.

Clean Architecture

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.

Dive into Refactoring

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.

Dive into Design Patterns

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.

Theory

Cracking the Coding Interview

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.

Computer Science Distilled

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.

Grokking Algorithms

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.

Designing Data-Intensive Applications

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.