The tragic thing is that software companies in Waterloo don't pay that well. Microsoft, Google, Amazon, Facebook, etc. are offering new college grads around $100k salary, while companies such as RIM and OpenText in the Waterloo region pay maybe $60k, so all of the talent in the region leaves. Having gone through Waterloo's co-op program, I found that Canadian software companies tend to be very management heavy, which…
The salary is scaled to the cost of living. Even Google doesn't pay the same if you're working in Mountain View or Waterloo or Australia. $100k base salary in Waterloo adjusted for cost of living would be like an $180k base salary in Mountain View. (Disclaimer: From personal experience, don't have a citation on the exact ratio.) I suspect people leave to Silicon Valley for the opportunities, tech culture, and weather…
I started off after graduation in Seattle, where the living costs are downright identical to what you would find in Vancouver or Toronto - except I was making $100K+ total comp. Compare this with the $50-55K offers I was getting from Canadian companies, and it was a complete no-brainer.
The gap has only widened - I'm now in SF making over double what my going rate in Canada would be. The cost of living is higher (well, mostly just the rent, everything else is similar), but it doesn't even come close to canceling out the raw pay difference.
But sometimes the pay is a red herring - I know a lot of Canadian expats in the USA who would love to go home, and many are willing to take substantial pay cuts in exchange for Canadian QOL, including myself. In fact, some of us have actually investigated this option thoroughly, and the ugly truth is:
There just aren't that many interesting, challenging jobs for programmers in Canada. It's a country full of code sweatshops and satellite-office monkey labs. Interesting, fulfilling, high-impact jobs are few and far between, and incredibly hotly contested where you do see them. Compare with being in SF, where someone practically begs me to go work on their interesting, world-changing problem every week. So in order for me to go back to Canada, I'd not only have to take a >50% pay cut, but also resign myself to ye olde cubicle and TPS reports. Entirely unacceptable.