I've heard many times how software and the people (architects, designers, developers, testers, et al) that make it happen is the currency of the future. How companies and industries will have to learn to do more with less and make up the difference with software. The other side of that equation see it that companies are replacing people with robots and processes. So how are we, the implementers of software, supposed to operate in order to be most effective? The Agile process has taught us our goal should not be to create perfect software but to gather feedback to eliminate the bad software. Well, what if those giving the feedback are incentivized to not give genuinely useful feedback since it's quite possibly their job they are eliminating?
My task as a developer is to decompose a complex problem into easily solved or solvable problems that limited computer logic can accomplish that task. I can spend the time to learn the business domain as well as the back of my hand or, more often, rely on business analysts, product owners, subject matter experts to fill in that gap. The problem that I've seen in more than one Line-Of-Business application is that those people may not be in the best position to offer constructive feedback. Professionals, which is anyone who gets paid to perform a task, want to feel valued. They want to be the keeper of the "secret sauce" that makes the machine work so well. They don't want their contributions reduced to the sum of its elementary parts. It devalues their effort, experience, and training. They don't want to see their legion reduced or eliminated by process or software.
That is the single greatest hurdle to producing quality effective software. We are using requirements from sources that have no incentive to produce quality or even valid requirements. By de-humanizing the process and workflow, we de-incentivize the very people we are trying to help.