入职五周。Facebook有一个比较好的优良传统,就是新入职的员工(部分针对岗位recruit的员工除外)会经历bootcamp,然后在bootcamp期间按照不同team的headcount availability以及个人的兴趣来选择合适的组去加入。如果遇到有兴趣的组,可以要求跟组工作几天深入感受。相对其他入职之后随缘定组的公司来说,这种方式可以让员工尽可能多地去感受一个组的工作氛围以及工作内容,评估自己与组员和manager的合拍度。直觉上来说,应该可以最终达到工作时更高的satisfaction。
今年很不幸,由于疫情原因,很多我有兴趣的backend组都不愿意招新毕业学生。backend组所做的产品经常更加specialized,工作涉及到的codebase也更难上手,所以在疫情期间无法上班的情况下,远程onboarding是一个十分低效率的过程。由于选择比较少,所以我的选组过程倒是异常简单。最后去了AI Platform - Personalization做机器学习平台。这是我实习时候工作的大组中几个sub-team合并起来的新组。虽然是新组,但是其中的大部分人在之前实习的时候都还比较熟悉了。
在决定加入AI Platform之前我也尝试跟几个别的组做了一些task以及参加他们的会议。这段时间的经历让我意识到一些我之前并未仔细思考过的问题。其中最终要的一点,我想应该是conflict between what I want to learn and what problems I want to solve。举一个很简单的例子,有一个组需要解决一个high level的user targeting问题。这个其实就是推荐系统中最常见的candidate generation和coarse ranking。这是一个非常general的问题,有很多已有的solution,但是针对具体的数据,可以做一些很聪明的tweak以及数据的处理,又或者是自己开发新的算法。由于这个问题很直接且broad,他能给我足够的flexibility去explore并且在explore solution的过程中学习到很多知识。可是于此同时呢,在对推荐系统这个领域的career growth和未来方向有更多理解之后,我认为算法甚至可以说是这个领域最不值钱的东西了。从个人能力的发展来说,更重要的其实是工程能力。写一个算法不难,把这个算法落地,并且不断地提高算法效率去提供更大scale的落地应用才是最难的地方。如果我选择去使用现有工具,或者说在现有工具上搭建新的算法,那么一个软件工程师生存根本的“工程能力”其实是得不到足够锻炼的。机器学习算法优秀的人实在太多了,说白了,是因为这个领域的投入很多,并且门槛着实低。但是一个能解决系统scaling问题,能从底层去优化一套系统,能从架构的角度去设计一套系统并且把他写出来的人少之又少。我认为,拥有优秀工程能力并且有足够的数学和算法背景可以快速上手算法的工程师才是最珍贵的。算法和工程,终究是工程更需要经验积累。然而更锻炼工程能力的一些岗位,大多数时候具体做的任务以及思考的问题,由于更微观,却更容易让我有螺丝钉的感觉,缺少excitement。这就是我所谓的:conflict between what I want to learn and what problems I want to solve。
这是一个很难解决的问题。拓展了说,这种dilemma可能根本就一直以不同的形式重现。最根本最根本,也许这是一个“良药苦口”或者是“长短期收益”的问题。Ensure the boring part, 可能未来收获更多。一直浮于表面做更简单的东西,或许最终收获就会少很多,但是短期来看似乎更开心。
另有相似却略微不同的一点,也是我所感受到的。第五周的时候,我在一个由multi-time entrepreneur 带领的类似startup的组工作。我对他们想要做的整个产品以及未来的前景挺有兴趣,但是于此同时,我对组里面几乎所有人所从事的具体代码任务没有任何兴趣。大部分人的工作是写Android/IOS app,前端以及CRUD代码。其实回想一下,几年以前我对full stack,对开发新的product是很感兴趣的。真的会给我一种sense of accomplishment when I make things work。但是不知道从什么时候起,就越来越觉得只有这个产品令我非常excited,或者我可以从大局掌控这个产品的方方面面的时候,才会觉得有点兴趣。“感到动力十足”的threshold被慢慢推高。这在我看来是一件很可怕的事情,因为我一直相信,一个人对周遭事物逐渐失去兴趣的时候,就是一个人开始变得平庸的时候。可我还没有准备好变得平庸,所以我想寻找一些方式去reignite我失去的一些星星火火。