It is infeasible to find a design by exploring a space of options and testing each option empirically. It simply costs too much to implement more than one or two options. …
The long established approach to evaluating designs involves expert critique. The designer… evaluates the proposed design on the basis of prior experience and deep knowledge of the domain. She anticipates the reaction of users based on the accumulated evidence of how similar users have responded to similar designs in the past. She predicts potential problems by mentally simulating the design, imagining its use in various scenarios, and subjecting the design to known corner cases. …
By critiquing ideas as they arise, a skilled designer can navigate a path from a vague intuition to a concrete design proposal, [and only then] does it make sense to expose it to user testing.
From the footnotes of The Essence of Software (Jackson 2021), p.218-219
The same is true even in science, where the decisions of which questions to ask and which hypotheses to test play an outsized, often underrated role. The use of “thought experiments”, past experience, domain knowledge, and logic is necessary in order to narrow down the vast space of possibilities.