I agree. Skilled immigration doesn't have much of a downside for the US in my opinion, but immigrants do need to be free to decide what skills they choose to pursue, in response to market signals.
If silicon valley finds that people with the skills to become software developers prefer other fields, that's the market's answer. Forcing immigrants to work as software developers as a condition of living and working in the US is a horrible solution.
Immigrants must be free to participate in labor markets as they choose, without their options dictated to them by corporate "sponsors". Any attempts to "reform" this visa tat doesn't address this core issue (which in my opinion is also a basic human rights issue) is going to fail.
General skilled immigration would be good for the US, and I've love to see the H1B replaced with something that truly preserves the rights of the immigrant to choose his or her own path in life. If becoming a dev in the valley isn't part of that, well, that just means that skilled immigrants have found something higher value to do. Silicon valley can compete for them, just like everyone else, but I see no reason to interfere with the proper functioning of labor markets to make sure they get to hire on their own terms.
Maybe private offices, and less "young people are just smarter" gaffes would be a good place to start?