我想成为“特斯拉杀手”。大众的新0.3是该公司第一款批量生产的全电动汽车,也是这家德国汽车制造商尝试为电气化世界重塑自己的第一步。这可能使它成为自1976年推出最初的高尔夫以来最重要的型号。0.3次也晚点了。从机械上讲,这辆车很不错。但一些如今是一大卖点的软件小部件-传言包括智能手机连接和增强现实停车辅助-一开始可能会丢失,但后来又增加了。原定于今年夏天发射,现已推迟到至少9月份。
并不是唯一一家努力让电脑正常工作的大公司。去年,英国银行因在线中断和拙劣的升级导致数百万客户无法支付或接收付款而受到监管机构的严厉批评。有些问题要严重得多。波音公司的737飞机在2019年停飞,此前发生了两起致命的坠机事件,部分原因是软件缺陷。自那以后,调查人员发现了较小的细菌。例如,航空公司现在被建议每隔51天关闭一次飞机,停止其计算机在飞行过程中显示虚假数据。2017年在波音的欧洲竞争对手空中客车(Airbus)制造的一些飞机上发现了类似的问题,促使欧盟航空安全局(European Union Aviation Safety Agency)要求此类飞机至少每149小时重新启动一次。
对公司困境的指责往往最终出现在董事会会议室。有时这是公平的;丹尼斯·穆伦伯格(Dennis Muilenberg)在737 MAX客机惨剧后被迫辞去波音(Boeing)总裁一职,这是理所当然的。但并不总是这样。因为软件很难--而且很难跟上。预计要生产它的员工往往是一门学科的产品,而这门学科在许多方面都是奇怪的前现代风格。当软件“吞噬世界”时-硅谷代表的是大多数公司或多或少都是软件公司-这很重要。
从计算机代码本身开始。编程需要超文字和创造性的混合。微小的错误,如放错位置的标点符号,可能会完全改变系统的行为。业界的一条经验法则是,根据程序员工作的仔细程度,他们编写的每1000行代码中会有0.5到50个错误。由于汽车和飞机包含数千万条线路,因此无错误系统的可能性实际上为零。即使细菌不会导致灾难,它们也会持续拖累公司的生产力。一项由数字支付处理器Strip委托进行的调查显示,开发者平均每周花21个小时修复旧的或坏的代码。
软件工程作为一种职业的缺点使编程固有的困难变得更加严重。这些都在一本名为“软件的问题:为什么聪明的工程师写坏代码”一书中进行了阐述。作者亚当·巴尔(Adam Barr)在软件巨头微软(Microsoft)担任了20年的开发人员。他指出,许多程序员至少部分是自学成才的。这导致了坏习惯,而软件工程课程无法纠正这些坏习惯。学术界和产业界之间的交流太少,在教授什么或灌输什么习惯方面也没有真正的共识。巴尔认为,其结果是,在这个领域,民俗和时尚往往取代了专业标准。
为了说明该领域不稳固的基础,巴尔提到了谷歌或苹果等科技公司流行的一种做法,即让求职者在白板上解决一个编程问题。很少有其他领域会有这样的表现,因为他们认为,借助于毕业,申请者已经达到了基本的能力水平。在被录用之前,医生们并不指望进行解剖学测验。机械工程师不需要草草写下牛顿运动定律来证明他们的诚意。
所有这些问题都因软件工程令人喘不过气来的变化率而雪上加霜。即使一个系统正常工作,它也很快就会过时。英国银行的困境在很大程度上是试图维护这样的“遗留”系统的结果,这些系统是由离任已久的程序员(通常是外包的)用几乎被遗忘的计算机语言编写的,以满足没有人完全记得的标准。在添加漂亮新功能的压力下,程序员通常会偷工减料,为(越来越遥远的)未来积累问题。
一位有几十年经验的专家说,其结果是,闪亮的新系统可以迅速演变成摇摇晃晃的、不太了解的装置,用胶带和祈祷粘在一起。最终,成本变得太高,不容忽视,公司必须升级他们的系统。但这是最危险的时刻,因为新软件必须做那些不太了解的旧软件所做的一切,甚至更多。重复一个常见但恰如其分的类比,就像重建飞行中的飞机一样。
正在尽最大努力解决.3的时髦特性带来的问题。该公司希望将大部分软件开发带回内部,并已花费70亿欧元(80亿美元)在一个闪亮的新“数字单元”上。这可能是个好主意。然而,正如巴尔所说,编写软件的结构性问题意味着,花钱买软件本身并不能保证成功。像特斯拉或Monzo这样的初创企业所拥有的一大优势是,他们的程序员得到的是一张白纸。Monzo是英国一家新成立的在线银行。由于没有遗留系统需要维护,需要根除的旧错误也更少,他们的软件更加健壮,开发人员可以将更多时间花在客户想要的功能上。
如果这对那些没有从头开始的简单方法的老公司来说是一种冷淡的安慰,那么计算灰胡子提供了某种程度上的安抚。他们预测,初创企业的优势将被证明是暂时的。虫子会爬进来的。Bodge作业将不会被修复。开发人员将带着知识离开。今天活跃的篡夺者将成为明天笨拙的现任者,被他们陈旧、不可靠的人所拖累-反过来,颠覆的时机已经成熟。。
这篇文章出现在印刷版的商业版上,标题为“当比特咬人”。