All agile methods stress the importance of direct interaction between the developers of a system and customers who are its eventual beneficiaries. The agile manifesto said “Business people and developers must work together daily throughout the project”, which is there to stress the high frequency of interaction. Extreme Programming stresses this through its practice of OnsiteCustomer.
The main reason people give for this is that it improves communication of requirements. As the manifesto says: “The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.” Interactive communication can avoid much of the misunderstanding that arises from documents or intermediaries.
But I think these arguments, while valid, have missed another vital reason for direct developer-customer interaction – enjoyment.
Immediately I can hear many people wondering who cares about whether developers enjoy their jobs. Actually I think it's very important. A team that's enjoying their work is a team that's motivated to do good work. In raw business terms, this translates to much higher productivity and better value for your development budget. I've always argued that development managers should devote a good proportion of their energy figuring out how to motivate and energize a development team.
One way to do this is to connect developers to customers. Every developer I know enjoys seeing his work used and valued. There's nothing more satisfying than having a customer tell you how your software makes her job more enjoyable, or have a business tie software to revenue. If all of you see of the customers is intermediaries, or worse still documents, then that motivational link is broken. [Martin Fowler's Bliki]