rather than picking the first idea that comes to mind, consider several possibilities.
Absolutely the same as Polya suggests; one of the key idea about considering multiple possibilities is that it informs you on the different implementation variations you might try. This helps inform abstraction at the interface level so that can easily swap out different implementations when they become redundant.