Companies complain there is a shortage. Everybody rushes to fill the demand, including students choosing a CS major over something else. Companies are then over-flooded with supply and get to pick what they want. It's a common tactic in capitalism.
If there really was a shortage, CS students would be recruited straight out of college. Instead, every software company wants years of experience for entry-level jobs. If they afford to put up ridiculous job requirements, they don't really need you. They simply want someone better for less money.