当“代码天才”一猛子扎进街头巷尾

中国青年报客户端  |  2021-10-19

中青报·中青网记者 李晨赫


天才少年的职业轨迹好像很难拐到外卖骑手这条路上。然而从小就是“别人家孩子”的高成良,就这样一头扎进了车水马龙,做起了骑手。

高成良是外卖配送业务的算法工程师,从小就是学霸,北大计算机专业本硕连读毕业。刚上大三,就成了以课程难度高、任务量大闻名的《计算机系统导论》课程的助教。2019年,他入选了北斗计划——美团面向全球顶尖校园科技人才的招聘项目。这个项目里藏龙卧虎,有人一出手就将论文发表在行业“顶会”“顶刊”,引用量行业领先;有人在ACM竞赛(国际大学生程序设计竞赛)中连拿8块金牌;有人本科还未毕业,就发表了连副教授都鲜能取得的学术成果。

今年九月,高成良和其他几名同事一起,开启了一场“田野调查”。不同于虚拟世界,一线的配送体验让他感受到了“另一个平行宇宙”。“再精密的数学模型,在现实面前也变得笨拙。”如今,高成良不再认为“做一杯奶茶要多久”是个简单的问题。这个问题的背后,是真实世界的百态,是人文的关怀,是科技的温度。

 

“更合理就是更有人味”

 

“就是很着急,眼看要超时了,就会慌。” 高成良说。一天,他顶着烈日一口气接了三单,同时送。最后,有一单餐超时了,“用户填错了地方,我在隔壁小区转悠了20分钟也没找到,后来跑过去才给到他”。

    图为送餐途中的“北斗少年”。

 

这只是送餐体验中的一个小概率事件。在骑手访谈中,他听到了更集中的“吐槽”。骑手们反映最多的问题是“等餐”问题,这是送餐过程中最大的不确定性。一旦出餐晚了,就会影响多个订单的配送。

这个痛点逼迫他和同事们走向外卖的上游——餐厅。为此,高成良来到一家奶茶店“蹲点”。他站在出餐口,一方面观察商家的外卖制作流程,抽空访谈店员了解备餐流程;更重要的是,他要在出餐后马上拍照,记下出餐时间,骑手到店、取餐后,再记下时间。

图为在商家店铺里调研的“北斗少年”(左一)。

 

“接单后有几个厨师准备,是流水线作业还是单人负责,外卖和堂食谁先做等等,这些问题我们坐在办公室不可能知道,也就无从更好地建模,只能拿历史数据做粗略拟合。” 高成良和同事们希望把这些流程搞清楚,“你只有知道线下发生什么事,才能刻画好线上的模型”。

参加 “田野调查”的还有比高成良早一年入职、毕业于清华的第一届“北斗少年”陈啟柱。他说,“合理刻画模型的核心是根据人、货的线下实际行为,找到可以确定‘信任’的数据,再尽可能地根据现实,选取核心变量进行建模。简单说,就是要清楚地找到实际和电脑里数据、模型的差异和产生的原因。”

陈啟柱的工作是设计更加合理的算法,让快驴进货业务的送货车更快捷地为商家们送去新鲜的米面菜肉。为此,陈啟柱曾前往全国各地的城市仓库实地深度调研,从北京的办公室飞到业务城市的仓库,常常一待就是一周。

夏天的南方城市,即使是凌晨也闷热难耐。陈啟柱坐在小面包车的副驾驶位置,记录下送货路上的每一个节点,几点下环路,几点拐进城中村,哪里的路不好走,卸货要花多久。

陈啟柱之前没想到,跟车流程中,自己的工作内容还包括要不停安慰身边的送货师傅。一次跟车,他特地选了新手师傅小张。小张对路况不熟,小面包车在坑洼路上摇摇晃晃地前进,催单的电话响了一路。

     图为跟车过程中,算法工程师(左一)在观察记录。

 

有些商家着急了,骂起了人。小张不还嘴,一个劲回话,“路上了,马上来,你别骂人。”到了地方,他急匆匆地卸货,等急了的商家还在骂,抱怨耽搁了自己做生意。当时的场面让陈啟柱有点手足无措。他试着安慰小张,“吐槽”说,这个商户太过分了。

跟车过程中,他全程都在观察记录,“掌握的变量和不确定性越多,刻画出的模型才能更合理”。

什么叫更合理?他想了想,“就是更有人味”。

 

如何教机器“做人”

 

这些非典型的程序员生活,让陈啟柱发现,原来看到的数据,其实很多是不可被“信任”的,因为它们很难准确反应彼时彼刻正在发生的现实。在办公室里,陈啟柱能看到货物的重量、体积、件数等基本信息。理论上,系统会根据这些信息进行调度和路径规划。但在现实中,送货车能装多少货,还与货物的品类强相关,一些蔬菜在表格里的体积很大,但挤挤也能放得下;而像鸡蛋、纸巾等货物,就不能用同样的逻辑来处理。要解决这些问题,程序的复杂度会指数级上升。

