软件开发——不可能完成的任务?(收藏)

1998年7月6日,香港新机场赤角正式开通运营。这个耗资200亿美元的建筑项目终于可以让人喘一口气了。然而,当新机场开通运营之时,令人窘迫的问题出现了:电子信号显示了错误的信息,电话系统被迫关闭,行李不见了,客货运搁浅不前。  

200亿美元复杂的建筑结构的确是有史以来全球最大的建筑项目之一。在项目中,半个世界的挖掘机队伍都在忙忙碌碌地参与这浩大工程的建设。数十个承包合约和建筑项目时刻等待着协调,以完成在同一时间进行的数千项不同的又常常相互关联的复杂活动。尽管项目不时地面临着绝境,但项目最终还是从绝境中走出来了。 

然而,本文开头所描述的困境还是产生了,而且这难题使机场损失了6亿美元。但这个难题与机场的建筑项目没有一点关系。他们全都来自计算机硬件与软件。 

事实上,香港新机场遇到的软件开发的问题是软件业司空见惯的失败案例之一。软件业的成功只是个例外。 
 
开始即意味着失败 
 
Standish集团针对美国大约8000个软件项目进行了调查研究,结果表明:所有软件项目中令人惊讶地有84%未能按时完成、按预算完成或者安装所有预先要求的特性;所有项目中有超过30%在完成之前被取消了,其他则明显超过了期限,并且(平均来说)超过了预算的189%。 
 
另一项研究发现,高度复杂的项目中有超过50%被取消了。也就是说,这样一个项目从一开始,失败的机会就要比成功的机会更高。 
 
软件总是让人觉得战战兢兢。在上个世纪的80年代初,美利坚银行就经历了MasterNet系统失败的噩梦。为了能够抓住信息技术带来的机遇,使美利坚银行成为信托业的巨子,1982年秋天,美利坚银行决定建立一套业务和客户管理的软件系统。在经过18个月的详尽研究分析之后,一份预算为2000万美元的计划批准了,项目计划的截止时间是1984年12月31日。然而,一个除夕来了又走了,系统并没有出现。直到1986年年中,在最初期限的一年半之后,银行才得以向客户演示一个还有着太多漏洞的系统。 
 
1987年3月,系统在晚了27个月投入正式工作。而此时,美利坚银行的IT噩梦开始了。银行在晚了3个月才能发布会计报表,于是,客户的信任开始丧失,企业客户抽走了价值40亿美元的基金。最后,美利坚银行的管理层放弃了这个项目。 
 
这种灾难也许是在静悄悄地发生,但丹佛机场的灾难、“亚利安娜”火箭的爆炸,一直到波音“德尔塔”3号火箭的爆炸,都是软件给人留下的轰天巨响。 
 
谁是罪魁祸首? 
 
软件业为什么这么容易失败?到底谁是罪魁祸首? 

.............

企图通过增加人手来缩短项目日程。一些开发人员的错误是认为增加项目人手就可以缩短项目日程。这通常是错误的,原因有两个:首先,开发工作往往无法在许多工作者之间进行分割,相互依赖性使某些任务要求必须按顺序进行。正如布鲁克斯所说:“生小孩总是需要9个月,无论安排了多少女人。”其次,人手增加的同时,花在交流上的时间将同步增长。
....................
“一个有才华的软件开发者的创造性可以是一个普通者的十倍,即使他们有着相同的过往经历。”麦康奈尔颇有感慨地说。麦肯锡公司在调研中交谈过的开发经理都同意这一点。“一个有才华的木匠会在建一项好工程时做许多决定。他通过直觉做出正确的事。”巴瑞扎,一位经验资深的开发经理说,“对一个开发人员来说也是如此。许多关于结构和编码的决定是相当直觉,依赖长期的阅历和才华。很难汇集它们,但结果会有巨大的差别。” 
 
软件开发项目应该配备最好的人手。“最好是找到一个有创造力的程序员,而不是指望某一个程序员会变得有创造力。”麦康奈尔说。同样的原则也适用于团队。 
 
创造有力的团队结构。并非每一个程序员都是明星选手。“在组织成长时,你会有些平庸的开发人员——这几乎是不可避免的,”PLATINUM的CEO菲利波夫斯基说,“顶尖高手们屈指可数。” 
 
但成功的公司学会了如何将明星与那些并非同样出色的人组合在一起。如同一支医院急救队的人员配置,有一两个顶尖程序员,其他人协助他们。  
 ...............
把握顶尖人才。当几年前PLATINUM的一位顶尖程序员说他将不得不离开公司,因为他的妻子在加利福尼亚得到了一份好工作时,公司的COO休曼南斯基完全拒绝接受。由于不想失去这名好员工,休曼南斯基安排将终端建在这名开发人员在加利福尼亚的新居——以及他在内华达山上的小屋里。从那时起,这位快乐的员工(明显不是一个早起者)在中午起身,游戏或者徒步旅行,并为PLATINUM工作,从下午3点到凌晨3点。“当时如果我们没有建立起途径,克服地理边界限制的话,今天我可能已经出局了。”休曼南斯基说。
......................

合成组件时代? 
 
数十年来,开发经理一直在呼唤新的“神奇解决方法”,以便可以在软件开发中带来一个根本的或真正的革命性进展。而今,合成组件正在显著改变软件开发游戏。 
 
许多软件专家赞同软件组件的变革会有帮助。考克斯曾经观察到:如果软件开发能从“自己建设一切”转向“简单地集成定制的可重复使用组件”方式,这对整个行业就意味着巨大的生产力和质量提升。 
 
但使用组件开发还面临着种种困难。比如要求大量前期投资,需要改变开发人员的整个思想形式。 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值