德国福斯汽车(Volkswagen)美国分公司CEO麦可•霍恩(Michael Horn)不情愿地出席美国国会听证会,他坚决采取顽抗的姿态,指出为福斯带来灾难性后果的「减效装置」(defeat device)造假事件的幕后真正黑手:「这不是公司所做的决策。董事会议或监事会议都没有授权做这件事。」霍恩宣称:「这完全是一群恶劣的软件工程师不知为了什么原因,放入那个软件的。」
天啊!让我们暂时不理会,这场听证会隐含的意义,就是展现这家汽车业巨擘拥有卓越的工程文化。先来看看听证会里呈现的是:福斯的管理监督做法是彻底的失败。这也就难怪董事长暨CEO马丁•文德恩(Martin Winterkorn)必须辞职。因为,他的「管理高层风气」让欺骗做法在公司里生根。
是什么让福斯汽车的「恶劣员工」这么有把握,他们的数字造假和欺骗行为可以这么久都不会被抓到?他们厚颜无耻的程度实在令人感到泄气。无论是基于什么理由,他们似乎并不害怕自家公司的品管或测试流程。为什么会这样?福斯实在应该化繁为简,那些流程在技术上有缺陷且错误百出。
霍恩的抱怨仿佛重现了过去曾出现过的「数字失效」景像。他口中的「恶劣软件工程师」,呼应了几年前瑞银(UBS)和摩根大通(JPMorgan)高层抱怨的「恶劣交易员」,那些恶劣的交易员造成公司数十亿美元损失。喔,那些恶劣的家伙!他们真的那么聪明不被查到吗?或者,其实是有人允许他们规避那些原本应该用于防范业务过失的企业软件系统与防护措施?
差劲的主管支持差劲的员工,这就是坏消息。
初步的证据,来自福斯汽车高层主管自己的说法。媒体引用福斯设计长克劳斯•毕斯科夫(Klaus Bischoff)的说法,他表示无法想像文德恩会知道或容忍作弊:「他是个彻头彻尾的工程师,专精于汽车的物理层面,完全没有涉入软件事务。」
解读一下!当然,CEO绝不会刻意支持作弊,但这种「工程卓越性」的观点似乎是出自1995年的观点。而在目前和未来,真实世界里汽车的物理特性和实际的行为,愈来愈是由软件来定义与决定。在(重新)塑造高性能汽车时,数百万行程序代码的重要性,等同于、甚至超过任何空气动力、材料或热力领域创新的重要性。的确,常常是靠程序代码来让空气动力、材料与热力创新得以实现。
毕斯科夫诚恳的评论,差不多等同于观察到波音(Boeing)或空中巴士(Airbus)的CEO,是「彻头彻尾的工程师,专精于飞行物理学,但完全没有涉入软件事务。」请容许我说,一个人不可能是航空或汽车领域里彻头彻尾的工程师,却完全不处理软件事务。若没有软件,二十一世纪的飞机不可能飞行,汽车也不可能行驶。这是无庸置疑的。
你一定要指望领导人发挥作用。福斯汽车的「程序代码审查」(code review)在哪里?让福斯与奥迪(Audi)汽车能上路奔驰的程序代码,是由谁负责?
对于以数字科技驱动的创新者来说,若要确保健全的软件文化和高质量的软件开发工作,程序代码审查是不可或缺的一环。Google、亚马逊(Amazon)、奈飞(Netflixe)、脸书(Facebook)之类的公司,都把程序代码审查当成程序代码人员沟通、协同合作的重要核心。程序代码审查提供一个平台与流程,用更好的方式来管理软件,并管理更好的软件。
有位程序编码大师言简意赅地表示:「同侪程序代码审查,是改善程序代码的单一最重要关键。」
众目睽睽之下,问题无所遁形。我参与过世界各地的程序代码审查;通常这种审查是相对开放透明的流程,会让人不敢欺瞒与造假。程序代码审查参与的人愈多、愈公开,就愈不可能会让错误的程序代码留下,恶劣的软件工程师也待不下去。很难让人相信,无论是福斯汽车的技术领导人或软件工程师,真的有严肃看待程序代码审查这件事。
的确,世界级的企业会向外寻求启发与见解。年长和年轻的外部人士,都受邀来听取、建议、协助进行这些审查。新观点很重要。有问题与棘手的地方,要花更多的时间与精力来处理。受命达成非常高标准成果的团队,能得到最多的同侪与外部支援。
网路时代的程序代码审查所用的数字工具、技能与技术,都已大幅改善。机器学习与预测性分析,必然很快就会在促进有效的程序代码审查中,扮演更重要的角色。
这类做法超越狭獈的法律目标,像是如何保护软件专利权,以及「数字千禧年著作权法案」(Digital Millennium Copyright Act)不会强迫揭露资讯。谁在乎这些?这件事攸关的是企业文化应致力强调质量:如果有能力的外部顾问没有参与程序代码审查,那么你就不可能达到世界级水准,也不可能成为最佳实务。
企业的财务部不只要采取内部控制,也仰赖外部稽核人员,同样地,正派的编码做法,也需要类似的监督与协助。信任,但也要查证。
因此,态度认真的高阶主管不会视程序代码审查为技术怪才的游乐场,或是软件的「质量圈」(quality circle)。他们清楚知道,同侪审查有助于顶尖人才创造出理想的数字成果。对软件了解有限、但非常理解它的影响力的企业高层,更能追踪事情的进展,并作出贡献。
是的,错误难免会发生。是的,坏程序代码就像打不死的蟑螂。但是,健全的程序代码审查文化,就像健全的风险管理流程,让有心作乱的人日子不好过。我们从过去的金融灾难得到一些教训,福斯软件造假的真相解开后也会带来类似的教训,那就是,恶劣的人并不是避过企业高层的监督而安然存在,他们之所以存在,是因为企业高层疏忽失职,没有善尽监督之责。