再比如,司机师傅会在每送完一个商家后在软件上签到,但实际情况往往是,司机送了这一家后,过了一个小时才想起来签到,不去现场了解,根本就不知道这些数据会有偏差。

高成良之前做过一个案例分析,点了同样餐品的两个订单,下单时间仅仅相差5分钟,但晚下单的那份餐,隔了将近半个小时才出来。

去实地调研后,他发现影响出餐时间的因素,比想象中多很多。商家后厨的工作流程、对外卖和堂食是否区别对待、同时间同品类的订单数,都是影响因子。高成良判断,也许是那份早5分钟下单的餐品刚好跟堂食一块做了,也可能后厨师傅的人数和制作流程随着单量临时调整,这些都会导致出餐时间差了很长时间。

无人车感知团队的“北斗少年”尹轩宇有一次哭笑不得的经历。车辆在实际路测行驶中,激光雷达监测到了一个奇怪的障碍物,从来没有被标定过。实际情况是,那是皮卡车货箱里的大型玩具飞机。而对于机器来说,只识别出障碍物的意义并不大,因为无人车系统对人的处理、对不同车辆的处理是不同的,如果不能判断障碍物是什么,机器就很难进行下一步的决策规划。

研究配送无人机AI视觉的姜名扬记得,今年4月底,深圳配送前线的运营群里传来消息,无人机在降落时发出预警,安全员及时接管,虽然没有影响完成配送任务,但必须马上找到问题。

看到飞机传感器图像后,姜名扬找到了问题的症结——那个季节深圳的太阳高度角会在90°左右,在无人机的眼睛里,降落点的马克板“过曝”了,触发了安全保护系统。

    图为工程师们在测试场试飞配送无人机。

 

在之前成千上万次的飞场测试中,这种情况从未出现过。姜名扬和团队分析,这是因为之前不计其数的测试,都在北京的郊外和8、9月之后的深圳进行,北京的太阳高度角永远不会那么高,而在8月之后,深圳的太阳高度角也不会接近90°。

对姜名扬来说,这是复杂多变的现实世界给他上的生动一课。“我们想用科技让人们的生活更美好,那就得不得不走出办公室和实验室,找到代码世界和真实世界的客观冲突,然后解决它们。”

 

改变线下真实场景

很难,但更有趣

 

从单调的办公室走到包罗万象的街头场景中解决实际问题,给了这些“北斗少年”更多挑战,也给他们带来更大的成就感。

毕业前,高成良的实习工作是做推荐算法,这个领域的问题相对成熟,而线下配送场景则具有高度的不确定性,问题之间相互关联,难以精确求解和刻画,和推荐系统完全不同。“我推荐给你一个物品,没有推荐好也几乎不会影响其他人,但配送是一张网,一个节点的变化会引起一连串反应。”

他现在所做的,就是更准确地在系统里刻画出餐时间,让商家、骑手和用户都获得更好的体验。对他来说,这种底层的系统建设很难,但更有趣。

回到北京办公室的陈啟柱,也会重新分析跟车送货时的情景,电脑里的哪些数据可靠,哪些线下的行为模型需要重新建立,他要一一抽取特征,建立样本,朝着更加符合实际的方向训练机器。

新一版的排线系统考虑了调度员历史的排线习惯和司机历史的配送习惯,刚一上线,就得到了正面反馈,线路不会像以前“飘来飘去”,反映排线效果的关键数据指标也大幅上升。

最让陈啟柱感动的是前线业务同事发到群里的大拇指,这意味着,司机师傅们的体验更好了。这是将科技运用到线下真实场景的独特魅力,“你在和一个真实的世界打交道,你做的事与真实的人建立了感知和联系,并实实在在地改变着世界。这种成就感和满足感是纯线上工作很难体会的。”他说。

     图为工程师们在飞场测试新写的算法。

 

现在,他和同事们做的事情已经深入到生活服务的各个角落,包括让配送无人机飞得更稳更可靠;让系统更精准地预估一份外卖的出餐时间,减少骑手的等待,用户更及时收到新鲜美味的菜肴;让商家早早收到物美价廉的食材,进而获得更多的收入,实实在在地促进实体经济的高质量运转。

“如果你做了一件能够影响真实世界的事,即便非常小,但当乘数非常大时,你也能真真切切地改变世界。”陈啟柱说。

“作为用户的时候主要关注哪个商家的饭好吃、便宜,作为算法工程师就会思考我们系统中的各个环节有哪些优化空间。”“田野调查”结束后,这群“北斗少年”手上的外卖,从此多了一种不同的滋味。

(文/李晨赫)