Book club: Why is the Philosophy of Software Design receiving such high acclaim?

Could you provide your thoughts regarding the book Philosophy of Software Design? After reading it, I encountered several points that were hard for me to accept, apart from generic advice such as ‘consider before coding.’ Here are some of my critiques: 1. The explanation of complexity seems lacking. The focus on dependencies is relevant, but I felt obscurity was merely a hidden dependency. The author overlooks critical distinctions between accidental and essential complexity, which are vital to understanding. 2. I believe that overly intricate modules lead to increased software maintenance issues. My experience as an Android developer exposed me to an unhelpful mindset that required excessive duplication of code just to modify trivial implementation details. I favor a hierarchical structure that permits simplification while allowing for in-depth exploration. 3. The suggestion that general-purpose modules should be more complex doesn’t align with my experience. For example, ffmpeg provides both abstraction and depth for customization without steep complexity, contrary to the author’s stance. 4. The concept of comment-driven development presents challenges; it presupposes all developers will keep comments updated and relevant. Meanwhile, test-driven development fosters accountability. 5. The chapter regarding software trends seems outdated. What do you all think?

P.S. I feel compelled to mention my recommended reading/viewing list: Grokking Simplicity focuses on functional design, Growing Object-Oriented Software, Guided by Tests critiques comment-driven development effectively, and Out of the Tar Pit offers superior insights into complexity than what’s presented in this book.

Honestly, the book really got me rethinking how we handle dependencies. I mean, it doesn’t always lay it out perfectly, but it kinda pushed me to consider when less is more, especially in terms of code structure and overall project complexity. anyone else feel the same vibe?

what i found intriguing is the book’s stance on teaching software design as a craft, akin to how musicians refine their art. do you think this craft-based approach helps in understanding the reasoning behind architectural choices, or does it oversimplify the technicalities? Can’t help but wonder if there’s a balance between art and science here.

I found Philosophy of Software Design to be a useful resource for rethinking architectural decisions. The idea of using less complexity wherever possible helped shift my mindset in tackling new projects. While the book could delve deeper into the distinction between accidental and essential complexity, its emphasis on reducing system dependencies resonated with me. It encouraged me to question whether each piece of complexity is truly necessary. Additionally, the discourse on habitually simplifying code before expanding it has become a productive practice in my daily development work.