I'm sure everyone has experienced something like this. You go into a meeting with a client who has a project. They have no/few requirements in mind and the vaguest understanding of what they want/need. At this point, there seem to be two options:
1) Tell the users, "Ok, so I can't build something for you if you cannot even describe it yet. Why don't we get back together in a few weeks when you know what you want".
2) Meet with the users a few times and help them figure out what they want by guiding them through with the good ole Socratic method. "Do you need to track X?", "How about Y?", "Do you need functionality Z?"
With the first option, you don't get stuck doing someone else's job, or having gain psychic powers, however, the users might never present you with a coherent specification, or they might take forever as the deadline continues to approach. With the second option, you waste a bunch of time becoming a business analyst, and have to cram a bunch of business knowledge into your head that you will probably never use again, but you will be much more likely to come out with a spec that makes any sense.
To me, this is one of the most challenging aspects of development, and I have a feeling I'm not alone in this sentiment. In your experience, which of these options tends to work better?