Solution: Several part-time customers
Solution: Question the team customers more than you would a single customer. (On our project, the reponse is often "I hadn't thought of that; let me talk to the others and get back to you".)
Solution: Designate one customer as the "point customer" to whom all questions are directed if s/he is around. If s/he isn't around, ask another customer.
Solution: Make sure people realize that some customers aren't to be talked to at all. (On our project, I'm on both the development team and the customer team, but I have abdicated my role as question-answerer because I don't understand the business as well as some of the other customers do.-- ErikHanson)
Solution: Make sure you're doing all the XP practices so that you can handle changes.
Solution: Make sure the development team realizes that the customers are in charge of both the stories and the schedule. Changing stories might mean that fewer features are getting implemented, but it's not the developers' fault. (On my project, our coach feels that any schedule slippage is his fault, so he's not happy at all when changes are requested.)
Solution: Remove the word "no" from your vocabulary. Replace it with "No problem, and it will cost X".
Solution: This is a fact of life. Expect it. -- JimKingdon?
Solution: Make the system configurable/flexible. As feasible, do so to the point where the customer can configure/customize the system for themselves. Letting the customer experiment and see the results of their changes in real-time is a great way to help the customer clarify their wants. -- JimKingdon?
Solution: Customer team
Solution: If you have one single customer, perhaps try to have a "backup customer" who attends all release planning meetings so s/he has some idea of what's going on. [Has anyone tried this?]
Solution: Cancel the project. Often lack of customer engagement is a symptom that the project isn't very important after all. Cancellation of a project early on should be seen as a routine event rather than a failure. -- JimKingdon?
Solution: Make a rule that developers cannot move on to a new story until the old one passes all its customer tests. Thus, if a story has no tests, the developer must immediately write customer tests for it (hopefully in concert with the customer)
Solution: The previous solution is backwards. We emphasize Story Test-Driven Development in Industrial XP and Evolutionary Design because we're finding that the better approach is to first introduce a failing Storytest (i.e. scenario test, customer test, acceptance test, etc.) and use that to drive your unit/programmer tests which in turn drive the design/code. -- RussRufer
Solution: Bring some experienced QA people into the customer team.
Solution: Use a testing framework that is more customer-friendly. Ward's FIT Framework could be a godsend here; see http://fit.c2.com/.