Ted Blackman has a new tutorial on what he calls “Lug-Nut Driven Development“:
Think of changing a tire: you screw in the lug nuts loosely first, in a star pattern. Once you have all the lug nuts in loosely, you tighten them a little bit at a time, going around in that star pattern, until they’re all tight. This makes sure that no single lug nut goes in too much farther than the others, which would cause the tire to become mis-aligned and get stuck.
Do the same thing with the modules of your software: build simple versions of all of them first, then do small improvements to them one at a time, keeping them in sync with each other. This will increase the likelihood that you discover architectural problems as soon as possible and fix them before they do too much damage.