A module begins life as an abstract step in the next-higher level of the
solution tree. It is completed when it solves a subproblem.
Writing Cohesive Modules
Think
Begin writing major steps
If a step is simple enough, stop
If you have to break a step up, its still abstract
If you have something hopelessly complicated, go back up a level