转职半年总结

我半年前从谷歌X的无人车组跳到Facebook的人工智能实验室(FAIR),感触良多,这里写一些分享给大家。

虽然F和G并称一流的IT公司,但是其实内部是很不一样的,甚至可以说完全相反。加入FB之前,问过很多朋友,大家的意见综合起来是FB有点“乱”,没有统一的平台,各组管各组忙,代码质量比G差很多,文档也少。这听起来挺吓人的,但认真想想,反过来说乱才有机会。G最大的问题恰恰是一切都井然有序,能出大成果的地方都出完了,员工就像螺丝钉,只要在自己的岗位上做好修补就行了。

F没有五花八门的内部工具,用的大多是开源的略作修改,所以F的员工流动性非常大,因为工具和平台熟悉了,到外面一样可以用。举个例子,我半年前加入,现在已经比三分之一的员工来得早了。相比之下G的内部工具太多,待久了习惯了这些工具,再加上成年累月的股票,往往跳走不易。我们组的分布式平台当然没有G的复杂,还有好多地方做得不好,然而正因为简单才容易理解,也容易给它动手术学到东西。那个写平台的人,往往就是坐在邻座的邻座的的工程师,哪天需要加新功能了,打个招呼就行了,甚至自己可以动手写完让他审核。要是在G碰到这样的问题只能举双手投降,因为那是远在校区另一头某个人某个组的事情。

F太多项目可以做,合作也很容易,往往是吃顿饭大家聊聊就开干了。而在G大家抢项目做,员工并没有太大的自由度,一般指望老板还有老板的老板和别的组抢。我加入F这半年,在没有提前通知自己老板的情况下,单独和产品组的成员合作了一个项目,思路简单但是非常有用,单机处理100G数据,花了三个月发布了,还上了VP和Engineer Director当月的Top List,备受大家关注,这在G是完全不可想像的。

作为研究员,我再也不用为代码格式和变量名字伤脑筋,再也不用因为别人没来及审核自己的代码而无法工作,因为存在一个实验目录,可以不经审核提交代码。G对代码的严格对公司是有好处的,但它太过死板的规定经常限制发挥。我有时真弄不明白,为什么在两三天后审核回来时,还要改变量名改接口设计呢?我分明已经在这个基础上写了四五个扩展了,再花时间改回去,真心是很伤士气和进度的。

这半年说话比原来多了。作为码工只要和同事把现有的平台搞清楚,然后照着写程序就行了;但作为研究员需要不停地和各种人交流,同事,访问教授,实习生,理解他们的工作,提出意见和建议。你不愿意说话,别人(甚至Yann)会找你说话,久而久之就发现,自己永远得要对自己的工作,即便是正在进行中的工作,有一番概括和推广,自己的工作得要自己吹起来,别人才会知道并且欣赏,长远来说,这对个人的发展更有利。

我们组做深度学习主要用torch/lua。一开始学习曲线比较陡峭,但用惯了则相当好用。这个语言有趣的地方是,它很简单,简单到你可以理解语言设计的每个细节,对每个出现的bug都会有相对深刻的理解。我曾帮过我们组的工程师设计一个特殊的用来做profiling的lua类,身为研究员还可以在设计上帮到工程师,是挺自豪的。

我加入之后,经常从早上十点干到晚上八九点,然后锻炼完之后回家继续忙,经常周末加班,带几个实习生再加上做自己的研究。看起来工作强度是更大了,但为了自己的事业,有什么不可以的呢?最重要的原因是,相比在无人车组一心二用,白天做应用晚上自己折腾研究,我的内心深处,还是想集中精力花几年去理解深度学习本身,做一做它的理论框架。我的老板也非常支持这样长期的研究,这个是FAIR真正让人心动的地方所在。

这两天绩效考核,我老婆评论说我这半年干的事情比在G家一年还多,有产品发布也有研究,我想这就是真正把兴趣用在工作上的结果。我还记得自己最后一天在G的日子,HR小姑娘最后问我为啥离开,是不是因为X的工作太辛苦,需要一些工作和生活的平衡?我笑了笑,敷衍了几句,心里想起了《冰与火之歌》里的那一句台词——

雪诺,你什么也不懂。

文章被以下专栏收录
127 条评论