> I wonder how we can break the cycle
"Hire former software engineers at management positions" would be the answer, but of course there are various factors that makes it difficult to do so.
In theory, management should be held accountable for getting in a way, but it is not possible either because of the nature of software development: one cannot really measure productivity because it is to a more-or-less large extent a research activity.
I think probably the best option is to introduce some more democracy (or rather "technocracy" in the literal sense, "power to those who build") in the mix: management evaluated and chosen by the engineers. Call me communist all you want...