1. Book Notes: A Philosophy of Software Design