Programming is hard. Designing software programs in a way that it's not going to bite your backside in a few years is harder. With the pace of new developments in this space, it's crucial to make sure that we are equipped to tackle problems that are thrown our way. There are many ways to gather knowledge. I consume knowledge mostly using Youtube videos, Audiobooks, and Podcasts. But for me certain fundamental concepts that I would go back to frequently I prefer to have books to refer to, some of which I have hard copies and some of which are ebooks. I would refer to them time after time when I am dealing with certain problems (or have an interview coming up)
Domain-Driven Design Distilled
Domain-Driven Design (DDD) is a common software design tool used today. The biggest challenge for most of us is breaking into DDD. There are a lot of Domain-Driven Design books available. The Bluebook by Eric Evans and the Redbook by Vaughn Vernon are like the bible equivalent for most of us DDD practitioners. Unfortunately, these two books are massive. Has a lot of great content no doubt.
I keep a copy of Domain-Driven Design Distilled by Vaughn Vernon. This book is basically a condensed version of the Redbook. Less, detailed examples but clear enough examples to understand the core tenants of DDD.
Domain-Driven Design Distilled brings DDD to life. Whether you’re a developer, architect, analyst, consultant, or customer, Vernon helps you truly understand it so you can benefit from its remarkable power. - Vaughn Vernon
Clean Code and Clean Architecture
Writing clean code is essentially about making sure that you and (your colleagues) won't hate your past self. This book from Uncle Bob is a gold mine of guidelines. Some might argue that this doesn't really relate to being a Software design book, but in my opinion conventions and internal policies we set for ourselves guide the design.
Uncle Bob discusses things like Naming, Consistency, Commenting, Source Code structure, Tests and common code smells.
Clean Architecture, is another approach to how we can approach software development. I own this book to complement my knowledge of software design. Although, Clean Architecture is very similar to DDD it has a few differences in both theory and implementation. For an in-depth comparison you should check out this article from Khalil Stemmler
Building Microservices: Designing Fine-Grained
Sam Newman's book on building microservices is a really good addition to your arsenal, especially if you are in the process of migrating your systems from a traditional monolithic system to a distributed microservices architecture. I don't own the book that is linked below since it's the 2nd edition, I am sure there is new goodness added to it, I own the first edition since I purchased it way before 2021.
The new version has additional topics on Serverless and Cloud-native development which was not mainstream at the time of the first release. There are plenty of videos from Sam discussing and promoting the new book which will give you some insights into what you are getting into.
Sam covers topics from Splitting the monolith, Deployment, Security, Monitoring, and Scaling both the application and databases.
System Design Interview – An Insider's Guide: Volume 2
This book by Sahn and Alex is a gold mine, it was a recent addition to my collection. I got my hands on it after one of my past colleagues recommended that I check this out. Although it's designed to help you gear towards preparing for a System Design interview, the material is very story-like and it helps understand how certain tradeoffs are made when it comes to designing systems on a large scale (and also preparing for interviews).
My favorite chapters were Digital Wallet Design and Distributed Message Queues. Given my past experience with these kinds of systems, it was good to see a different take on these problems.
PS: The links to amazon, contain my affiliate code. If you don't want to click it just search for the author/book title.
For any questions, feel free to ping me @hewadotme
Did you find this article valuable?
Support Gayan Hewa by becoming a sponsor. Any amount is appreciated!