During my first job at an internship I was responsible for maintaining code at a small company. The company would accept a contract from a client to create a software application for a particular job. They would then outsource the contract (usually to India). Once the finished application came back from India, the company would contact their client, and this is where we would come in. Our job was get the software into production, and maintain it as the need arose.
It was a very frustrating job. The code shipped back would be full of errors, and be very badly written. It was easy to see why - they were made by some guys in Bangalore who had learnt the programming language (C, Java, etc) in 3-4 months in one of those 'quickie' courses given in India. Where a software engineer here in Canada would have spent 4 years in an university, learning not just languages but techniques, styles, conventions, all designed to help him program efficiently, quickly and easily, the guys in India knew none of those things. The returned code was hard to maintain, extremely hard to debug and almost impossible to change to meet future needs.
Nowadays things have changed. Companies contact India directly for outsourcing. The programmers in India have become smarter, more capable and successful. They are now proper IT graduates. Their main selling point is they can work for 40,000 rupees while a programmer here will work for 40,000 dollars. As an IT person, I have a personal fear of outsourcing.
I have a solution to this.
Do you know why we charge taxes on imported cars. Mazda dealers, for example, import their cars from Japan, and have to pay a tax to do so. GM, Honda, Toyota, which makes cars in Ontario, do not have to do so. This is because a car made outside Canada has contributed nothing to Canada during manufacture. If a Canadian buys that car, the money the car company makes benefits foreigners. That's why we charge a tax on imported items, to compensate the loss a domestic manufacturer bears when his product is not sold.
Similarly a software 'imported' from outside, say India, should be charged import duties. It should be treated just like a foreign product, for it is a product. If we make it hard (read: expensive) for contractors here to outsource software needs, they will have no choice but to hire domestic workers.
This won't affect the majority of our software that we buy from US (due to NAFTA) but all outsourcing will be affected. The Government of Canada must not embrace an outsourcing culture that has already seen manufacturing go exclusively to China, software increasingly departing to India, and leaving large numbers of skilled workers unemployed at home and with no choice but to try their skills elsewhere.
BBC: New muscles in the marketplace