Trying to predict it can actually get in the way, because the
focus turns to figuring out the right specfication, rather than
narrowing in on the design that best fits the need.
When you do "requirements gathering" with a specification in mind,
you're forcing you and your team to fill in the blanks with
assumptions. When the final design doesn't work, the spec gets
used as a way to attribute blame.
When you learn from users to whittle down possible ranges and sets
of options, the actual users needs and inquirers assumptions are
clearly separated, and communication is ongoing, rather than
one-off.