There simply are no large native top-tier tech companies like Amazon or Google in Canada that need large amounts of top-tier talent. The local players are much smaller and are competing for local talent with banks and insurance companies. Less competition means lower wages. Because of permissive immigration laws, there has also been a lot of immigration of software developers from Asia and eastern Europe, which is great for the employers, but exacerbates the problem for local talent.