Skip to content
Ying's Blog
Go back

Book Review: "Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems", by Martin Kleppmann

Edit page

I’ve worked at fairly small companies during my entire career so far, and I don’t have too much visibility into how larger companies operate. So upon the recommendation of my friend Jordan, I decided to purchase a copy of “Designing Data-Intensive Applications” as a tasting menu of the sorts to the design decisions, tradeoffs, and implementations for larger-scale software systems.

This was a tough read, and it’s because Martin packed this book chock full of new insights and ideas. I spent every day reading for at least an hour and a half, and it took me two full months. Not every chapter was a new idea — but if it wasn’t a new idea, it was beating a new idea again to hammer home its importance.

Here’s three takeaways I got from the book:

At the end of the book, Martin proposes an extension of the UNIX philosophy from a single-machine paradigm to the multi-machine paradigm, with streaming, pub/sub, and dataflow programming. I found this to be interesting and worth paying attention to, because thinking and execting at this level is a serious differentiator for large companies where technical leadership may be removed from the front lines; the Googles that custom-build end-to-end systems with these principles in mind, and the companies that cobble together Apache projects and realize it works well for a prototype but seriously lacks in the last 20% that counts (e.g. security).

Although I don’t know if I would wish to dig so deep into these weeds if I can help, I would highly recommend this book for any software engineer, since it gives a very good bird’s eye view of the engineering problems across an organization.


Edit page
Share this post on:

Previous Post
Book Review: "The Gift of Fear", by Gavin de Becker
Next Post
Reverting Reversion of Macbook Pro End-of-Life