I started this book with high expectations as Clean Code was a wonderful book. Will Clear Architecture be like that? Unfortunately, no. This book is still worth reading for people interested in software design, I don't believe the impact and role of this book will be similar to the earlier Clean Code book. There is not that much news and most of the book seems to talk about the architecture of relatively small systems.The book has 6 parts, (1) Introduction, (2) Starting with the Bricks: Programming Paradigms, (3) Design Principles, (4) Component Principles, (5) Architecture, and (6) Details.The Introduction part clarifies the authors definition of architecture and design. In the second chapter, it looks at two 'values' of software, behavior and architecture. The author then claims that of these, the architecture provides the greater value. I felt this was a bit of a strange argument to make. Obviously a good clear design is important but there is nothing to be gained from stressing that one has a greater value than the other.The second part introduces three programming paradigms. I was surprised to see this in a book about architecture didn't mind as I do enjoy reading about programming paradigms. The author claims that there are three and there will never be more, which came a bit as a surprise as I was aware of more than 3 paradigms (and so is the wikipedia page on programming paradigms). The three paradigms covered in this book is structured, object-oriented, and functional. It describes these three from an interesting perspective, which is that each one adds a constraint.The third part is a summary of the SOLID principles which Robert Martin has covered many times in his earlier work. They are described a little bit differently as before. I am not a fan of the way the Single-Responsibility Principle is explained in this book -- "a module should be responsible for one, and only one, actor" and felt the example a bit strange. But all in all, the SOLID principles are useful principles to have in your toolbox.The fourth part introduces components and component principles. These have also been covered in the Agile Principles, Patterns, and Practices book from the same author. They are an interesting read but, over the years, I've not found them incredibly useful and practical.Part five, called architecture, is the majority of the book and is pretty good. In the first couple of chapters it introduces some basic concepts on how to think about software systems and how they can be decomposed differently. After this, one chapter introduces the "clean architecture" which is the standard architectural patterns that the author considers 'best.' A clean architecture separates entities (domain objects), use cases, controllers, and external interfaces. That definitively feels like a good idea for most software systems and the book does a good job in explaining why and how you can do that. Of this part, I particularly enjoyed the criticism of the micro-services hype that has been going for a while. Here the author is spot on.Part six is called details where the author covers things that he considers to not be part of the architecture but that should be hidden as details. Outside the book these are often discussed as important architectural decisions and the author wants to make a point that he does not agree with that. These are the choice of database or data storage, the web or choice of user interface, and the choice of application framework. The part wraps up with a case study and a chapter written by a guest author.Appendix A is still 50 pages of additional writing where the author summarizes his experience in working on different systems and what he has learned from which systems.Clean architecture was an interesting read. I liked the clean architecture pattern that the author presents and his explanation of it. That makes the book worth reading. Other parts I likes less and often felt the description was a bit over simplified. Four points stood out to me, (1) the assumption of code ownership, (2) the focus on up-front structure rather than gradual evolution, (3) the complexity suggested rather than going for simpler solutions and adding complexity when needed, and (4) the focus on relatively small systems. I could write a lot about these but I'll leave that for another time. I do want to focus a bit on the 4th point though. The examples throughout the book are from relatively small systems where I can easily see how the clean architecture patterns applies. For larger multi-technology systems, the book left me with many open questions. Anyways, all in all, this was a decent book. It wasn't wow and a lot was a repetition of earlier work (such as the Agile Principles, Patterns, and Practices book). I was doubting between 3 and 4 stars but decided to go with 3 because of the above points. A good read for people interested in design of software systems.