Oversaturation to some degree. The same thing happened in the legal field. Becoming a lawyer used to be a one way ticket to the upper middle class. Not so much anymore. The same thing is happening with CS and SWE degrees. They're still great degrees, and probably still worth the money. But much less so than they were even a few years ago.
Law and CS/programming are a bit different though. Law seems to tend towards a bimodal salary distribution where you have the top 10 school grads who clerked for a federal appeals court/SCOTUS/etc. and work at a white shoe law firm in a big city--and you have the public defenders/real estate lawyers in shopping malls/etc. It's not really that black and white--you have people who do well enough as corporate counsels and the like--but that's a common pattern.
Isn't it the same with programming? It seems to me there is one tier -- FAANG, certain well-funded startups, and finance -- that pay $400k++, and everyone else tops out at $180k or so.