2018 年 7 月,牛客网上出现了一个名为《2018 校招总结》的帖子,平平无奇的标题,却获得了接近 15 万的浏览和 1000 多次收藏。

与其他帖子相同的是,作者对自己校招季求职的过程进行了记录;而与其他贴子不同的是,作者在 2018 年的校招季,斩获了 18 个国内外一流互联网科技公司的 offer——他详实地对每个公司的面试体验进行了记录与分析。

「这是我在牛客上见到的最牛、最真诚的大佬。」一名用户在下面评论道。

这个时至今日还有应届毕业生前来留言膜拜的传奇帖子的主人,名叫徐湘。

徐湘虽然名字里有「湘」字,但其实是江苏人。他在大学期间就建立起扎实的计算机素养,用他的话说就是:「我的休闲时间里的很大一部分,都用来捣鼓一些开源项目,代码写得多了,自然而然也就有感觉了。」

在清华大学读研期间,他开始在 Hulu 实习,期间参与 Hulu 的多个流媒体应用开发项目。在校招季开始没多久,徐湘就拿到了 Hulu 和一些其他互联网公司的 offer,但他并没有「停下脚步」,因为他还想看看除了互联网公司外的其他技术公司是什么样的。

徐湘「看看」的方法就是去面试。通过和面试官交流,了解这家公司到底在做什么,他们的技术文化是什么,以及他们公司内厉害的人到底多不多——这也是徐湘求职过程中最看重的三个点。

「当然这只是一种很片面的了解方式,但确实能够在面试的过程中,感受到不同公司的风格还是差异很大的,聊得越多,你自己内心会越清楚自己应该选择哪个方向。」

于是,在 18 个 offer 的「包围」中,徐湘做出了自己的选择。

「当你有太多选择,而最后必须要做只选一个时,你其实是也无法保证它是 100% 理性而正确的——尤其当你选择的是一个充满未知的行业,以及一个刚刚起步的的公司时。」

最终,Pony.ai 从这场「选拔」中成功突围,徐湘也成为了公司的第一届校招生。

预测与博弈,一场反思「真理」的挑战

徐湘在 Pony.ai 的湾区弗里蒙特 site 正式开启他的职业生涯,并将工作方向瞄准了 perception(感知)中的 prediction(预测)模块。

在接触 prediction 之前,徐湘在 perception 做过不少方向,比如 segmentation(对象分割)、detection(检测)、denoising(降噪)、classification(分类)和模型的优化与加速,以及偏硬件的激光雷达驱动程序等等。这一方面是公司初期发展需要,另一方面也与他喜欢尝试新事物的性格有关。

「我之前换了不少方向,但后来开始接触 prediction 之后,就很长一段时间没换过了,因为这块确实有很多值得深挖下去的点,而且也存在着许多短期内不会被彻底解决的难题,充满了挑战,这非常有趣,也让我感到十分兴奋。」他说。

当徐湘刚接触行为预测的时候,他认为预测这件事也类似于之前解决过的一些同属于 perception 的问题——它们是存在「真理」的,即:车过去的轨迹是原因,未来的轨迹是结果。虽然 prediction 的条件更复杂,但这和感知一辆车的形状,或者去判断一个障碍物的类别,并没有本质区别,都有着其天然的问题边界。工程师通过代码、规则、模型和庞大的数据,就可以去实现感知和学习。但是随着越做越深,他渐渐发现这其中的困难比想象中要大很多。

人脑具有极强的泛化学习和博弈能力,很多自动驾驶中遇到的长尾场景(corner case),对于人类司机来说算不上挑战;但计算机依靠人工智能却不简单。

「人类司机开车时能够预测其他车的行为,并能在潜意识中站在对方角度,来判断自身行为能给对方带来多大的威胁,这是个很典型的预测 + 博弈的过程。但放在机器层面,这类博弈 + 预测的问题就不太好去定义边界。这不仅是个自动驾驶的难题,也是个世界性的难题。」

因此,对徐湘这样的工程师来说,他们唯有尽量使计算机的「思考」无限趋近于真实人类的角度,才能更好地进行预测。

「在做 prediction 的过程中,我会一直思考,人工智能发展到今天,仅凭借机器学习是否真的能完美解决无人车遇到的所有问题吗?随着我们的无人车在路上表现越来越好,自己和团队对系统的表现提出更高要求时,你会不断思考是否需要增加新思路来补充与完善?能不断反思现有做法的利弊,我相信是一件好事,因为只有怀疑自己,才能突破自己。」

