Management is but one problem
After decades in the industry (doing software, hardware, and firmware), I have noted there has been one constant: If a project fails, engineers will invariably blame management. After all, it couldn't *possibly* be the engineers' fault, right? They put in the hours, weekends, sweat, blood, and tears, so it *must* be management's fault.
We, as engineers, must look at ourselves as well as management. How often have we made something complex and wonderful when simple and usable would do? How often have we skipped putting extra assertions in a particular function because "nobody would call it that way"? How often have we passed on testing because it's "too hard to test" (let alone not putting in ways to make testing easier). How often have we passed on good programming practice because we don't "have the time" to do it right? How often have we said, "That's a piece of cake" because we didn't analyze the problem sufficiently?
Anyone who says, "I never done any of those things" is lying, to themselves if no one else.
I'm not saying that management is not a major contributor to problems. What I am saying is that engineers are often just as much a contributor.
(Disclosure: I was a manager for about a year. Failed miserably. There's a reason there are degrees for that stuff.)