加拿大程序员趣闻 4/N : 团队篇

1,517 阅读10分钟

@snwr611是我的另一个号. 因为我手机已经被现在这个号用了, @snwr611这个号无法写东西(规定是要手机实名), 所以改为这个号了.

本系列传送门

加拿大程序员趣闻系列 1/N : 工作机会篇

加拿大程序员趣闻系列 2/N : 薪酬福利篇

加拿大程序员趣闻系列 3/N : 生活篇

加拿大程序员趣闻系列 4/N : 团队篇

书接上文. 前面介绍过薪资/生活等等. 今天来讲讲这边的团队吧.

1. 加拿大的就业前景

首先要说明的就是: "论天下英雄, 唯使君与操耳", 现在世界上的IT两强就是中国与美国. 相比之下, 加拿大这边的气氛就要差不止一个档次了.

首先, 就是IT公司少. 当年我大学毕业定居杭州, 就是看中了阿里. 我一直觉得, 一个城市的IT好不好, 就是看有没有超级巨头. 一个城市有超级巨头, 它就有浓厚的开发气氛, 有好的就业前景. 以杭州为例, 不仅你可以去阿里, 还有很多阿里牛人离职出来离职的, 也很多在杭州创业. 这样滚雪球一样, 整个杭州的就业前景就好. 上一次我从天猫离职, 也没花上半个月, 就找到下家了.

对应到加拿大,这就惨了. 加拿大这边没有阿里/腾讯/google这样的巨头总部, 整体就业前景较之中国要差一些.

其实多伦多这边有google, 在滑铁卢大学那一块. 不过听说主要是招intern实习生的, 也不是全是开发团队. 开发团队好像只有一个youtube的一个小组在这里. 所以对于我们这种Android/JS的前端同学基本没需求.

多伦多也有amazon. 但它的名声太差, IT届的"血汗工厂", 和国内的华为有的一拼. Amazon听说是要24*7的on call, 就是有事找你, 不管几点你都起来干活. 我身边的同事/前同事也是对amazon有点忌惮, 不太乐意去那上班.

Blackberry也在多伦多. 现在的黑莓其实已经没落了. 要从硬件转型. 转型期的阵痛怕是不少. 话说回来, 上次我找工作去去黑莓面试了. 一个团队的人想做一些软件产品, 他们对我比较满意, 我就多问了点. 他们办公室很空, 没坐满. 华人也很多, 因为我听到好多普通话. 另外就是他们要加班, 而且加班还比较严重. 这一点我就不想了, 想加班我在阿里与网易好好呆着, 我还来加拿大干嘛.

剩下来的多伦多的能拿上台面的企业, 就只有传统企业 (如通用汽车), 或金融业(如加拿大几大银行). 这些企业不是互联网企业, 一般来说薪资还行, 晋升渠道较差, 工作中能学到的东西可能不如国内多.

2. 加拿大的开发气氛

这一点也是不如中国的. 我自己从2015年开始研究Kotlin, 觉得它很有前景 (我还使用过groovy来开发android, 但groovy太重了, 不适合. kotlin则不错, 后来果然也被google看中了), 而我18年找工作时竟然还有公司只听说过kotlin, 还从没用过.

同样17年推出的lifecycle, room这些库, 到了18年我们掘金都讨论得很充分了, 加拿大这边的公司用得也不多.

多伦多这边每年有一个AndroidTO会议, 就是各种技术讲座. 水平得说只能是一般偏上, 和国内各种黑科技或讲得很深入的技术讲座差不少. 不过从2019年开始, AndroidTO被并入了DroidCon, 被Google官方承认了, 级别感觉也高一些了. 像今年就有Jake Wharton来多伦多讲座.

要是自己公司技术气氛不浓, 那就要自己多去学习了. 平时下班自己多学点新东西, 或是就什么老东西深入研究下. 周末也看点技术文章, 不然以后想回国, 肯定会发现自己技术比国内要落后了.

3. 加拿大开发流程

我其实只呆过两个加拿大的公司, 一个是银行, 另一个互联网企业. 不过它们还是有些共同点的.

1). 强制code review

这一块是和国内有点不同的. 以前我在天猫, 只有common library的库才要求被review. 我在网易则少有review. 但在加拿大这边, 所有代码全要被review, 有两个人以上同意了, 才能merge.

当然, 其实他们code review的质量并不太高. 一些可有可无的小点也会纠结, 一些重要的地方反而被忽视. 比如说安全这块, 写了个sql拼接的语句这种风险, 在code review时也不容易被人看出来.

2). 都有CI

CI - Continuous integration,持续集成 或是Jenkins, 或是微软的AppCenter, 几乎是强制要求的. 我还没见过哪个公司没CI的.

有CI的好处, 自然很多

  • 一是随时知道build有没有失败
  • 二是QA不再找你要apk包了, 自己直接去jenkins上找
  • 三是CI一般都可以帮你跑测试, 帮助你管控代码质量

