There are developers that just want to keep their head down and write code, you'll never get those people to ask the questions that are being suggested here.
When new / jr devs ask me what they should learn, I say: business, marketing, etc, and improve your comms skills ( speaking, writing, and listening). That's not the answer they get typically.
You can give them *exactly* what they ask for and still be wrong. The user / client isn't going to admit that. Nah. They'll just play the "Damn IT" card and it'll be back to the drawing board but now with a shit load of tension.
It's best to ask - sooner rather than later.
Most people have a vague idea of the outcome they want, and the reason for it. They also quickly know what they don't want _once they see it_
And that's why agile and iterative development is actually great for GUI based user interactive app development.
One of the advantages of being helpless is not taking responsibility.