The people that really got killed here were the high-priced but low-quality consultants. Big names like Accenture, Price Waterhouse, etc. They’d hire kids straight out of college with no experience, fly them back and forth across the country foisting them on their clients for outrageous amounts of money. I don’t have a lot of respect for that type of consultant, and after a while I guess businesses started to figure things out. I’ve seen a lot of this type of consulting job get outsourced to India.
Unfortunately (for me) a lot of high-skill but low-level (operating system, programming language, etc) development jobs are going overseas, too. These are things where language and culture isn’t such a barrier.
I’m not optimistic about the future of high paying jobs in software.
As for languages, C to start with, then Java/C#/Python. However, that probably won’t be the right choice 5 years from now. Languages change quickly. You need to know the underpinnings, how stuff works, so that you pick up whatever langauge happens to exist where you are working. In my 20 years or so as a programmer, I’ve programmed in Assembler (6809, i186), AWK, Basic, B, C, C++, COBOL, Fortran, Java, Lex, Pascal (various flavors), Prolog, Python, Rexx, SAIL, (k)sh, tcl, YACC, and probably more that I have forgotten. I’m not current on all of these languages, some of them I (happily) haven’t touched in 15 years. But you can’t go in thinking “I’ll learn Java and that will be fine”.