The current problem in the United States is that the supply of people is high but the supply of skilled tech people is low. So the problem you're facing is high-wages for skilled tech workers (even for immigrant tech workers) but no jobs for the high number of non-skilled people. What the US then wants is for lower (not poverty, but lower) paying jobs that pull from the high supply of unemployed, non-skilled people to allow them to gain momentum and skills through training. Throwing money at the skilled people doesn't solve the problem because it's already here.
Here is MSFT's basic problem. The kind of people they want to hire often have better options. I left software engineering because I didn't like the constant layoff/hire cycle, the compressed salary scales at the top end, the need to get an MBA to go into management tracks, the lack of benefits, etc. In law I'm making more money even after student loans, and have far more headroom. I have an office with a door that closes and a secretary. I don't work exclusively with men. I work in a downtown high-rise, not some god-foresaken suburban office park. Based on my experience, I told my brother to stay out of STEM, and he took his physics degree to an investment bank. If some bright kid asked me to help him choose between CS and banking/consulting/law/medicine, I'd absolutely push him to the latter.
Tech companies need to get over their aversion to competing with each other for talent. They need to get over this "no poaching" "non compete" bullshit and stop trying to get the government to train their employees on the taxpayer dime. If they want to hire top-notch people away from other industries, they need to start paying competitive salaries and offering competitive benefits and amenities.
Throwing money at this issue only moves the same group of smart, educated, and skilled people from the same level of jobs. That's not the problem. The problem is that the supply of these talented people is small because the lower education is weak.
Finally, I think it's interesting you advised someone stay out of STEM but out of the "banking/consulting/law/medicine" you mentioned, only law is not explicitly STEM. Banking and consulting still have elements of Mathematics and Medicine is still very much in the realm of Science.