I bought this book based on recommendations on some forum, so I skipped the usual pre-purchase due dilligence. I expected broad (i.e., not related to a particular technology) and non-obvious insights. I ended up deeply disappointed.
The book is mostly about microservices. If you spent a few years developing in such environments, you probably know most of the topics. Or rather, you used most of the described techniques, picked between them based on circumstances, but you may not know the fancy names authors gave them. Did you know that every time you try to split an unstructured blob of code into well-defined components you are applying Component-Based Decomposition pattern? After reading this book, you will know that.
One may say that there's a value in establishing a common vocabulary. Agreed, yet with a caveat that introduced terms must describe succinctly something otherwise tricky or wordy to explain. Few of introduced terms meet this criteria, though. Your services either share the database or use separate ones; naming it Join Ownership, or anything else, only obscures that.
That's the biggest problem with this book - it's wordy, introduces concepts you already know, create taxonomies of them that do not lead to any insights, while not going into nuances too much. So, in the end, contrary to the book's title, it's quite introductory.
And what if introductory is what you need? The book invokes some DDD concepts, scratch a few surfaces on distributed systems, databases and versioning. It does not introduce Bounded Context while referring to it quite a lot. So if you're looking for more basic content, you'd better reach to canonical resources on each of topics. For example, Evans / Wlashin on DDD, Kleppmann on all things distributed, and so on.
The other big issue I take with this book is the implied, yet very strong, distinction between code and architecture. It's never stated, but the whole book is written with the assumption that there is a bunch of architects discussing charts and topologies in their ivory tower, and there's some code somewhere else.
Such distinction feels very foreign to me, and I cannot imagine how it can lead to good outcomes. It's also something against my vision of what Software Engineering should be about. There are plenty of books that do not give that "compartmentalized vibe", for example "Software Engineering at Google".
Regarding fictional narrative interwoven into the book - I like the idea itself. It provides an opportunity to anticipate various counter-arguments, as well as the team dynamics around such discussions. It's a risky choice as authors are software professionals rather than novelists, but in the end, I don't mind it as I am not here for literary value anyway.
It's something else that really bugged me in those fictional dialogues. It's the overemotional, unprofessional, and borderline aggressive attitude of some characters involved. To give you a sense of it: "That's the worst idea I've ever heard, said Taylen, everyone knows you should...".
I don't know if it's supposed to be a realistic depiction (fortunately, I didn't have to deal with such an attitude yet), something advised, or a dramatic exaggeration to keep me focused. None of those make me appreciate it.
All in all, I regret I bought this book, and ended up skimming significant parts of it. 2 stars as it's edited well, and it delivers a few interesting insights. In general, the book doesn't feel sloppy in any aspect, I just don't buy the main premise, plus the interesting bits are presented much better, and from first principles in other sources. For me, this book could have been 3 blog posts.