谈软体专案失败的六大关键 作者:孙文祥 -------------------------------------------------------------------------------- 一项全球性的调查显示,以八千个样本数为基准,发现在软体专案的开发中,其中85% 的专案是在时程落後、大幅超出预算、以及功能不全、甚至未完全检测瑕疵,及完成除错的情形下,就上线使用。而所有专案中,其中30%的专案将会被半途撤销。而完成的专案,也均大幅逾时完成,平均成本大幅超出预算的190%。这意味专案软体开发要能依照预定时程、合乎预算几乎是件“不可能的任务”,甚至根本就注定失败。成功的专案需要避免那些失败因素,才能成为“侥幸”成功的范例呢? 笔者曾亲身参与过许多次专案、软体产品、及系统的大小型开发案,无论是与需求者(客户、业务或其他合作单位)沟通决定需求,拟定整体系统架构、程式开发、以及将问题善後,都拥有丰富经验。其中有些案例顺利成功、也有大幅延宕时程,当然失败案例也有。 客观来说,一个专案的建置失败的可能性真的非常高的。以下列出专案开发这个“不可能的任务”中,常常会出现的各项潜在挑战,只要其中一种因素,在负责的专案中出现,那此专案99%就注定失败。以下将详细说明这六种关键因素,提供所有专案、软体开发从业人员参考,减少走错路的可能性。 过份乐观和没有经验的主事者:没有经验的人、不能深入基层的主管、及不了解软体的合作客户,都自然会过份乐观的看待专案开发的过程,因而拟定不可能达成的时程、过於复杂却不实用的架构,及反覆修改的规划流程,都使失败率大幅增加! 低估软体开发的复杂度及忽视许多不可抗力因素:为完成专案所需的努力与代价是很高的,一开始整个团队及相关人员,就应该建立这样的共识。这样才能以严肃认真的角度,来追踪整个开发流程,也才能在一些意料外的问题(这种意外在软体开发太容易发生了,一开始的“理论”和“真正实作”经常差距蛮大的)发生後,能理智的面对,并拟定处理的方法,有时严重到需要放弃原有架构,重新来过,不会兵荒马乱,为求如期交卷,而硬著头皮赶出一个充满问题的系统,这样只会造成未来将付出数倍的代价来修整系统,甚至赔偿客户损失的双输局面。 来自各方的不合理压力:不同的人,对时程的评估是截然不同的。同一个专案,时程估算可以由一年到一星期都有。尤其是非专业的客户及较不参与开发过程的高层主管,更会对开发时程完全没概念,因而下达“不可能”的时程。经常专案经理及工程师们,就在明知无法完成的时程上,无力的执行著。故这时专案负责人的经验和专业程度就格外重要,不专业的专案负责人常会屈就於来自客户、行销部门、管理部门、甚至高层主管的压力,而每每导致专案的失败;而真正有经验的专案负责人,将会展现专业的能力,来说服与坚持真正能够开发出的功能,与相对的工作时程! 不能以专业态度来 say“no ”:所有客户都希望能在“无限短的时间”开发“无限多的功能”,但是请记住,开发软体都是凡人而已,绝对不是发著光、长著翅膀、引发奇迹的神祉。一旦决定屈就於无理的要求,最後只会导致双方的伤害,若想为了客户好,适度say“no ”才是正确的表现。所以能否说服客户这个“no”字,就是一个专案负责人成熟的表现与沟通能力了。当然并不是只会空口说“no”而已,要用负责任的态度来解释“why no?”。即使客户愿意延後时程,以换取新加功能或修改原订功能,也不应太轻易say “yes”。因为时间一旦充裕,只会引起客户又想再度新增功能的欲望,那开发完成日期就永无止境了。最好的办法是将新增功能、功能修改均重新议定成下一版的专案,并在目前专案完成後,再好好就下一版的专案内容重新规划时程!把该作的东西好好切割清楚,这是执行专案的最高准则。 有多加人手来解决问题的心态:这种加人就解决问题的错误迷思,常会发生在客户的想法中。依据笔者过往诸多经验,当专案进度落後或是以来say“no” 时,大多数客户的反应千篇一律就是:“多增加工程师来作,就可以解决问题了”。其实为了赶上进度而增加人手,只会造成专案的失败。为什么呢?主要有两点,一是软体开发的特性是大都前後相关、无法分割,能够分割的部分,早就在一开始专案设置时,就安排好专用人力了。二则是就算能分割项目,但加入原本不熟悉此专案的工程师,只会增加专案的不稳定性,及管理沟通的复杂度,带来更严重的後果。成熟的专案负责人反而应该在专案末期,减少工程师的数量,将系统集中,才能在最後整合时段,发挥出最好的工作效率。当然要向客户沟通清楚这种观念并不容易,一般客户只会归咎於自己的案子不被重视,才不能放更多人力进入专案中。因此当发生这种情况时,也正是考验著专案负责人的经验,和沟通实力的时刻了。 收尾无法作到“收敛”的功夫:专案进入最後关头应该作的是“收敛”功夫,“收敛”三要素包括浓缩人力、减少功能和不要延後放宽期限,浓缩人力的重要性之前提到过,减少功能是确立“必备功能”完整而稳定,而不要延後放宽期限,也就是宁愿将作不完的部分“非必要性功能”,规划至下一版本再出现。可惜的是,一般专案开发方式却常常完全相反,不断花时间在修改和新增功能上,或无限要求扩增人力,使结案时间更是遥遥无期。 以上是笔者以过往经验,及综合一些全球性的谘询文件中,曾指出软体开发成败的主因,希望在国内软体产业未经成熟之前,能够协助目前执行专案的相关从业人员,不重蹈前人覆辙,能顺利成功完成每个专案。因为软体系统的高度弹性、复杂性、规格不明确性、需求不固定性、及技术改变的迅速性,都让这个产业在执行开发案时,难度远远高於其他产业。但换个角度想,也正因为难度高,有能力的人才能够成功及生存下来。软体产业是进入的门槛极低,但成功的门槛极高的一门学问,需要所有从业人员共同努力。
|