You Undervalue Developers
Good software development requires talented people. Not unlike good music, theatre and science. And talent is, of course, nothing inherent but something that is developed. We all have the same two talents when we're born: screaming and soiling ourselves.
Companies are in denial about this because they don't want to depend on talented people, they want a "process" that allows cookie cutter employees to create excellent software. This would minimize their risks and costs. Their flawed thinking extends to how they hire and budget, looking at people's experience rather than measuring their skill/talent.
It's irritating when a senior vice president of so and so can't understand even the basics of what 'his' development team is doing. Typically when a company understands it requires people more skilled and capable than its senior managers, they end up hiring a select group of lawyers, accountants or management consultants. But when it comes to programmers, average will do, even in many tech companies. And even though they're average, they can be overseen by someone who knows nothing about the domain.
The desire for a cookie cutter process and lack of intelligent oversight leads to the "software religion du jour", functional composition, object oriented, z analysis, scrum, one way data flow, and on and on. The reason software development is hard then is because there's just not enough talent to go around, not because you didn't pick the right process.
People think programming is like assembling a car or building a house. It's not. It's like designing a new type of car, then building the prototype. No one would think they need to just hire 100 outsourced people to design a new car, but that's exactly how software is approached - lots of people who barely have any idea what they are doing, designing a machine, adhering to whatever current software religion exists.
To this day it still surprises me tremendously when a non technical person outsources the development of their product and they actually get something that works in the end. I've seen it happen twice (it typically fails miserably) and each of those times I did a little bit of digging and found out enough to know that what happened was that the startup was lucky to find a good developer at the early stages of their career.