On another note... Job security. Globalization coupled with the fact that programmers can work regardless of location has made outsourcing the norm (if websites dedicated entirely to freelance project bids are an indicator).
Outsourcing != off-shoring.
It is one thing to program or tinker as a hobby, but choosing them as careers brings the question of how you can remain indispensable.
Most people can read and write.
Few have jobs as Writers.
The job of a typist is all but extinct, at very least it falls under data entry these days.
Why would a company always want to hire you instead of an equally skilled bloke on the other hemisphere who will do the same job for less?
You can't. That stage is over. Equal skill today costs about the same.
If anything, the companies discovered that they were paying way too much for certain jobs which didn't require that much "skill".
Regardless of bias, a lot of programming falls under that. If a 12-year old self-taught can follow a few tutorials and produce something with business value, then there really is something odd about someone else asking $250k for 10 year seniority. Way too many jobs have complexity of the former.
As a general advice, anything that does not tie your career to inter-personal relations is subject to lowest bidder outcome. This is why the only salaries going up are those of CEOs. Their performance is highly subjective and determined almost exclusively through social aspects rather than performance metrics applied to their employees.