树立信心,然后自我推翻,随后再次树立信心;而正是在这样重复的进程中,自动驾驶被这些工程师们不断推动,向前驶去。

厚积薄发,一种扎根于经验的灵感

解决 perception 中的 prediction 问题,不是一蹴而就的,它需要厚积薄发的耐心。

「为了搭建出一个更稳定、代码质量更高的 onboard 架构,当时我们基本把老的一代 prediction 模块整个都重构了一次。虽然这花了大家很多精力,但从长期来看,这件事情是非常值得的,毕竟磨刀不误砍柴工,有一个更灵活的 onboard 架构,后续大家的新功能、新模型的开发才能更加便捷和高效。」

事实的确如此,在底层架构升级后,徐湘他们开始投身于解决之前 prediction 处理得并不好的问题,比如复杂路口、变换车道以及车流汇合等等;而系统对这些问题的解决速度,相比之前有了数量级的提升。

目前 Pony.ai 自动驾驶车辆在日常路测中的表现,已经能够妥善处理绝大多数的场景;与感知相关的 issue(问题),也从之前的每周上百个,大幅降到每周的十几个,甚至几个的量级。

而对于工程师自身来说,提升能力同样如此。

首先,想做好行为预测,必须要有非常扎实的经验积累,这是公司以及行业内毫无疑问的共识。近些年来,随着自动驾驶行业的发展,相关的研究与论文也逐渐增多。在 prediction 小组内部,每周都会开展「读 paper 会」,大家聚到一起去分享自己最近看到的比较有意思的研究,互相促进;同时,公司层面每周也会举办大型技术讲座。

但另一方面,仅仅有积累,是不够的。

「我觉得做 prediction 有时候确实需要一些灵感的。」这是徐湘两年来得到的一个感想。

「打个不太恰当的例子,解决 prediction 上的问题,对我来说有点像奥数竞赛,你可能此前刷过了成千上万道题,但在真正比赛的时候,过往的刷题经验作用是有限的,很多时候还是需要一些临场的灵感来解决掉这些难题。」徐湘表示。

「再扎实的经验,如果没有那一下子的灵感火花,依然无济于事。」

因此,为了更好激发出工程师们的灵感火花,prediction 工程师们还会定期举办头脑风暴会议,在会议上把目前没解决的一些难题拿出来,让大家一起讨论,集思广益。

近期,徐湘深度参与了两个 prediction 模块下的细分项目。

「一个快做完了,一个已经交付了,如果让我自己打个分的话,我觉得还是做得挺好的。」

徐湘有着自己的一套评判维度:项目所去解决的问题是不是太简单;自己所写的代码是不是切实地解决了问题;以及自己在这个过程中是不是有了能力的提升。

最近,徐湘在着手解决车辆在行驶中预测路上的其他社会车辆的变道相关问题:路上的车会不会变道,什么时候变道,往哪个方向变道,变道会不会带来影响,变道会不会导致安全员接管等等一系列问题。如今的徐湘在面对这些「前无古人」的复杂挑战时,已经显得更加从容。

「你的 manager(管理者)和 peer(同事)可能更多地从你产出的结果以及对最终道路运行的数据指标来衡量你,这是一个很公平与实用的方法;但你在其中到底成长了多少,获得了多少成就感,这些只有自己才最清楚,因此我在每个项目、阶段结束后,给自己打一个分数。随着做这行的时间越来越长,我多少对自动驾驶也有了些自己的思考,逐渐开始形成一些方法论什么的,这种成长对我来说是很重要的。」

求职者到面试官,一场真诚而平等的交流

直至今日,徐湘在牛客网上的帖子至今还保持着旺盛的生命力。

「其实写这个帖子吧,是被『逼』的……当时清华学生会知道我校招拿了不少 offer,就想让我给学弟学妹们分享一下经验,于是就写了。没想到发了后有这么多人来回复和私信我,向我请教一些校招面试的技巧什么的,自己的经验能多少帮到他们,还是挺高兴的。」

如今,徐湘开始以另外一种身份来帮助走出校园的年轻人们——他成为了 Pony.ai 的面试官。

徐湘回想起当年自己在 Pony.ai 面试时,让他印象最深刻的,并不是这个公司的确汇聚了一批技术大牛,而是面试官们的严格和包容。

