Rating:
This book takes explains an interesting theory about the challenges of software architecture, taking a point of view from complexity sciences and proposing a novel approach to designing solid software architectures that allow for changing environments without breaking the system.
I found the theory part to be very intriguing, offering highly entertaining food for thought that I can very much agree with. The practical part, where a set of practices was proposed, was less convincing to me. I’m not entirely sure whether the practices really reflect the best way to apply the theory, or whether they are just a set of practices that the author has found useful in his own work. However, a point that is repeatedly made is that experienced architects apply the theory intuitively without knowing it, so in a way, I feel like multiple implementations are possible and can be used to a similar effect.
The book is quite short and dense, and more similar to a long paper than a ‘regular’ programming book. While I appreciate the brevity, I would have benefited from a few more examples, and deeper explanations (something I seldomly feel about books). This simply means that you’ll have to focus longer on the few pages that are there, and sometimes reread them to fully grasp the concepts.
Overall, I can recommend this book to anyone in charge of designing more complex software systems, in whatever capacity. Even if you don’t fully implement the practices, I am sure that the theory will imprint itself on your thinking and guide you in your decisions.