ie. it appears that Vancouver and Toronto have very high quality tech talent but extremely low labour cost. I'm sure much of this is due to the exchange rate. But no matter the reason, it sounds like companies could find a competitive edge by setting up in Canada.
The article ends by discussing trust, and perhaps that is more fundamentally important than kindness -- kindness is one vehicle that allows trust to evolve, but probably not the only one.
An environment of trust (and safety) allows open technical discussions and lets you come to decisions in a way that helps everyone learn and evolve without "losing face" and without breeding an undercurrent of anger and resentment. Knowing that each person is willing to listen to the other respectfully and that each person is prepared to say they are wrong, can improve the discussion rather than making it more wishy-washy.
You need to have this if you're going to be working day after day, maybe for years with the same people. Lose trust and the feeling that it is safe to make potentially "stupid" statements, and people will just blindly follow the loudest most belligerent person because it's not worth the emotional cost of trying to engage in "debate".
So maybe "Trust is Underrated" would be a better title for the original article.
My viewpoint is taken from the context as someone who is a reasonably seasoned developer returning to the job market. I never did programming competitions in university, though I surely was someone who fit the profile (computer science guy with a discrete math bent). As part of my recent prep for a job search, I joined one of the programming competition websites and did a couple of contests.
I posit that one of the dangers of spending a lot of time doing programming competitions and becoming very proficient at them is that, perhaps, you can come to believe that "true" programming, some sort of Platonic ideal of programming, is about coming up with the clever insight that solves an algorithmic puzzle.
But, in fact, a fair bit of _commercial_ programming is down and dirty, with databases, and user interfaces, and a lot of the time is really just shuffling data from one place to another, maybe filtering it or combining it with another set of data.
And that's just at the beginning of your career. Later on in your career, success means being able to work at larger scales in a team. That means organizing the code in a way that supports the efficient development of the codebase by individuals like yourself, by your team, by the development group as a whole... And at the architect level, you perhaps are looking at designing the system to support the efficient operation of the entire organization.
So I can easily believe that success at a programming competition does not correlate with long-term success as a software engineer in commercial software development. The two are really very different.
(Btw, I actually found the competitions that I did to be fun, but mentally exhausting. I'd say go ahead and do them, especially if you have an inclination for those types of problems. Just be prepared to use a different mindset for commercial software development.)
Been a developer for over 15 years in the Vancouver area.
Various bits of advice:
1) Pay attention to the severance package when you sign your contract. When you join a company, you probably aren't thinking about what happens if things don't work out. But let's say you end up working there for 10 years, bad times hit, and you get laid off. You don't want to be surprised to find that you only get the minimal statutory limit. Some companies, I conjecture the larger ones, will have more generous severance packages.
2) Be cautious about choosing to work in "branch offices" which aren't involved in key decisions in products/features. You may find yourself limited in how you can grow, both in terms of scope of technical projects and scope of career path. This is probably a bigger issue if the region that you live in is not a tech hub like silicon valley.
3) When I was younger, I was completely focused on programming and "software craftsmanship". In fact, many of the problems in commercial software development are people problems -- team co-ordination, process improvement, empowerment, motivation, etc.
This is all the more strange if the infographic at the end of this article is correct:
http://vancouversun.com/news/local-news/how-migration-wars-i...
ie. it appears that Vancouver and Toronto have very high quality tech talent but extremely low labour cost. I'm sure much of this is due to the exchange rate. But no matter the reason, it sounds like companies could find a competitive edge by setting up in Canada.