IT项目风险管理之道 CIO小心驶得万年船

作/转载者:比特  

  有一首诗歌能够很形象地描述风险的特征:“轻轻的我走了,正如我轻轻的来。”

  “风险”一词的由来,最为普遍的一种说法是,在远古时期,以打鱼捕捞为生的渔民们,每次出海前都要祈祷,祈求神灵保佑自己能够平安归来,其中主要的祈祷内容就是让神灵保佑自己在出海时能够风平浪静、满载而归;他们在长期的捕捞实践中,深深的体会到“风”给他们带来的无法预测无法确定的危险,他们认识到,在出海捕捞打鱼的生活中,“风 ”即意味着“险”,因此有了“风险”一词的由来。

  现代意义上的风险一词,已经大大超越了“遇到危险”的狭义含义,而是“遇到破坏或损失的机会或危险”,可以说,经过两百多年的演义,风险一词越来越被概念化,并随着人类活动的复杂性和深刻性而逐步深化,并被赋予了从哲学、经济学、社会学、统计学甚至文化艺术领域的更广泛更深层次的含义。无论如何定义风险一词的由来,但其基本的核心含义是“未来结果的不确定性或损失”,也有人进一步定义为“ 个人和群体在未来遇到伤害的可能性以及对这种可能性的判断与认知”。

  风险有两种定义:一种定义强调了风险表现为不确定性;而另一种定义则强调风险表现为损失的不确定性。

  若风险表现为不确定性,说明风险产生的结果可能带来损失、获利或是无损失也无获利,属于广义风险,金融风险属于此类。而风险表现为损失的不确定性,说明风险只能表现出损失,没有从风险中获利的可能性,属于狭义风险。

  广义的风险展现出来的是机会,虽然这种机会可能让我们的项目变得颗粒无收,但是如果一旦机会有利于项目,则可以大赚一笔,风险投资家们心中的风险正是广 义的风险,所以风险才会吸引他们投入巨大的资金。而作为项目管理者来说,风险对他们意味着失败的危险,因此必须将任何风险扼杀于摇篮之中。

  IT项目风险的特征

  由于软件本身的特点,而导致IT项目与传统项目有很大的差异,因此IT项目的风险管理难度要比传统项目大。

  1、 需求不稳定

  软件项目的需求多变已经成为了软件业界的共识,正因为需求的多变,才让瀑布模型一直遭受到软件工程界的抨击,因此而诞生了原形模型。在IBM的RUP和众多的敏捷方法论中,一直将需求不确定列为软件项目的最大特点,因此而出现了拥抱变化一说。

  当一个IT项目已经开始在实施的时候,如果客户连他需要做什么,要实现一些什么功能都不能确定的话,那么做软件实施的工程师他们又如何能够知道自己要开发一个什么样的软件系统出来呢?所以他们只有在漫长的等待过程中,不断遭受到客户的“批评”,在经历了“九九八十一次磨难”之后,才恍然大悟,原来就是要做一个这样的系统啊!

  这有点像一个盲人走路一样,盲人根本就不知道前面是什么,因此他往前走一小步,如果不是路,则向左旋转一点点,再次用脚探探前面,如果是路的话,则可以往前迈一步。如果这个盲人运气不好的话,第一脚就在悬崖边上踏空,那么他将跌入万劫不复的深渊。我们的项目也如同这个盲人,稍有不慎就可能让自己走向失败,这是一个多么大的风险阿。

  2、 项目规模估计不准确

  当老师给我们布置作业的时候,如果他多布置了几个题目,下面的同学便会大声地嘘叹,开始私下的嘟噜:“又要做一个多小时了!”。学生们在很短的时间内就能够准确的估计作业量大不大,他们的估计凭借着他们每天一次的做作业的经验和那一瞬间对题目的印象,虽然他们并没有做过刚布置的这些题目,但是估计得仍然是那么的准确。

  任何一个建筑工程的项目经理都能够对自己的项目进度掌握的很准,在他们的眼中,只要钱没有问题,则进度就完全是小儿科,可以轻易的得到保证。工地需要多少人,什么时候需要开始进行什么工序的施工,什么时候需要加班,这些都在他们的心中掌握着。钱就是他们最大的风险,只要钱到位了,一切工作都好开始了。

  而软件项目与之不同,在软件项目开始后,很少有缺钱的。只看到过资金没有到位的“烂尾楼”,但是从来就没有看过由于项目资金没有到位的问题而导致未完成的软件项目,就算是缺钱也是因为签合同的时候要少了。

  就算是再优秀的软件项目经理,他也无法预计好自己的项目什么时候能够完成,因为在他进行估算的时候,客户的需求还没有搞清楚呢!再一个,建筑工程的可以通过预算很准确的计算整个建筑的工程造价,而软件项目却很难,因为不管是代码行估算法,还是功能点方法,都远不及“我猜,我猜,我猜猜猜”中猜得准确,这些方法很多时候甚至不如算命先生算得准。

  3、 人的因素对项目影响很大

  人可以说是整个软件项目的灵魂,软件项目不需要钢筋、水泥和沙石,也不需要任何的施工机械。软件项目的原材料就是人的思想和智慧,而计算机和CASE软件则是项目的施工工具。通过键盘和鼠标,无数的程序代码在程序员的手中诞生了。如果要问软件项目最大的成本在哪里,那么答案只有一个,就是人力成本。

  一个优秀的程序员的工作效率要远远大于一个蹩脚的程序员,一个程序新手甚至根本就不能够产生任何生产效率。不仅如此,新手的错误行为,将让熟练员工牺牲很多时间来帮助新手纠正他们的错误,最后下来,甚至可能导致降低软件开发的效率。

  虽然软件项目已经实施角色分工和管理,但是相对于其他工程的分工来说则分工比较单一。软件项目中,一般就分有,系统分析师、架构师、设计师、程序员、测试工程是及配置管理人员和项目经理等。这样的分工并不能有效的降低他们工作内容的复杂度。如果能像建筑工程中的砌墙、浇注混凝土、搭脚手架那样分工细致的话,则培训软件蓝领也不会需要费如此大的力气了。

  小心驶得万年船

  将意外全数来避免,能够全避免,古语话唯有小心,小心驶得万年船。经常可以见到有人不小心,踩到或者碰到什么东西而摔倒的情况。相反,盲人却很少会因为自己的疏忽而摔倒。他们总是很小心的走着每半步路,对于前面的未知世界,他们总是要探了又探,在确认能够行走的情况下,才小心的迈出半步。

  由于软件项目的太多不可确定性,因此管理软件项目,犹如盲人走路一般。在未来还不确定的情况下面,可以将自己的经验列出来,如在什么时候最可能出现什么风险。盲人在听到汽车声音的时候,总是会更加小心,当软件项目中开始出现一些问题的时候,我们需要考虑这些问题背后所隐藏着的更深的威胁。发现危险总是需要凭借自己的灵敏的直觉与丰富的经验。

  聪明的经营者,绝对不会是技术方面的专家,因为越是技术专家,就越不能容忍技术方面的缺陷。而经营者所需要考虑的不是技术是否无可挑剔,而是在乎项目是不是赚钱,让别人去承担风险,让自己来享受利润,是聪明的经营者的决策指南。