几年前,一位名叫 t0st 的孤独程序员做了一件非同寻常的事:他修复了《GTA Online》中一个长达 8 年之久、令玩家抓狂的错误。这个错误?令人痛苦的漫长加载时间,有时长达 20 分钟。而单人模式的加载时间只需几秒钟。他的解决方案非常优雅:13 行代码的调整就能将加载时间缩短 70%。摇滚明星游戏公司(Rockstar Games,《GTA》的幕后工作室)给了他 1 万美元的悬赏金,并修补了游戏。问题解决了,对吗?
不尽然。
互联网上的批评声此起彼伏。一家价值数十亿美元的公司怎么会错过如此明显的事情?是他们的开发人员无能吗?作为一个在技术领域工作过的人,我可以告诉你答案并没有那么简单。真正的问题不在于开发人员懒惰或技术无能。而是即使是最简单的修复,也会在企业优先事项的迷宫中迷失方向。
让我为你描绘一下幕后可能发生的事情。
错误的生命周期
想象一下在 Rockstar(或者任何一家大型科技公司)发生的对话:
第一年
Dev 1:”嘿,我觉得我们可以通过修复解析 JSON 的方式来改善加载时间。这是一个速赢方案。”
开发人员 2:”听起来不错。创建一个票据,这样我们就不会忘记了。”
产品经理 “需求里有这个吗?没有吗?好吧,我会将其标记为技术债务,并将其添加到积压工作中。”
第 3 年
Dev 3:”这个 JSON 瓶颈还在。我们是否应该优先处理旧票据?
产品经理 “我们本季度的重点是下一个 DLC 和微交易。也许明年吧。”
第 6 年
产品经理: “这张票据是 2013 年的。现在还适用吗?”
开发人员 35:”不知道。代码库已经重写了两次。可能不相关了。我们把它存档吧。”
第 8 年
开发人员 N:“嘿,我想我们可以通过修复解析 JSON 的方式来缩短加载时间……”
如此循环往复。
好 Bug 为何得不到修复
这不仅仅是 Rockstar 的问题。这是一个大公司的问题。下面就是为什么像这样明显的 Bug 也会被忽略的原因:
1.需求 “暴政
在大型企业中,一切都围绕着路线图展开。如果漏洞修复与特定需求或功能无关,就会被贴上 “技术债务 ”的标签,并被推到积压工作的最底层。老实说,“技术债务 ”就是 “我们永远不会处理这个问题 ”的企业用语。
2.所有权旋转门
八年来,开发人员和产品经理来来去去。最初提出申请的人呢?早已不复存在。了解问题的人呢?转到了另一个项目。机构记忆逐渐消失,票据成为过去的遗迹。即使问题依然存在。
3.快速修复 “的神话
一个 13 行的补丁看似微不足道,但在遗留代码库中,即使是很小的改动也会带来意想不到的后果。在没有适当测试或文档的情况下,开发人员往往会对修改旧代码犹豫不决。破坏某些东西的风险远远大于修复一个非关键错误的回报。
4.无形的投资回报率
实事求是地说:改善加载时间并不会直接影响底线。销售鲨鱼卡(《GTA》的虚拟货币)才会。公司优化的是季度收益电话会议上显示的指标,而不是商誉或用户体验,直到为时已晚。
毫无改变的快乐结局
t0st 的修复对 Rockstar 来说是一次公关胜利,但并没有解决根本问题。每修复一个备受瞩目的漏洞,就会有成千上万的漏洞被积压、遗忘和忽视。这里真正的启示并不是公司不关心漏洞。而是他们常常被相互竞争的优先事项、官僚主义的惰性和冷酷的利润计算所麻痹。
因此,下次当你盯着加载屏幕或咒骂故障时,请记住:敌人不是懒惰的开发人员。而是将用户体验视为事后诸葛亮的系统。直到一个外来者逼迫它出手。
元素周期表抱枕