I can't answer this question with a very high level of confidence for all of Canada (I'm based out of the prairies) but my current feeling is simply that the quality of the positions are lacking, as the parent has pointed out.
There's a view that programmers are code monkeys. If looked at from the perspective of a manager within the manufacturing industry (Many of Canada's high net worth individuals, especially in my city, have some sort of manufacturing/hard goods background) programmers are high level production staff.
As a result the jobs generally aren't very exciting and don't pay much. Mechanical Engineers are more sought after in my city, at least.
Six figure jobs seem to be within smaller boutique firms and a few of the big companies but it is far from the norm and there aren't many of those to choose from. Programmers earning more than $150k are virtually unheard of, as far as I know. My knowledge could be inaccurate here though so please take it with a grain of salt.
To change it would mean more jobs of a different nature. Startups are the only solution I currently see to change that long-term. And we have many other issues to contend with beyond a smaller talent pool and scarce funding.
I think it'll take a few big wins by a few entrepreneurs with, as my lawyer likes to put it: "balls of steel", to be willing to stay in their local Canadian markets for there to be progress in making this a better place for software engineers and in turn, other startups.
I am starting to notice a slight change and some locals urging me to stay local. Perhaps there's hope for the future.
So to try and succinctly answer the question, I think the pay reflects how interesting the jobs are, unfortunately.
I've chosen to stay in Vancouver for personal reasons. I like it here but it's not much fun to see friends find only mediocre opportunities locally and then end up in Mountain View making ~six figures. Unfortunately as mentioned above this creates a sorting process where the best and brightest leave.
There is a growing startup scene here, but the cost of living hurts -- this is the land of $60-70K salaries and million dollar houses. Real estate costs are such that the startups mostly seem to end up around the drug-addled Downtown Eastside, which can be interesting to say the least. Vancouver's a nice city but it's also kind of crazy.
There's a view that programmers are code monkeys. If looked at from the perspective of a manager within the manufacturing industry (Many of Canada's high net worth individuals, especially in my city, have some sort of manufacturing/hard goods background) programmers are high level production staff.
As a result the jobs generally aren't very exciting and don't pay much. Mechanical Engineers are more sought after in my city, at least.
Six figure jobs seem to be within smaller boutique firms and a few of the big companies but it is far from the norm and there aren't many of those to choose from. Programmers earning more than $150k are virtually unheard of, as far as I know. My knowledge could be inaccurate here though so please take it with a grain of salt.
To change it would mean more jobs of a different nature. Startups are the only solution I currently see to change that long-term. And we have many other issues to contend with beyond a smaller talent pool and scarce funding.
I think it'll take a few big wins by a few entrepreneurs with, as my lawyer likes to put it: "balls of steel", to be willing to stay in their local Canadian markets for there to be progress in making this a better place for software engineers and in turn, other startups.
I am starting to notice a slight change and some locals urging me to stay local. Perhaps there's hope for the future.
So to try and succinctly answer the question, I think the pay reflects how interesting the jobs are, unfortunately.