Well it used to be, "how can I generalize this?". But now that I generalize everything automatically it's become "what are the exceptions?".
When won't this method work? What input can break this? What are the assumptions going in to this?
It's a lot cheaper to think of these things when writing than when debugging.