伴随着从业人员的痛苦软件工程、项目管理、过程控制、能力成熟度等知识开始被大家接受,这方面的书也出了很多。我们在理论和实践的碰撞中一步步成长,项目管理就有些模样,至少有了配置管理和版本控制,并引入了里程碑检查。按说理论增强了,控制能力提高了,工作就能更加游刃有余,可事情好像远没有想象的那样美好,生活还是一个字形容“忙”。其实,忙乱的原因,很大部分是由于项目风险控制出了问题。
一、企业需要风险管理
人的很多快乐得益于反思中的成长,这段时间由于工作的压力更大,考虑也更多了。前些天,朋友送了我一本书,《与熊共舞——软件项目风险管理》(清华大学出版社),看完以后受到一些触动。
这几年软件开发的能力确实是提高了,编制的质量越来越好,也可以服务更大的客户群体。虽然软件技术在提高,但并没有解决软件业忙乱的困境。当我们把更新的软件和技术带给用户的时候,也培养了用户的使用能力和鉴别能力,用户变得成熟起来,需求也更加细致和苛刻,这就对软件的品质提出了更高的要求,开发的时间并不容易省下来。而且,当我们环视四周,软件公司如雨后春笋般成长起来。像其他生产过剩的行业,软件行业基本上变成了买方市场,软件提供者之间的竞争越来越激烈。在与软件企业的博弈中,客户利用市场优势占据了上峰,软件企业就必须提供更好的产品和更低的价格才能获得订单。这样,留给企业的利润空间变小,企业的风险增大,风险管理就显得更加必要。
二、有效降低风险
那么,企业要怎样才能以更低的成本和更短的时间提供更好的产品呢?规模优势和工业化是解决这个问题不错的思路,可是,中国的软件企业,规模都较小,难以生产出标准化的产品,也就不容易形成规模化和工业化的优势。尤其是,市场形成了一种概念,认为软件是非常具有柔性的产品,是可以随意更改的,这就为实现工业化带来了更多困难。
在接触客户的过程中,客户必然会询问工期的问题,如果时间太长,有可能会把客户吓走。但是,现在社会的节奏加快,如果工期短的话,那不就又给自己加了一道紧箍咒吗?技术出身的人常常会有一些英雄主义的色彩,过高估计了自己的实现能力,而销售人员又不太了解开发的过程,当然愿意项目早日完成,于是定下的时间常常会短于正常的工期,这里既然种下了加班的种子,后边自然就会生根发芽了。
为了有效降低这个第一风险,我觉得有多种方法可以使用:尽量争取给项目一个比较好的外部环境,通过与用户的沟通及其他手段,为项目争取较充足的开发时间,不要一拍胸脯就把风险留给自己了;要科学估计项目执行中的风险,对人员变动、需求变更等容易引起项目延期的事情要有足够的警惕。如果时间余地比较小,要配置多一些资源,如果资源不够,可能要及早安排加班,避免犯前松后紧的毛病。软件开发过程中的问题层出不穷,你考虑多一点的风险都不一定够用,如果英雄主义情绪旺盛的话,受伤害的还是自己。项目中的其他一些风险和估计风险的办法在书里还有更多的阐述。
激烈的竞争环境给软件开发带来了巨大的挑战,需要企业不断去优化资源,提高效率,推行有效的项目管理方式。巨大的风险带来了挑战也带来了机会,如果能从一次次项目经验中成长起来,企业的竞争能力无疑会增强。书中比较推崇用“增量式”的开发方式来及早发现风险,化解风险,有一定的借鉴意义。当然,增量开发对项目的开发管理提出了更高的要求,也要求项目的开发时间相对比较长一些。具体的开发方式还要根据项目的不同而有所差异,RUP和XP的开发模式,应该是比较好的选择,具体情况还要根据企业的特点而定,并且开发模式会在企业的发展过程中有所改变和提高。
三、正确对待风险管理
风险管理并不是一个新鲜的课题,可以看看国内这几年发展迅速的保险行业,社会领域的风险概念还是引起了大家的足够重视。但是人们并不是什么保险都买,选择性还是很强,选择的时候大量考虑了风险和收益的问题,这是一个博弈的过程。
以前我们在项目计划中也会有10%到15%的风险,但执行过程中常常没有给予足够重视,导致项目最后的完成受到影响。没有给予足够重视的潜意识,是不愿意付出这部分的成本,希望能获得更大的收益,有一些侥幸的成分。另一个可能的原因是,企业付不起这部分成本,它甘愿去冒风险,因为如果加上这部分成本,项目就根本无法赢利。
企业需要生存,而且也愿意生存的好一些。国内软件业的现状也常常影响到大家对风险的正视程度,随着企业的成熟,风险管理也会更加正规。但无论如何,风险意识是一定要存在的,并且要想办法防范和规避主要风险,否则触礁的机会就太大了。
关于作者
赵利军 北京易地平方信息技术有限公司任副总经理、技术总监,负责知识管理和竞争情报产品开发