不过CI用得久了, 经常就好慢. build一下有时要几十分钟, 甚至一个多小时, 这时我们经常要每隔几个月去优化下, 也是个工作量.

3). 自动测试化氛围强

这一点在我呆的两个公司都有. 一个是用Robotium来测试Android和iOS, 另一个用jest写集成测试并定时地跑.

这个其实是好事, 帮助我们早点发现问题, 不要拖到发版才出事

4). jira管理能力有差异

让我感到诧异的是, 银行这个传统企业里的jira管理/工程进度管理做得相当地好. 而我现在所在的互联网企业则不行. 可见这是因公司而异的

我现在的公司总是专注在user-specific story上, 也就是说做一个story总是要得是一块用户看到的功能. 比如说想要做A功能, 于是jira就建个story说要做A. 但其实A功能很大, 可以分解成A1, A2, A3, ..., 其中的A1, A2可能还是spike或investigation之类的工作, 没有能让用户看得到的结果, 但我们公司都放到一个story了. 导致的情况就是一个story要做上一个多月, 上头还以为没进度, 总要来催. 其实是不肯好好分解. -- 好在, 现在在我多次反馈之后, 慢慢变好了, 尽量每个story都不要超过三天开发时间.

再一个就是boss们异常关心burn down图. 但开发过程中明显会有很多以前做plan时没预料到的问题出现, 为了解决我们只好新建个story来解决. 这时我们的burn down图就不是下降而是上升了. 这时boss们就会很反感这样的burn down图, 而不是真实关心项目进程与block.

还有一个我不太喜欢的就是这边爱用story point. 像我在中国, 都是说这个任务大概要做几天. 这边爱用story point, 说这个任务的story point是3, 那个是5. 结果我还是计算一下, story point折成天数是几天啊. -- 更坑爹的是, 不同的公司, 这个折算公式还不一样. 有的公司是story point为3就是2天左右(1是半天, 2是1天, 3是2天,5是三四天...), 有的公司的story point为3则是4天 (1是1天, 2是2天, 3是4天, 5是一周半...). 其实大家在计算时间时, 用的都是"天", 毕竟一个迭代就一周或两周, 你肯定是算天, 这个story point其实好鸡肋.

5). 敏捷

每天站会自不用说, 每个迭代完了还有retro来总结这迭代哪做得好, 哪做得不好, 要如何改进. 还有, 我现在的公司每两周还有产品演示的环节, 或是让你展示你上个迭代都做成了什么功能. 总之, 很敏捷.

4. 加拿大的开发团队

第一个怕是得说contractor这个不好的制度. 加拿大这边签劳动合同, 都是签永久职工的, 除非你辞职或公司裁人, 不然你可以一直在那工作. 除了这个永久工, 还有一个contractor. contractor有点类似"临时工", 一般是签半年或一年, 期满就走人.

这个contractor有点类似国内的外包机制, 但更不好些. 以我们团队为例, boss一心想招两三个contractor的, 结果招来了干了半年, 合同到了就不和人家续约了, 再招了个contractor, 搞得我们团队又得重新培训新人. 这样的机制可能是为了避税或其它这类的考量, 但对于开发团队来说是比较差的体验的.

第二是离职率高. 就我呆过的两个公司, 离职率蛮高的. 按说加拿大的就业前景一般般吧 (也可能是我口味更刁钻, 看不上的多), 但一年两年下来, 基本上能走个七七八八. 不过也有干得久的人, 我有的同事在公司里呆过七年, 八年,十年的都不少见. 一般来说是年纪大的更稳定些, 年轻些的则更乐意去见见外面的世界.

第三个就开个地图炮哦. 我发现加拿大的印度开发很少, 印度的测试很多. 当然, 这是仅基于我个人所见, 样本过少, 不算实锤. 我上大学那会, 还说软件要学印度要搞个软件开发强国, 我们学院还找过印度人来给我们上课. 来了加拿大之后, 发现这边印度人不少, 不过开发比较少见. 我其实是有点怕印度开发的, 因为他一开口我就晕. 很多人印度口音很重, 我只能听个40% - 70%, 沟通起来相当吃力.

第四个就是同事比较友善. 我还真没见过几个脾气差的开发同事, 大家在一起共事都和和气气的. 不过我也听说有几个黑名单公司, 去过的人都说不好, 我自己都记小本本里了, 再找工作就不去这样的公司.

再一个就是, 公司的领导与同事, 对自己有私事而在家办公很宽容. 比如说你要看个牙医, 或在家收个快递, 或是去孩子学校开会, 你都可以申请在家办公. 这一点蛮好的, 这样你就不用专门请假. 自己的年假可以真正用来休息, 而不是请假去看病或办事.

5. 总结

好了, 这一篇就到这吧. 要是还对什么感兴趣, 欢迎评论. 点名多的内容, 我就优先介绍下.