I can't endorse putting developers and customers directly together. In my experience, customers view developers as something between magicians and freaks. Many will not take seriously a developer in sandals, shorts and a a T-shirt with some kind of geeky slogan.
Developers on the other hand, often lack the patience and tact to work directly with people who don't understand technology at their level. They tend to divert the conversation to the "interesting" problems that they want to work on and conveniently don't discuss the details of all the reports that the system needs to produce.
When developers and customers get together, they talk past each other because they're almost speaking different languages. Or they get sidetracked on minutia and lose sight of the larger goals.
There is definitely a place for a person who can be comfortable in a business suit talking to customers, understanding their needs and priorities in their terms, and then translating that into user stories (often with developer assistance) back at the office.
I'd be very unhappy working in an environment like the one you described. I consider myself a developer, but I've worked directly with customers most of my career. If I were cut off from that, and had a BA standing between me and the end user/customer, I'm sure the resulting product would suffer.
It's no surprise that we'd come to such different conclusions. I think that a dev who is capable of working well with customers would be so frustrated with a BA that he'd quit, or (more likely) never take the job in the first place. So it isn't random chance that you never meet these developers - they're probably avoiding the kind of organizations you work for. I'm not saying you don't work with talented programmers, I'm just saying that a BA-heavy workplace that probably filters out the kind of developer who has the patience and tact to work with customers.
Developers on the other hand, often lack the patience and tact to work directly with people who don't understand technology at their level. They tend to divert the conversation to the "interesting" problems that they want to work on and conveniently don't discuss the details of all the reports that the system needs to produce.
When developers and customers get together, they talk past each other because they're almost speaking different languages. Or they get sidetracked on minutia and lose sight of the larger goals.
There is definitely a place for a person who can be comfortable in a business suit talking to customers, understanding their needs and priorities in their terms, and then translating that into user stories (often with developer assistance) back at the office.