I've come to the realization that there is no "silver bullet" for software development processes. I personally believe that agile software development practices have great benefit for most teams. That being said, I no longer believe that eXtreme Programming is the right solution for every development team.
There are certainly developers I know that just couldn't handle moving to a more agile development environment. They are too comfortable with the "black box" development environment where business analysts tell them what to build, and they just code...no questions asked.
Business analysts are simply a crutch for developers in this waterfall development environment. The idea that all requirements and functionality can be gathered before implementation is a falicy. I have yet to work on a single project that didn't undergo some form of change once implementation began. And yet, business analysts spend weeks gathering requirements, then "throw it over the wall" for developers to implement.
Business analysts serve their purpose as a developer "safety blanket". Their job is to make developers all warm and fuzzy inside, and soothe any worries about how the project should work. Developers are not expected to be held accountable for what they build, and this is my biggest issue with this environment.
"The only thing constant is change." Why not embrace it?