I'm not really sure this is anything to do with programming at all.
As far as I've seen all industries suffer from this. You have a lot of people who if given control over their own work would make things a lot better. But good management is very hard and often the business need just isn't there. There's things to be done and experimentation is seen as a waste.
I also think we can be a bit dewey eyed about 'great' programming. But most of programming isn't great. It's nasty, it's boring, it's edge cases and testing over and over, dealing with formatting, slightly incompatible outputs, etc.
Much of programming boils down to simple looping and modifying data. Getting data out of some thing and putting it somewhere else slightly modified.
Programming's fun when we experiment, but a lot of the time experimentation's not the thing you need to be doing. It's boring repetitive but slightly different code, really ironing out the edge cases and a lot of attention to detail.
You see it in all startups, the product is built, something new, exciting then the product seems to crawl forward, tiny changes here and there even though they've got more programmers than they did before. I sometimes wonder what on earth all those programmers are actually doing at Microsoft or Google or Facebook as their products don't seem to change much. Because they're all just touching the details on the edges, the main picture's been painted.