It took me three hours to extract from four pages of prose the two fundamental disagreements that I have with its ideas.
- I was having a beer
- the social waters were tricky to navigate (plane was full of BigCo execs)
- the book’s author didn’t put the two assumptions I disagreed with out in the open. I had to unearth them & figure out why I disagreed.
I’ll summarize what’s wrong & then talk a little about the rest of the book, & why I kept reading.
REALITY: although it’s still taught in schools this way, it’s much too narrow & only covers a fraction of useful techniques.
The goal of software design is to reduce the cost of future change.
All these activities influence & feed off each other. Their emergent behavior determines how much effort change is.
REALITY: there are at least two types of programmers - the ‘genius’ ones who can keep a whole complex system in their head at once, and the rest of us.
If you’re a forrester, your saving grace is going to be understanding how to document, chunk, and organize your software differently.
If you’re a forester, you apply Traditional Software Design™️ (like in this book) to make smaller systems, so that you can go back to holding the whole thing in your head.
But separating effectively requires a lot of gardening ahead of time, to make sure something cohesive results.