Archive ← Prev Next →

D5P398-210624

2021 TuSimple 实习日记(上)

6.14,我在图森的实习开始了!开始前,我刷了一遍(我混入的)亚麻实习微信大群,大家吐槽最多的是 mentor 或 mgr 没时间(比如因为 on-call)、失约、去旅游了、不接电话、中途离职跑路或被调走(极其常见)、不清楚政策、不熟悉 project、无力解决实习生的技术问题、给的文档让人看不懂,遇到 blocker 一卡可能就是一两天…

我还是被分到了 Map Infra 组,我本来说我前 2 个暑假都在搞地图,不想继续搞地图了,开始前我应该联系当时那位 HR 聊分组的事的,不过无所谓了。后来想想,总是搞地图也许也是件好事;老爸强调过要把 SWE 和某项具体业务结合,地图是生活中的必需品,而且如果世界按万物互联的趋势发展,地图的提升空间还很大,未来我可以选择深耕这一领域。

6.14 见了 mentor 和组长,组里除了我共 6 人,一位港中大 PhD 毕业的组长、4 位 Sr SWE,这是职级的通货膨胀嘛…(后来发现我们组好像是例外,其他组平均职级远没这么高。回想起了我腾讯的组…)

6.15 忙着配环境、设置 VS code SSH,哇,如果当时 224n 我会这种操作,那就不用整天 git pull 或者远程 vim,得方便很多了!第 1 周学了点 vue.js,真是太庆幸我上了 CS142、暑假前两周自己又实践做了网站!

这里得提一下 783 对我的影响,至今记得第一次见面时(D5P342-200907)他说了句“我的目标很明确,就是要做全栈”,他的选课也确实是一系列挺实用的 SWE 课(当然也有 AI)。

6.16,我在小会上问了组长关于 return 的政策和对我的期望,了解到组里 2 位组员是去年的 intern return。另外一个关键信息是他们今年招的另一个 intern 给割了,这对我应该是利好。

6.18 组会上认识了其他组员们,这是唯一一次大家开了视频,平时开会大家都不开的。我们组每周只有 1 次组会,组长说现在这种组会的组织方式不太 scalable,他也在思考这个问题。话说我好像不用写周报,啊!太爽了!!以前在 GSILab,写周报真的非常耗费精力。

其中一位组员吐槽了他要做的一件事已经有其他人做过了,但“他的代码是给自己用的,我和他要求稍微有点不一样,就只能自己重新写码”,我虽然不知道细节,但很能感同身受。

我的第一项任务是写个 API(根据 GPS 点,返回卡车在此地拍摄过的图片,是个类似谷歌街景的功能),这需要“连接”起内部已有的一些 API。这让我想起了 761 对她去年 FB 实习的评价(如果我理解正确的话):上游和下游的 API 都写好了,她只要写些中间件把上下游给串起来。

这个 API 是 Map Platform 组的人整的,564 就在这个组。API 的教程写的其实算详细了(和我 RAship 遇到的文档相比),但比较过时,里面用的数据、路径早已不存在了,而且还有几个 subtle 的坑。6.21 我按照教程上的代码调 API,结果返回结果总是空的,于是去对应的 slack channel 问。(话说不仅是我们组,这个大 channel 工程师都通用中文沟通…)

这时,该 API 的另一个用户在 slack 上找我说,API 的负责人今天不在,他可以帮我看看;于是很耐心、客气地帮我分析可能的问题,还分享了他的代码给我。这件事挺触动我的,能够这样完全无偿的帮我,这就是 TuSimple 的文化嘛?i 了 i 了。

6.24 到 29 号 mentor 放假出去玩了,6.23 下午他带我过了一遍 Map Editor 的前后端代码结构,这个 tool 主要是 2 年前他和另一位不在了的工程师写的,mentor 说我的实习会围绕着它展开。晚上他在离开之前写好了 starter code 给我,这还是挺关键的,不然我还真不知道从哪开始。

Map Editor 是 TuSimple 内部点云数据的可视化软件。这个点云的作用有协助导航、交规信息预存等,每次卡车开始驾驶前,相关路段的点云会加载进车载电脑。现在只测绘了美国几条高速路的点云,因此自动驾驶还任重道远啊。这条感悟我和不少朋友都聊过了。

6.27,564 说他感觉组里每个人独立负责一个大 project,多人合作比较少。000 提到他去年在 TuSimple 的 mentor,评价他虽然厉害,但并不在意如何在团队合作情境下写码。

000 自己写的码也没写啥对应的文档,他评价这样的代码后来人是没法使用的。“如果有合作,那应该有 40% 的精力是花在写文档上”,我深以为然。

000 当时是科研岗,因此这不由得让我想起了我的 RAship。709 非常聪明,思维极其灵活,但他似乎认为我读懂他的代码、按他代码的思路继续写一些东西,是轻而易举的事,其实不然。这主要不是我的能力问题,却会使我看上去显得 incompetent。

6.30 早上 mentor 回来了,我们整了好久 mac 上面点右键被 JavaScript 认为点左键的问题。目前我写的后端代码,每个请求都得遍历一个 bag,要跑至少 30 秒,还不保证精度。下午的 3 人小会上和组长、mentor 讨论了一下,mentor 解释了为啥遍历需要这么长时间(和 bag 存储的方式有关),说 d2 应该提供一个跳着遍历的 API,这是别的组应该负责的事情。

他们说我可以先不优化,先把 feature 发布了,到时候会有各种人给我提需求。还在给我准备下一项 project,但“得先跟别组的大佬 argue 完怎么设计”再让我加入…

组长考虑了一下要不要发 ticket 给我,之后说算了,刚上手时谁也不知道我进展的速度会怎样。这才对嘛!(对比我在 lab 里那个蛋疼的周报制度。)另一个原因是 ticket 主要是要协调多组员工,上下游依赖关系复杂时使用,我现在的任务比较独立,所以组长说不需要 ticket。7.1,实习第 14 天,经历了各种卡住之后,我终于对之后的代码要怎么写有清晰的认知了。

前面提到 d2 这个内部工具的功能不全,7.2 早上,我在一个 slack 群里向 d2 的负责人确认过后,组长直接介入,向他怼了一句:“这合理吗?”这让我感触很深,想起地里有篇写 FB 实习的帖子里有句话:“好的 manager 是对内态度好照顾组员,对外强势能拿到好项目保证组内 grow ”,真高兴我的组长就是这样的人!

7.5 放假贼爽,工作以后真是比上学轻松好多啊;我的很多同学们也深有同感(761:上学仿佛同时在 4 个组 intern 而且没有 mentor),这让我突然断了延毕的念头,除非拿到特别值的实习 offer。看着 471 在全国到处玩、000 在全美到处玩,我想工作以后我也会是这种状态吧!

(中篇:D5P404;下篇:D5P405