I'm currently working in a small company that its taking care of implementing lots of systems, most of them for goverment institutions, in witch it generally means taking software developted 20 years ago and refurbish them so fit up-to-date needs. The clients generally are very used to them and tend to discourage change (they are in their 50s 60s give or take, so not technologie-friendly in general).
As you can imagine, dev-team in most cases starts taking care of relation with clients, generating the documentation needed in this cases (CU usually), assisting to weekly meets to see improvements with clients.
As for experience, this is a gold mine for me, because gives a nice perspective on all the aspects of software development, but also some problems rise because, if developers come from mars then clients are from venus. There is a fine gap on the vocabulary/experience/capability-to-interpret-needs that generates a noise in the communication, and some times affecting the final product.
Should a developer be in direct contact with the client, or there should be an "adapter" guy that translates client needs in pseudo formal requirements understandable to us?