已经是2024年12月了,不知不觉小X已经离职了一个月了。在这一个月里,我的工作陡然增多:代码没人review,bug来不及修,新方案不知道与谁商量……好在积压的烂活已经逐步被收拾完了(要不然我也没空来写博客),我又逐渐想起了和小X共事的点点滴滴。
小X比我入职要早,且一开始我们并不做同一个模块,所以交流也比较少,只觉得她是一个腼腆、话少的人(实际并不是)。后来组织调整,我负责的data pipeline只有我一人苦苦支撑了,当时的老板——老沙——就把小X和另外几个同事一起叫过来做数据这些活。这时候我才发现,她是一个纯e人,是一个人缘非常好,沟通能力很强,且做事面面俱到的人。我非常喜欢做系统设计,但是往往忽略了业务上的某些细节,这时候小X就会第一时间指出我的设计存在问题,她帮了我许多次。
小X在工作中一丝不苟,面对复杂的逻辑,她写的代码可以说是“密而不乱”,各种异常处理、边界条件往往都能考虑到。在对外沟通上,她也能调合各个团队之间的不同需求,能让大家都基本满意,之前算法团队的一个老板还专门写了感谢信去感谢她。但是她因为对工作近乎完美的态度也往往内耗,一些工作也因此延期。
23年的时候,我们的一个【开飞机换引擎】的重大项目上线前夕,小X负责的一个重要工具遇到了瓶颈。这个工具是一个文件下载器,它负责从云端把自动驾驶的bag数据下载到本地,并且按bag中的message时间拼接排序好(此处简略bag和message的定义,有兴趣可搜索Apollo CyberRT和Rosbag了解)。这个下载工具的逻辑是非常复杂的,它需要首先将业务信息进行拼接和转化,然后从文件元数据服务拿到所要下载的文件key,再从一个分布式文件系统seek每个key的前几百字节和后几百字节,拿到这个文件的内容索引,再根据索引下载每个文件的中间特定的message数据,最后吧把这些一条一条的message排序输出到一个queue里。这里面的难点除了逻辑复杂外,还有一些性能问题:一次下载可能需要总共请求200+个文件,要利用合适的并行度,分批次下载这些文件,还要按时间去排序。
小X做这件事做了很多天,到上线的前一周,整体的逻辑没什么问题了,但是某些case下载下来不是多一个message,就是少一个message,总之就是和手动拼的文件对不上。我觉得这其中有蹊跷,就约了一个会议室和小X一起排查问题。我们一行代码一行代码的看,有些线索,但是一直找不到根因。
不知不觉,一看时间都10点多了,我正在苦思冥想之际,突然发现小X眼里闪着泪光,我赶忙问她是不是太晚了,要不回家明天再看吧。她说:不,我觉得很难受,为什么小W、小F那边的工作都很顺利,他们都已经干完了,现在整个项目进度都卡在我这,是不是我自己太菜了,是不是因为我做的不好啊?我一下子震惊了,在这个时代,大家遇到问题不是向外甩锅,就是假装不知道,这种主动把问题往自己身上引,并且真的反思的人,我是没见过几个。面对心态已经崩了的小X,我说:今晚咱俩就在这查问题,查不出来这个BUG我们谁也别走!
不知道为什么,我们继续查了十五分钟,就发现代码里有一处明显的bug,是一个非常低级的错误(以至于我现在都想不起来为什么,但是我相信小X现在一定能想起来),我们俩都开心的笑了,小X还买了两瓶无糖可乐庆祝了下。出门看到门口滴滴的logo,我想,那天是我下班最晚的一天,应该也是我上班最开心的一天了。后来,这个重要的项目如期上线,如果没有小X的坚持与负责,可能项目会因此黄掉,大家都会受影响。
还有另一件事让我印象深刻,是关于数据生命周期管理。众所周知,在构建数据基础设施时,数据治理是至关重要的:如何准确识别冷/热/过期数据,并协调各方对过期数据进行清除、将冷数据迁移至冷备集群,这其中涉及的技术挑战与跨部门沟通难度可想而知。我们暂且不谈冷热数据的识别标准,只谈如何确定并清理过期数据这一项工作,在一个近千人规模的自动驾驶公司里,也是极具挑战性的:算法、工程、量产集成等不同团队对数据的需求显著不同,同一段道路场景数据,可能对工程团队而言一个月后就可以舍弃,但对算法团队来说,由于已经投入人力完成标注工作,希望能将其保留到传感器更换为止。这项协调各方立场、寻求共识的重要工作最终落在了小X的肩上。
很显然,数据删除是一项刻不容缓的工作,每提前一天确定删除策略,就能提前一天清理数据,从而提前一天停止存储费用支出,最终节省更多成本。在我的印象中,小X频繁地奔波于各类会议之间,而且大多是与各部门高层领导的会议。每次会议前,她都会编写详尽的文档分发给这些日理万机的管理者们。为了确保各业务方提出的数据保存需求都是合理的,她还需要在有限的时间内与算法团队的核心研发人员深入探讨技术细节,了解他们的数据使用方式以及长期保存数据的具体原因。就这样,一份份条理分明的文档逐渐成形,我们也由此制定出了一套套精密而复杂的数据生命周期策略。这时候小X又要马不停蹄的将各个删除策略实现,为了早一天删掉数据,她不得不压缩仅有的工期。在我看来,她搭建了一个又一个脆弱的通天塔,却支柱了我们组在成本上的这座大山。
或许是小X厌倦了这样的琐碎工作,不愿意再维护这些屎山,又或者是因为这个破公司给的钱实在是太少,待下去也不会有什么太好的未来,小X在某一天非常突然的提出了离职。我们的直属领导Mike对她各种挽留,还拖延了一段离职时间,可是她态度坚决,一定要离开这里。我知道后也并没有说什么,我觉得一份工作最重要的是自己开心,如果你觉得你的工作无聊,就算它能产生再大的价值,有再多的钱,也是不值得的。就这样,这位经常细致地review我的代码,帮我指出方案盲点的小X,暂时告别了我们这个小团队。或许我对小X的回忆带有着我的各种狂妄自大的偏见,但是从客观上讲:拥有这样一位同事,真的很幸运。