This post is an evolution of Introduction to Computer Science in 5 Amazing Books. You will see a skew towards object-oriented programming towards the end of the list, which I confess to in advance. The focus is on cloud computing architecture, where you need to think about different set of problems distributed systems introduce. The goal was form an all-round list of books and demystify client-server paradigm in a world of disposable Virtual Machines. Enjoy!

Book CoverTitle & AuthorWhy?
designing data-intensive applications bookDesigning Data-Intensive Applications
by Martin Kleppmann
I was already working on a relatively new distributed system, when I found this book. This book and #2 in the list, are the absolute must-reads for any software developer in the 21st century. It covers just the right detail of all concepts around distributed computing and in the world of plug-and-play Virtual Machines (VMs). Relational vs Document Databases, Messages Queues, Replication issues, etc. It's grounded in real-life examples to illustrate many of its points.
Site Reliability Engineering
by Betsy Beyer, Jennifer Petoff, Chris Jones, Niall Richard Murphy
Reading this book definitely gives you the impression, these guys know what they are on about. Despite un-related, it feels like the continuation of #1 in the list. I haven't seen a person who has read this book and didn't agree with its contents. It will save you from a lot of trial-and-error on your end. It's definitely worth the time investment.
Head First Design Patterns
by Eric Freeman, Elisabeth Robson, Bert Bates, Kathy Sierra
It could be disputed if a design patterns book should be considered "modern". After all, it covers the classic 12 GoF patterns with a few bonus ones. The reason I put this one here is that it's easy to read, but the difficulty stems from applying them on a day to day basis in a distributed environment. You need to start thinking more about mutexes and threads. You may walk away from it with just the Factory and Observer Patterns and the holy grail of anti-patterns - Singleton, but if you implement them correctly, it justifies its #3 position in the list.
Code Complete 2
by Steve McConnell
If you've gone through the first 3 books in this list, the added concepts from this one are not as many. What makes this book stand out, despite being the oldest of all listed here is how well researched it is. I've nevered read such a well-argued piece of software literature. It provides with the bare essentials of object-oriented programming, that many would argue are common sense. As it's over 1000 pages, so feel free to skip the concepts you already know.
Clean Code
by Robert C. Martin
I came upon this book, by a series of colleagues' recommendations for one reason or another and how it changed their coding style and improved their teams' workflow. The high Amazon rating sealed the deal. Full disclosure, as of right now I haven't finished the entire book. What makes it relevant is the hightened awareness of continuous integration/continuous delivery (CI/CD) practices and acknowleding that multiple people write over the same piece of code. Awareness that is surprising lacking in a lot of software development literature.

Leave a Reply