Some quick googling indicates there are around 65K H1Bs issued every year, and around 4.4 million software developers. So even assuming that most of those H1Bs go to software developers (they certainly don't all go there) it's still hard to imagine this having a serious detrimental effect on salaries, although I agree it's probably an incentive for the few companies that actually get H1B workers.
BTW, to answer your second question, yes if you become a US citizen you can generally abandon the career that led to your getting whatever visa you had before. In fact you can do that long before you become a citizen. You can do it once you have a green card, which in most of these cases is a minimum of 5 years before they become a citizen.
For most H1Bs it's going to be something like 3-6 years on the H1B during which time you're basically "indentured", followed by 5-6 years on a greencard, during which time you can do whatever you like for a living as long as you don't do anything that suggests your H1B sponsor was lying, followed citizenship.
Well both of those numbers are wrong.
you can be on h1b for infinite amount of time. most h1b apply for adjustment of status for residency which lets them renew it indefinitely.
https://isss.temple.edu/faculty-staff-and-researchers/intern....
maybe you missed this part?
You can once uscis approves you i140, you can file h1b under cap exception. You can continue doing this as long as your 140 is pending with uscis, there is no upper limit.
I'm all for immigration, but not sure it's humane to tie it to a profession - if someone is allowed to become a citizen because of their profession, are they not allowed to give it up and do something else in the future?