While you can argue that it's not their job to interact with customers directly and they should indeed focus on their piece of the puzzle, this would only serve to limit developers' appreciation for customer needs (and pain) and how the product is actually used (or not used). A little direct exposure to the front line can only serve to help them grow to a more well rounded contributor. You may also find that some direct customer contact can help your developers be more empathetic with your support and services staff too.
So how do you get your engineering team enough direct exposure without totally disrupting your product development?
I would recommend 2 different approaches.
- Create a program where by each developer will spend 2 weeks (1 week every 6 months) a year in either a support or services role. During this time, they are fully immersed in the role they're taking and responsible for any and all customer interaction that the job entails from logging new incidents to working with engineering to resolve issues to communicating with the customer. It may be hard at first for some and they may resist it but they'll eventually see the light.
- Make 5-10% of the compensation dependent on overall customer satisfaction. Satisfaction starts with a quality product so why not have a portion of an engineer's compensation based on it. To make this happen, you need to put in a process where by you solicit feedback and rate customer satisfaction as objectively as possible (i.e. forget all the marketing on your external web page). You can use a combination of data collected from logged incidents to periodic surveys to determine level of satisfaction at any given time period and with specific product releases. I would actually recommend creating an active dashboard using (preferably) a cloud-based analytics solution (Try GoodData) and display it some where your engineering team (and the rest of the company) sees it every day.