The easiest way to address the risk of people not knowing what they want until they see it is to deliver usable increments of working software to them as soon as possible. A crucial aspect of this early-and-often approach is that we will get meaningful feedback that we can incorporate back into the ongoing build and delivery.
Using this approach to software delivery means that everyone, including our customer, has to understand the caveats. They won't be seeing or using software that is either necessarily complete or has the final polish applied. In fact, they will see software as it evolves in both function and form. User experience, which includes user interactions, process flow, and graphic ...