I agree that it's a bit of a myth that you "can't" change jobs on an H1B. You have pointed out that there are obstacles, such as a green card waiting list. While technically this isn't related to the H1B, I wouldn't say it has nothing to do with it if a very high number of H1B holders are counting on employer sponsorship for green cards.
To me, though, there is a bigger issue. How far from your original job title did you drift when you changed jobs? The H1B could be seen not so much as a way of forcing people to remain with one company as it is a way of forcing people to work the kind of jobs silicon valley employers want them to work. There are no restrictions on your employment - you can be a programmer here, there, or even over there!
The reason I think this matters is that I believe that programmers are actually underpaid relative to what highly educated and skilled people can make in other segments of the economy. Keep in mind, in SF, application developers only earn a bit more than dental hygienists. Suppose you decided, at age 25, that you'd prefer to do dental hygiene, since you were concerned about possible age related employment issues. Would you be allowed to do that as an H1B holder? Even if you are (my guess is that a dental hygienist would count as a skilled position worthy of the visa), what about going back to school? Could you find dentist to sponsor your visa?
To me, there's a reason for the "shortage" of programmers - the job isn't as great as employers claim it is, salaries and career prospects aren't good enough to lure these talented people away from other fields. To fix this, as a crutch, we've essentially created a system of immigration where people are allowed to come to the US provided they work as employee programmers for a period of time, after which many career paths may be closed to them or harder to pursue.
To me, though, there is a bigger issue. How far from your original job title did you drift when you changed jobs? The H1B could be seen not so much as a way of forcing people to remain with one company as it is a way of forcing people to work the kind of jobs silicon valley employers want them to work. There are no restrictions on your employment - you can be a programmer here, there, or even over there!
The reason I think this matters is that I believe that programmers are actually underpaid relative to what highly educated and skilled people can make in other segments of the economy. Keep in mind, in SF, application developers only earn a bit more than dental hygienists. Suppose you decided, at age 25, that you'd prefer to do dental hygiene, since you were concerned about possible age related employment issues. Would you be allowed to do that as an H1B holder? Even if you are (my guess is that a dental hygienist would count as a skilled position worthy of the visa), what about going back to school? Could you find dentist to sponsor your visa?
To me, there's a reason for the "shortage" of programmers - the job isn't as great as employers claim it is, salaries and career prospects aren't good enough to lure these talented people away from other fields. To fix this, as a crutch, we've essentially created a system of immigration where people are allowed to come to the US provided they work as employee programmers for a period of time, after which many career paths may be closed to them or harder to pursue.