I have to be honest, and I hope I don't offend anyone - I would be careful with "programming" as a career choice. The vast bulk of software development is done outside of the USA & Europe - mostly in India, China & the countries of the former Soviet Union. There is also a recent rise in "near-shore" (near to the USA) development in Central & South America (eg Costa Rica). I talk to tier 1 & 2 IT consulting houses and enterprise software vendors every week - and ALL of them are using off-shore or near-shore resources for their SW development. Sure, there is still plenty of SW being written in the US & Europe, but I think you will find that SW developed in the West is either at smaller, younger shops that have not yet become large enough to use off-shore resources (and are therefore riskier bets) or the SW is not product related - it tends to be written by engineers or other specialists and is used as just one tool to solve a larger problem. In those cases, the company is not hiring a "programmer" or "software developer", they are hiring an engineer or system analyst that also knows how to write some software. Of course, I'm over-generalizing - but this is what I generally see.
I often tell my younger employees: Don't tie yourself to a technology, or a specific company's products or a specific software language. Only do that if you are willing to be a consultant that travels wherever expertise in that specific technology is needed - and then you better hope that your chosen technology never becomes obsolete. I think it is much better to be on the functional side of the game than the technical. If you understand how the money flows through the ERP system, or how the many moving parts in a complex supply chain come together, or how to optimize the throughput of a robotic assembly system with minimum errors - then regardless of what specific brand, system or language is used - you will be useful to the company - and in fact, you will likely be involved in determining what new technology will best meet the company's needs. On the other hand, if you are a specialist in programming a specific robotic controller - then if the company switches to a different controller that uses a completely different methodology, then you have to hope that the company doesn't just dump you and hire a specialist in the new system - (hint, which one do you think a corporation concerned with maximum efficiency at lowest cost will do?) The guy who makes the money is not the guy that has a hammer - it is the guy that knows where to tell the guy with the hammer to make the hit to get the company running!
Sorry - I'm slipping (again) into mentor mode - I bore my employees all the time with this stuff...
I wish more universities talked about these things - but unless the instructor has actually spent many years in industry, they simply don't have the experience to pass on to their students.Edited by billybob_jcv - 6/23/13 at 7:48pm