Good basic concepts to implement maintainable systems

This is my first book by Uncle Bob and at first his "voice" and presence in the book was a bit annoying but after awhile I started to see how his points were connected and why he had such strong opinions.

Immediately, the first two parts of the book and the afterword and appendix are the most useful for me to get a handle on how architecture grew over time and where these guidelines come from.

My expectation is that the bulk of the book will only become useful to me with more time and practice coding. That if I read it again in a few years and many more mistakes that more of the details will click for me.

I'm honestly grateful to have this on my shelf and hope that when I give my career history like Uncle Bob did in the appendix it's as interesting and exciting as his.

What’s not to love about Uncle Bob? Oh, yes, I deducted one star because some parts were honestly a little too abstract and went over mye head. It still is a worthwhile and thought provoking read.

It's very shallow, with little that's new. It belongs to the very infamous category of "books that are less informative than talks".

A collection of war stories is used to drive points home. It's ok if you like a colloquial tone, but it reads more like self-help, "a formula for success", than something you can point at as a rationale.

A must read :)

Repetitive and dry. I'd recommend Head First Design Patterns instead.

3.8 starts

I won't lie I was expecting a little bit more excitement when reading a book from the software craftmanship line.

Don't get me wrong, the information provided is very benefitial, and has an easy to follow writting, but after the first half of the book everything seems a little redundant. And I get it the author just want the reader to really learn all the terminology and advice, but I would have preferred a different approach to get the same result.

It is worth a read, very informative.
anillak's profile picture

anillak's review

4.0

I really liked the Clean series. They describe guidelines and rules of thumb that I find useful and enjoyable to follow. With this one I noticed I knew a lot of the stuff in it, because I have read the "Agile Software Development" book, but because the main focus was on architecture, I learned new things while at the same time I refreshed old knowledge from a different angle. I recommend this one (together with Clean Code and The Clean Coder).

fingolfintek's review

2.0

Hooboy, what to say... Let me start by pointing out that the concepts and ideas that this book presents to the reader are pretty sound (... or should I say - SOLID?) and the writing style is what you'd expect from Uncle Bob: the words just flow, the language is simple, natural and clear and the wit sharp - all of it making the reading process a pleasurable affair. And the book is full of his sheer love for the profession and his geekiness and the trips down the memory lane of a battle-tested veteran who fought in the trenches of the early day computer booms and took part in shaping the best things of our present-day profession.

However, the way this book was envisioned has left me deeply dissatisfied and with a lingering feeling that it should never have been a book at all... Frankly, the more I think about it, the more I feel that a 30-40 page whitepaper would have been a far better format for the contents found within. My reasoning to be found below.

The initial 20-25% of the book is almost pure waffle and essentially just summarizes and grossly simplifies principles from Bob's other works and works of other renown programming professionals. It's all sound advice but my issue with presenting it here in this manner is that I can't imagine it being very useful or practical to readers that are unfamiliar with the concepts and it's frankly useless to readers that are familiar.

The next 20-25% is in part application of previously named principles and concepts on higher-level design and in part a list of prerequisites, dos and don'ts that a proper software architecture must satisfy - in essence a very slow intro into the clean architecture.

Finally, at page 200 the plot thickens, clean architecture is presented and it's a shocker! It's simple, effective and familiar - mostly because it's basically a specialized version of DDDLite employing a hexagonal/ports&adapters architecture. The architecture is elaborated on maybe 20 pages in total and then the remaining 150+ is a series of anecdotes and a whole lot of repetition of what's been said previously but phrased a bit differently and in slightly altered context. Yes, yes, repetitio est mater studiorum, someone's taken that quite literally.

Not uncommon occurrence are 90s teleshop-style bad practice examples, you know the type - picture a guy struggling to use a wrench in an obviously artificial and fake way, only to be presented with a solution to his problems. Some the examples used to illustrate the problems with traditional/mainstream architectures feels artificially exaggerated and blown out of proportion. A less extreme but a more lifelike example always wins. Additionally, Bob hasn't been doing much testing of, nor has he apparently worked with ORMs - in most ecosystems GUI testing is far from the bogeyman it once was and I can't remember if ORMs (at least the most popular Java ones) ever required you to break encapsulation and expose your object's innards to the world.

Also, were you expecting elaborate examples that go from high component level down to the classes? A real-world example complex enough to show all the intricacies and dilemmas you as a developer and an architect would be exposed to when adopting clean architecture yet simple enough to fit inside a book? Puny mortal, those are not for you! You can have examples marginally more complex than hello world apps accompanied by programming history lessons (which were fun but hardly educational).

To sum it all up - it's a pleasant read but the parts I enjoyed the most had nothing to do with software architecture and everything to do with who Uncle Bob is as a person, author and a software professional. If you want great and meaningful material on software architecture that advocates for more or less the same principles as The Clean Architecture, go read DDD by Eric Evans and then Implementing DDD by Vernon Vaughn - you'll be up for a 1000-page ride that actually teaches you something of practical value.

As a simple programmer this was a bit beyond me. I found everything about it confusing from the acronyms to the directions of arrows in all the diagrams.