It seems like I've had many versions of this conversation in the last few months, as new projects begin to ramp up:
Client: I want to do something cool to publish my work.
Developer: OK. Tell me what you'd like to do.
Client: Um. I need you to to tell me what's possible, so I can tell you what I want.
Developer: We can do pretty much anything. I need you to tell me what you want so I can figure out how to make it.
Almost every introductory meeting with a client/customer starts out this way. There's a kind of negotiation period where we figure out how to speak each other's language, often by drawing crude pictures. We look at things and decide how to describe them in a way we both understand. We wave our hands in the air and sometimes get annoyed that the other person is being so dense.Developer: OK. Tell me what you'd like to do.
Client: Um. I need you to to tell me what's possible, so I can tell you what I want.
Developer: We can do pretty much anything. I need you to tell me what you want so I can figure out how to make it.
It's crucially important not to short-circuit this process though. You and your client likely have vastly different understandings of what can be done, how hard it is to do what needs to be done, and even whether it's worth doing. The initial negotiation sets the tone for the rest of the relationship. If you hurry through it, and let things progress while there are still major misunderstandings in the air, Bad Things will certainly happen. Like:
Client: This isn't what I wanted at all!
Developer: But I built exactly what you asked for!
Developer: But I built exactly what you asked for!