One of the big frustrations that startups face is the disconnect between the customer-facing and product-facing sides of the company. From time immemorial, engineers have complained about the wild promises Sales makes, while salespeople complain that engineers have no idea what the customer wants.
The thing is, both sides are right.
Sales doesn't understand the engineering tradeoffs. Engineering doesn't understand the sales tradeoffs.
The traditional approach is to use Product Management to bridge the gap. But far too often, this simply interjects an intermediary that *neither* side trusts. The Apple solution is to give the product people dictatorial powers, by it's not clear that this approach works if your name isn't Steve Jobs.
I'd like to argue for a different approach. The customer should be the source of information, but not the way you think.
Customers don't know what they want. They only think they know what the want. Every entrepreneur has had the painful experience of giving a customer exactly what they asked for, only to hear, "Yeah, I don't know why, but that's not quite it."
Instead, what you need to do is to gather input from customer behavior, rather than customer words. Whenever I've done usability testing, I always record both the screen and the tester. This lets me highlight the clips that show interesting behaviors.
When Sales says something needs to be done, work with them to record and test the customer behavior, then have both teams watch the highlights. Then, lay out a discussion and evaluation framework so people have to focus on principles, rather than opinions.
This takes time, but it saves it in the long run. When everyone sees why something needs to be done, and agrees on the principles, it's far easier to deliver a good result.