Or maybe it is that too many people are graduating with pseudo STEM degrees like much of what passes as "computer science".  While there are programming positions (software engineer, if you insist) that do infact require a high level of knowledge and intelligence, most programming jobs are pretty ordinary and require minimal creativity.  In fact, it is an oddity of programming that many of the highest paid positions could be called "code janitor" - an experienced expert programmer paid to cleanup the bloated code created by recent grads and cheap foreign workers.  It's not as cut and dried as some think - many people who think they are competent aren't and management has yet to learn that cheaper in the STEM fields often means "will require highly paid consultants to make it work in the end".