Christopher Diggins has an interesting post on Intentional Programming. This is a new way of applying top-down design. It's a very good idea: you write your code nice and clear, with calls to sub-methods that "do the right thing" - sub-methods that you'll write later. The advantage of this is that your code will be quite readable. And since our code always lasts much longer than we ever intended, clear readable code is more maintainable (and likely to haveless bugs, too). An idea well worth thinking about and adding to your bag of tricks.