「我见过不少求职的同学会抱怨公司的面试制度,觉得公司面试总会出算法题什么的,认为这样『不公平』、『没意义』,断定这对打竞赛的同学更有优势。但我觉得并不是这样的,恰恰是这样才更加公平——刷算法题是不重要的,而通过做题去提升计算机学科的基础素养和压力环境下解决问题的能力,才是重要的;在面试中碰到做过的题目很快给出答案是不重要的,而在面试过程中不断思考、积极与面试官交流,让对方了解你的思路,才是重要的;因为在我们的日常工作中,就是需要这样的能力,怎么在有限时间里解决问题,准确地向别人表达自己的思路,这是基本的要求。」徐湘说。

「毕竟自动驾驶行业是一个对编程要求很高的行业,如果说实话,我反倒觉得现在面试的题目甚至太简单了。」

对专业素养的高要求体现出面试官们的严格一面,但他们同时也有着包容而真诚的心。

「当年我面 Pony.ai 的时候,问了面试官不少现在看起来很傻的问题,但对方很耐心,告诉我这个行业到底目前是个怎样的状况,大家需要去做什么,可能面对的困难是什么,说了很多他个人的理性思考,特别地真诚;而不是只顾着使劲夸自己公司有多牛,鼓吹你一定要来加入我们什么的。与其说是一场面试,我觉得更像是一次工程师之间的平等交流。」徐湘说。

一次坦诚的交流,最终让手头已经拿到微软美国的 offer 的徐湘,放弃了更「稳定」的那边,选择了未知性更大的 Pony.ai。

因此,后来轮到徐湘来面试新人的时候,他也会去在面试中保持真诚的态度,传承团队一直以来的可贵品质。因为他深知,一个优秀年轻人与自动驾驶的「结缘」,可能往往就始于一次美好的面试。

「我希望通过自己的经验,告诉对方,这个世界上还有自动驾驶这一充满挑战的领域,值得优秀的人加入。」

技术推动科技,一次不后悔的选择

徐湘看来,能加入 Pony.ai 的都是既仰望星空,又脚踏实地的一群人。

「我很享受目前的技术氛围和工作状态。」他说。

在 Pony.ai,每个人都有机会在日常工作中,与不同 site 的技术大佬成为携手挑战困难的「网友」,这也更好地帮助公司的新人迅速融入公司、找到工作节奏。

随着公司的发展,越来越多来自不同国家的优秀工程师加入 Pony.ai。多元化的成员带来了多元化的思路,对徐湘来说,他们的加入,让自己对湾区自由而开放的技术文化有了更多的体会。

在徐湘的规划中,他更希望成为一个钻研技术到极致的,能够解决某个领域所有难题的 IC(individual contributor)。

「我的性格不是那种需要外界肯定或者时不时来个里程碑才能不断前进的人,如果我觉得一个事情是有意思的,有价值的,即使它短期内不会得到什么结果,我也会保持激情一直研究下去。」

在徐湘的眼中,Pony.ai 并不是一个「传统互联网公司」。

对大多数的互联网公司来说,无论是 to B 还是 to C 领域,多是产品为王,只有能带来现金流的产品才是立身之本;而几乎所有的自动驾驶公司,目前还都处于技术积累并寻求技术突破的阶段。

在互联网公司里做技术,往往需要去对接产品、运营、设计还有市场;工程师的代码是否有价值,最终还是基于产品最终是否能符合用户期望、是否得到市场肯定来评判的——曾在 Hulu 实习过的徐湘充分地感受过这点。但在 Pony.ai,衡量工程师作品的标准来自更多的层面,除了最直接的能够反映自动驾驶车辆实际上路运行的各项指标外,基础服务的稳定性和便捷性等因素,也都是评价影响力的重要标准。

「在我自己的认知中,技术问题可能分为两种:一种是人为问题,一种是自然问题。人为问题就是通过技术手段满足诞生于产品本身的非自然需求,比如如何通过技术手段让用户的注意力在当前页面多停留 5 秒钟;而自然问题则是技术在面对自然环境中遇到的真实挑战,比如无人车如何正确识别看到的路边树木和行人——在绝大多数的互联网公司,其实工程师们都是在解决上面所说的人为问题。」徐湘表示。

「作为一名工程师,特别是选择成为一名自动驾驶工程师,我可能更希望把自己沉浸在技术问题上,往大了说,我希望有朝一日通过自己的技术和研究,推动人类科技的发展,哪怕一点点也好。因此,相比于在传统互联网公司,在这儿更能让我感觉自己的技术真正发挥了价值。」他说。

「基于这个层面,如今回头看看两年前的这个选择,我一点也不后悔。」