Wrote the test we wanted...
...then backed off to make it achievable in one step
Generalized (used a more abstract declaration) from the leaves back to the root (the test case)
Followed the compiler when we made a change (Expression fiveBucks), which caused changes to ripple (added plus to Expression, and so on)