design it twice term
consider two different designs before committing to one
Ousterhout's heuristic: for any non-trivial design problem, think through at least two substantially different approaches before picking one. The discipline of articulating two forces you to discover trade-offs you'd miss going with the first idea. Cheap to do, surprisingly rare in practice.