Solve For Special Case Then Solve For General Case
Here's how you solve a hard math problem:
I believe this is explained in George Polya's HowToSolveIt.--ApoorvaMuralidhara
This applies directly to how ExtremeProgramming generates design:
See FeynmanAlgorithm to hear someone bragging they are too smart to have to do it like that.
And all too often, you do the exact opposite: