第1章 山雨欲来
2009年7月15日,22岁的新罕布什尔州居民Josh Muszynski在加油站刷卡买了一包烟。几个小时之后,在上网查询银行账户的时候,他发现买这包烟花了23 148 855 308 184 500. 00美元,如图1-1所示。[1]
图1-1 Josh Muszynski的银行账目
这个数读作“两万三千一百四十八万亿八千五百五十三亿零八百一十八万四千五百”美元,还要因透支再加上15美元的费用。这是当时美国国债的2007倍。
Muszynski的信用卡公司VISA在声明中解释道,包括Muszynski在内的“不超过13 000笔预付款交易”,是由于“VISA信用卡处理系统中出现一个临时的编程错误导致少数VISA预付款账号的部分交易记录出现错误”。在随后的声明中,VISA告知客户:“问题已解决,所有收错的款项都被取消,错误的交易记录已被移除……此次意外不会对VISA卡用户带来经济损失。”
没有经济损失?Muszynski可不这么认为。他为了解决这张天价账单的问题,只能亲自在银行和信用卡公司之间来回奔走,耗费了大量的时间和精力。
虽然此问题在几天后解决了,可Muszynski从未收到过任何对此事件的正式解释,只是自己在网上搜寻时才发现上述声明。他只能自己不断刷新查看银行账目,才能确认这张天价账单被取消了。
我与Muszynski谈起此事时,[2]他说:“他们竟然能让这等事情发生,这已经够让人吃惊的了。更夸张的是,问题发生后,他们压根儿没有发现,竟然还要我自己去通知他们。”Muszynski仍是该银行的客户,但他现在每天都会查询确认自己的银行账目。事件对他生活的另一个影响是,他的消费习惯变得更传统:“我以前总依赖信用卡,但现在都用现金了,跑银行把现金提出来花其实更容易、更安全。”
如果让那些靠ATM手续费大赚一笔的银行听到这句话,他们一定会乐开了花。客户愿意排长队接受ATM机服务,而不愿为可能的系统差错冒风险。
1.1 差错不只是不便
我们生活的世界,几乎每一天,都会发生大大小小的影响众人生活的计算机错误。在本书中,我们主要从软件开发及其对业务和客户的影响的角度探讨这些差错。更准确地说,我们讨论的是当前软件的开发和管理方式,以及脱节的开发方式和方法论将如何导致软件代码中的缺陷,并最终影响提供给客户的产品及服务的质量。
当这些差错没有对我们造成直接影响,我们最多就是耸耸肩,转头就会忘掉。可是,想想那些因计算机差错航班延误而在候机室焦急等待的顾客,想想那些因自动划账出现问题而被判为欠缴房贷、丢失信用的房奴,这可不是能耸耸肩就完的事,这类事件还会由于Twitter和Facebook等社交媒体的兴起,造成更大更深远的公众影响。用Google搜索一下上文天价烟的故事,你能马上看到包括报纸新闻、博客、广播、电视在内的44 800多个媒体报导。
对这些出现系统差错的企业来说,修复系统问题的成本甚至比重建品牌形象更高。因为看起来无伤大雅的小问题可能是全系统问题缠身的征兆,修复成本将日复一日水涨船高,这些始料未及的代价包括要大范围重新开发软件或停机数小时甚至数天以发现并解决问题等。
系统停机给组织造成的直接损失也许是可计量的,但考虑到公司规模、年收入、违约罚款等各种因素,真正的影响将难以估量。
Bill Malik是位于康涅狄格州斯坦福市的IT行业分析公司高德纳的分析师,他在一篇研究报告中指出:“只考虑行业平均水平的停机故障评估都是有误导性的。”高德纳公司的分析师认为,要有效评估停机故障损失,考虑各关键业务流程故障时,不仅要针对普通情况,还要针对最坏情况,考虑收入、利润、人力资源成本等多方面的损失。[3]
1.2 差错背后
信息科技日新月异,我们不禁要问:为何软件差错依然层出不穷?为何问题越来越多而不是日渐减少?信息科技已深入商业和个人生活的方方面面,其中一个差错可能需要数天、数星期乃至数月的时间来弥补。我们要采取怎样的措施,才能防止我们犯下这样的错误,同时也保证我们不受其害呢?
影响商家和消费者的计算机差错层出不穷,航班延误、存款出错、账目错误只是沧海一粟。全世界的公司,无论是什么规模,都已大量引入信息科技,同时也显然引入了大量系统差错的隐患。今天,这些故障对我们的影响已渐渐浮出水面,所不同的是在未来,随着我们对信息科技和计算机网络的进一步依赖,其影响将更深、更广。我们在工作生活中无时无刻要与办公室以及世界各地的朋友保持联系,这是用数以百万行复杂的代码支撑的。要在其中准确发现差错将更加困难,当问题发生时,停机时间会更长,代价也更大。
这种窘境是如何形成的?为何我确信类似上文所述的问题必将发生?简单一句话:我们不经意造就了一个狂热追求“革命性技术”的业界,总幻想能有某种捷径多快好省地构建IT基础设施——也就是未来整个社会的基础设施。我们在软件开发过程中,总想找捷径快速开发、发布、赚钱,在不经意间,在谁都没有留意的地方,故障的隐患已经埋下。这里说得很简单,但深入探究,问题显然更复杂。
导致问题的三大因素是:
人才流失;
市场兼并;
技术普及。
它们乍一看不相干,其实有着千丝万缕的联系。
1.3 人才流失
这里先介绍一下问题背景。自商业公司开始引入计算机技术那天起,金融、政府、保险等机构就一直使用稳定高效的大型机来处理他们的业务,这一直是业界的实际标准。大型机上要使用一种叫COBOL的语言来开发应用。
半个世纪过去了,中古语言COBOL依然有着广泛的应用,根据Datamonitor行业分析师的数据[4],75%的企业和政府机构仍使用大型机作为其IT基础设施,在这之中,90%的业务操作都是用COBOL处理的。然而,随着信息技术的发展,新的编程语言百花齐放,COBOL不再那么受重视,实际上,学习COBOL语言的人越来越少了。
大型机上运行的COBOL代码日积月累,越来越多,可能够开发维护它们的有经验的程序员却越来越少。很难估计现在业界还有多少在职的COBOL程序员。2004年,高德纳公司做了一次相关调查,估计全球还有约200万COBOL程序员,但以每年5%的速率在流失。[5]
在1946年至1950年第一波婴儿潮出生的人,将在2011年至2015年达到65岁的退休年龄,因此,COBOL程序员流失所造成的影响将会在2015年到2019年 凸显。
这一代的IT专家,要么正准备退休,要么不希望整个职业生涯只待在一个公司,在职业生涯的最后阶段正在寻找新机会,实现人生价值。无论如何,他们的动向必将对这些公司内部应用产生影响,这将给我们带来很大的挑战。
人们也在努力解决这个问题。这包括IBM的教育学院培养计划和Micro Focus国际公司(一个专注COBOL应用现代化的公司)的“学术界联系”(ACTION)项目。这两个项目都在积极推进全世界范围内大学和大专院校中的COBOL教学。但在另一方面,业界还没有着手整理现存COBOL程序员的经验知识,使之可以完整传承下去。
1.3.1 关于COBOL人才供应的争议
人们对COBOL程序员是否短缺仍存争议。因为在某种程度上,还有多少企业依赖COBOL才是评估COBOL程序员减少的影响的决定因素。
将受影响的公司可以参考由IT分析公司高德纳在2010年发布的题为《确保直至2020年的COBOL人才储备》的报告[7]。在报告中,高德纳的分析师为这些依赖大型机的公司如何应对即将到来的COBOL程序员短缺提出了建议。报告指出,公司需与人力资源专家紧密合作,为顺利度过COBOL人力资源更加短缺的下一个十年制定完善的计划。
……
展开