A brief background on this specific question:
After meeting with a client and hearing all of their requests, requirements, and other comments about a specific software job, planning out the software functionality, design, and basic user experience, the client comes back with a comment regarding, "That is not what we are looking for. You can't do what we want to do."
Now, I understand the concept that not everyone understands tech, and that some people are more visual than others and may need to see things before they can be sure about something.
I also understand the process of revisions and other modifications to meet specific functionality demands or requirements that may only come up after you start putting things together. I mean, if everyone got it right in version 1.0, imagine how great a world this would be!
Given: There is no magic formula for a guaranteed success rate when a lot of the work is artistic in the sense that the same set of directions can be interpreted differently by different people.
I'm aware that asking the right questions is important, and I have done some research about what questions others are asking in similar jobs. I also have previous experience with clients (this isn't my first job), and through it all, I have developed my own little system for getting this information-- which has had a 99% success rate up to this point. Usually if I don't get it right the first time, it's fixed during the revision and modification process. I know I'm not perfect, but I've never really had a client flat out refuse what they asked for...
So how do you get relevant and useful information out of a client in regards to job requirements and specifics?