I have worked in many corners of the industry — on the receiving end of “new” technology where the vendor pretty much camped in front of our office and worked with us until everything worked fine, on the delivery/producing end.
Both in startups and large technology companies.
From what I have seen, having direct developer — customer contact, if properly managed for the interest of both parties (ie does not become free resources for the buyer, etc) is the only way to build a successful product.
So many times I have seen people building “great” products that everybody “knew” they are going to be sucessfull… And I have seen custom development efforts that never became a true product, as the customer was “always right” and we’ve built a niche solution.
Only one “good” way in my opinion — have developers (not sales, marketing, etc.) very close to the customer and do not forget you are building a product.