This is an _amazing_ book, and one which I am currently working through --- I was reading one chapter, thinking as deeply as I could on it, then re-writing my current project using the lessons from it.
Currently on Chapter 11 (Design it Twice), so will probably just finish, then work on a top--bottom re-write (switching from a current model which has a minimal Python core for variables only, and the balance is in OpenSCAD to a new implementation where everything possible is in Python, allowing usage from there via OpenPythonSCAD: https://pythonscad.org/ )
A Philosophy of Software Design:
https://web.stanford.edu/~ouster/cgi-bin/book.php