> we’re trying keep the parts that change frequently, away from the parts that are relatively static
Modularization and good code contracts help "sequester" code parts with different rates of change.
And this is my guiding hunch when I am splitting up code and deciding on module surfaces: how confident are we in the subject matter that given code describes? This does not replace actual proper concept modeling, but it is an intuitive feel for helping future iterations go smoothly.