> Every team I’ve worked on that maintains a backlog, got most of their backlog from customers.

I'm not completely disagreeing with you as this has been my experience, in the past, too. Here's how it's usually worked if it's taken long-term. Initially, if it's been a while, oh man: the backlog explodes. But more likely, you're in a place like me where you check in with your customers at somewhat regular intervals and, maybe, you know when "Bob's Widgets" is going to be checked in with because every time you call Bob, he reads you a ten page list of tiny little fscking details that make you want to reach through the phone and tell Bob there are other customers waiting on Heart Transplants and his little paper cut can wait.

Or maybe you aren't the one who calls Bob, but someone from Sales, or Customer Support is the one who calls Bob, so now you don't just have a back-log, you've got two panicked people who are sure Bob is going to take his business elsewhere.

First, Bob's easy. Bob cares about all of those little things but most of the time, Bob's not stupid. He's fully aware what's important and what's not, the reason he brings you the whole list is because he thinks that will get your attention better than it did when he brought up his "critical feature" that got sidelined. If you don't sell to thousands and thousands of customers, but hundreds with a tens of really important ones, and Bob's one of them, the problem is failing to apply empathy to the Bob problem. Personally, I love these guys because they're usually very easy to placate. Usually Bob's list has 100 things on it, 99 of which are solved with the same four lines of code, one of which is a horrible pain in the ass. Usually at the beginning of the conversation, all 100 are important, but after you finish 99 of them, sometimes Bob doesn't even notice the one that's missing, he's too shocked that not only did one thing get fixed, but his list is gone! Call Bob in a week to follow up; if you haven't been neglecting him too long, ... he's got one or two bullets or nothing at all.

But for all the others, yeah, the backlog will grow ... initially. If you keep following up, and keep reaching out, though -- you'll find your customers are on your back less because they know you know what you need to do and they know you're working on it. Over time, it becomes easier to temper expectations, you have fewer emergencies, things get scheduled more consistently and the backlog ... eventually starts to shrink again. Your customers not only have limits on the things they want/need out of your application, they also complain less and less feverishly about the things that do irritate them because it's "just the one button that's wonky" and not a thousand little paper-cuts of things that just don't seem to work like they should.

And yes, always listen to the customers/never build what they ask for ... except ... that's only good advice in very specific circumstances. If you know your customer's needs better than your customer does than that's the best advice you can take. For everyone else, "always listen to your customers until you understand it precisely on their terms" then start asking them questions to understand why it is they're asking for the thing they're asking for. The problem with the "the customer doesn't know what they need" premise is that if you dismiss what they're asking for and the thing you produce doesn't fit "the thing they were trying to accomplish by asking for that" everybody loses. Sometimes, hell often, you're better off giving the customer exactly what they asked for than missing the mark by even a small amount even if you provide something substantially better. What you end up with is "a cool feature that nobody wants because your customer really did just want the 'print to PDF' button because of some archaic fax workflow you were unaware of" (or insert some other weird example).

I'm not poking fun/chiding here -- I give the same advice to others all the time, but it's easy to forget that "you can't tell the customer what they want if you don't talk to your customers" :)