Book Reviews

You can’t create something out of nothing.

Docker Deep Dive by Nigel Poulton

When I want to learn how Docker works behind the scenes, I searched a lot online, but the output is very limited. And ‘Docker Deep Dive’ is the only one I can find! This book covers many topics related to Docker. It doesn’t show the source code level details, but it serves as a good starting point for the exploration of the container technology world. The explanation of VXLAN in the Docker networking part is the most impressive chapter for me.

Design Patterns Explained: A New Perspective on Object Oriented Design by Alan Shalloway

In my opinion, design patterns are one of the most overlooked skills by software engineers. I rarely hear colleagues discussing it in my work. Only when you need to refactor or extend a project written by someone else will you realize your macro-level design skills are quite limited. To be honest, I read this book because the classic ‘Design Patterns’ by the ‘Gang of Four’ is too difficult to understand. Books related to design patterns need to provide a context. Only when readers understand this context can they further comprehend the value of various patterns. This book allows me to easily immerse myself in its context and engage in deep thinking, which is the most valuable aspect.

Advanced Algorithms and Data Structures by Marcello La Rocca

This is an algorithm book that I will definitely read repeatedly in the future! Compared to other classic algorithm books, it is much less academic. You won’t find many complex formulas and derivations, but rather, you will see many illustrative diagrams that help you understand. Pay attention to the word ‘advanced’ in the book title, which means that the book discusses high-level data structures and algorithms. I believe that very few people would frequently use data structures like Bloom filters, which are discussed in the book, in their daily work. However, reading this book will make you aware that there are indeed people in your industry using such advanced technology, which is awe-inspiring.

Foundations of Scalable Systems: Designing Distributed Architectures by Ian Gorton

Designing scalable distributed systems is a crucial skill for senior software engineers. Nowadays, interviews for such positions often include a focus on this skill, known as a system design interview. And this book can provide a solid foundation for excelling in these interviews.
I highly recommend every chapter of this book to the readers. various layers of a scalable distributed system, including the underlying network protocol, distributed databases, distributed caching, message brokers, microservices, serverless architectures, and more. All of these topics can greatly deepen your understanding of the scalable distributed system. Of course, if you want to fully absorb the contents, multiple readings of the book may be necessary.