I read Build, The Pragmatic Programmer and A Philosophy of Software Design last year. All three were excellent reads. My favorite take away from A Philosophy of Software Design was to try to make low-level functions more general and high-level functions application specific/concrete.
I have been working on improving my API design skills, and I felt that particular insight helped evolve APIs nicely as the spec updates or I need to add new features to my projects and reduced the need for refactoring and big design revisions.
I have been working on improving my API design skills, and I felt that particular insight helped evolve APIs nicely as the spec updates or I need to add new features to my projects and reduced the need for refactoring and big design revisions.