2020 年 9 月 9 日
相信很多人都看到了最近的刷屏文章,许多人都对外卖骑手的处境抱有同情。相应的,不少人也把枪口对准了美团,甚至对准了调度系统(以及开发此系统的工程师),认为恰恰是算法的“冷血”,造成了骑手的悲惨境地。
不过根据我多年的软件开发经验,我能确定的判断是:压榨骑手的,绝不是系统。
确实,无论什么系统,都是工程师设计出来的。无论什么工程师,设计系统的方法论都大致相同,这也是我在之前工作中反复宣导的,系统设计不可一概而论,也没有灵丹妙药,重要的只有一条:在约束条件下求得最优解。一旦约束条件搞清楚了,系统设计就成了“围猎”,基本是按部就班的事情。
我参与设计过的系统五花八门,即便是相同类型的系统,只要约束条件不同,最终形态也可能大不相同。比如有些时候内存有限,就应当把复杂计算拆解开,分若干步骤完成;有时候网速有限,就应当把数据压缩,并且排出传输的优先级;还有些时候时间有限,就必须升级设备或者多加机器;有时候必须按时上线,那么可用性稍差一点也无所谓;有时候安全性必须绝对保证,所以使用体验差一点也无可厚非……
或者说,系统设计如同走迷宫,约束条件是会“碰壁”的,阻力无穷大地方,为了走出迷宫,就不要去碰得头破血流,而应当在不会碰壁的,阻力小的地方想办法。
上面的道理说起来简单,实际做起来却不简单。许多系统设计时根本不会列明约束条件是什么,有一些看起来无从退让的要求,很可能有很大的折扣空间。也有一些不起眼甚至根本想不到的要求,却成了绕不过去的拦路虎。
恰恰是因为约束条件的不同,造成了问题所在的“局”不同,那么哪怕是同样的工作内容,也会有完全不一样的安排——如今我在欧洲工作,有两件事,让我印象特别深刻。
第一件是关于八小时工作制。
欧洲崇尚的是“工作-生活平衡”,所以八小时工作制对大多数人来说是天经地义、雷打不动的。我的上级也三番五次跟我强调,给团队安排工作时,能不加班尽量不要安排加班。按法律规定,加班一小时的工资是正常上班时间的
150%,所以与其多加班还不如多招人,尽量在八小时之内解决。
可是,不加班怎么完成工作任务呢?在国内,大家都习惯了“爱拼才会赢”,工作时间,或者说人力资源的供应,从来都不是一个约束条件,似乎像海绵里的水,会源源不断地涌现。如今它成了硬性约束,该怎么办?
我花了比较久的时间才认识到,德国人习惯的“八小时工作制”并不是懒,八小时之内工作安排得再满都可以,但绝对不要超过八小时。这就意味着制定计划必须再三考虑,确保员工上班的每一分钟都得到充分利用。于是需要更周密的计划,更详细的分析,更严谨的逻辑。
等我再回头看之前习惯的“先开火再瞄准”,发现它真是一种奢侈的工作方式。许多项目明知不可行却不敢公开讨论,许多方案根本没有论证清楚就匆匆上马,许多设计根本摆脱不了“上线后狂打补丁”的命运……不过我也知道,这种“奢侈”也只是在欧洲看来比较奢侈而已,毕竟约束条件达不相同。
第二件是关于劳方权利。
有次我和一个关系不错的员工聊工作,因为任务比较紧张,虽然他已经申请了年假,还是希望他能体谅公司的难处,能够安排调休,或者之后多放几天假也可以考虑。
我本来以为这是情理之中的请求,应当没有问题。却不知道他沉下脸,一本正经跟我说:
确实,咱们俩是朋友。而且我也知道,最近确实资源很紧张。但是你要知道,休年假是我的正当权利,这是受法律保护的。虽然咱们关系不错,但你没有权利强迫我放弃这种权利。公司的事情有难处,那首先是你的责任,是你要考虑的问题。牺牲我的权利不是你的选项。
虽然我平时也倡导“有话直说”,但这么直接的表达,对我来说还是第一次。这时候既不能苦口婆心劝导“有大家才有小家”,也不能不屑一顾地反驳“不要太天真”,只能承认对方说的有道理,自己再想别的办法。
在这之后再遇到类似事件,在谈话之前我都会努力搞清楚,法律是怎样规定的,对方到底拥有哪些权利。虽然起初看起来很烦,但适应了也就不觉得那么烦——搞清楚了约束在哪里,同时也就搞清楚了机会在何方,只要脚踏实地开动脑筋,而不是空泛地坐而论道,总可以找到出路。
现在我们回到骑手的悲惨处境。我坚持认为,问题的根源并不是工程师的冷血,也不是资本的无情,潜力的挖掘,一定是朝着约束最弱的方向进行。
在不断缩短的送餐时间面前,骑手只能冒着生命危险选择超速、抢道、逆行,而一旦发生意外,之前每月扣款的保险却踪迹全无……这些血淋淋的惨状,为什么竟然没有多少约束力呢?
不直面这个问题,再多的讨论和呼吁,都是苍白的。