There's also the issue of talent drain and pay. I'm currently south of the border working for double what my going rate is in Canada. Most of the people I went to university with are also here (as in the USA).
Yes, for the people not familiar with Canadian software, double. I'd like to be closer to home and live in a more progressive society, but it's a 50% pay cut to do so.
I continue to struggle to understand why things are this bad. How is that a mere hop across the border can easily double one's pay? What prevents Canadian companies from being compensation-competitive with American ones?
Part of it is the distinct lack of "real" engineering jobs. A lot of work I've seen either belongs to the thoroughly disreputable gaming industry, or working as Java monkeys pounding on keyboards... neither option appeals to most top talent.
The other part is the culture of satellites - much of the software work I've found in Canada is at satellite offices of American companies, and having worked at one before, it seems that it's less "satellite office" and more "place full of cheaper people so we don't have to pay Californians to do the menial stuff".
But still, what's with the lack of high-paying software gigs in Canada?