a. There isn't really a gap. Employers are just slow to adjust to market rates for quality engineers.
b. If engineer salaries went up to the market clearing rate, certain business models that assume certain labor costs will become flawed
c. Who is going to pay for the training, especially in the case that all the training doesn't actually end up making the candidate any good at the job?
This makes me wonder 2 things
1) Why are we debating if we should keep the ~500k H1B visa holders around (of course we should) and
2) Why don't we just train the top 10% (in ability + willingness) of the ~13M unemployed people in this country?