Predicting the future is not an easy task. If it was life would be a lot easier. Sometimes people get it right, more often wrong. Sometimes predictions become self fulfilling prophecies, someone writes about a future invention, then someone else reads it and decides to build one...
I don't know if what I write is going to happen but I suspect much of it will in one form or another. I'll tell you what I think is going to happen and why, only father time can tell us if I'm right or wrong.
Part 1: The Technology industry catches up with the rest of the world
The transfer of jobs overseas in the technology industry is the continuation of a process started in manufacturing many, many years ago. Organised workers and unionisation are next, a process started well over a century ago in other industries.
One way to predict the future is to look at the past. This may sound daft in the technology industry but perhaps surprisingly it is just as true here as anywhere else. The processes that will happen in the technology industry will mirror the changes in other industries as they too have had to adapt.
Liability and Regulation become the norm
The technology industry is still young, anyone can start a company and start selling software. They don't at this point have to worry about officially sanctioned certifications or liability, but not for long, they're both in the post, in fact in some cases they've already arrived . With the increased complexity of software and our ever increased dependance on it, regulation of the software industry can't be too far away. In some countries it is illegal to call yourself an Architect or Engineer unless you have be authorised to do so, this does not really apply in the software industry at the moment but it will do.
Some fear the idea of liability because it will mean the end of programmer's freedom to create software. No, this does not mean that, this means that for major projects you will need to be qualified to participate in the most important aspects. Programmers will become like construction workers, as long as you can churn out working code that's fine, but the Architecture and Engineering within the system system will be done by highly qualified people and if it goes wrong they will be liable for the failure.
When errors hit critical infrastructure, things go wrong and lives get lost it'll all begin to change. The technology industry will mature and turn into just another infrastructure industry. I for one think software would work a lot better if those creating it were liable if it failed, programmers would be a lot more careful if they knew a huge fine was waiting if they got it wrong.
In the construction industry the Architect and Engineers are liable if something goes wrong, as a result they have to be very careful in their work and need to be certified competent in their profession before they work. As a result you don't see many buildings falling out of the skies, if you do it's major news . Despite wind rain, sun and snow - the most powerful forces in nature - there are buildings still standing after thousands of years.
The Problem with Software
In order to create the more reliable that's going to be required the way software is developed is going to have to change. Programmers tend to use a bottom up approach, they are responsible for their own little part, there isn't much if anything in the way of an overall design. You don't know at the beginning what the end result will be.
Could you imagine constructing a building like this? It'd be a complete disaster!  [(see pages 5-6)]. Yet this is exactly how software is built, is it any wonder that so much fails. Fails? Yes, there is a problem known as "The Software Crisis" which is the fact that 88% of business software is late, works but not to specification, or just doesn't work properly. In an industry where the practitioners pride themselves on their intelligence, how come we get it wrong nine times out of ten?
There are many reasons for this: Bad software development models is just one , another reason is that business people and technical people don't understand one another, there is a miscommunication of requirements so what one wants and the other delivers are two different things. It is the attempt to fix this that causes many problems, it's often done to software never designed to change, late in the process so there isn't sufficient time to make the changes necessary in a good way.
There is also an unfortunate tendency in the technology industry for using young workers willing to work long hours, this has a double negative effect: Young programmers are inexperienced, long hours mean programmers get tired and make mistakes, mistakes take many times longer to fix than make so all those extra hours go to waste. I'd bet a team of older developers will produce better code faster in 40 hour weeks than a bunch of recent graduates working 60 (or more) hours.