在中国软件行业现状中,恶性竞争比比皆是,而恶性竞争的产生物:合同,导致大中型软件项目中,项目组面临着在时间上,成本上和人力上都不切实际的目标,一个在标准含义上注定要失败的项目;而项目组对于这种项目要做,并且还要尽量做好,同时由于客户成熟度不够,而造成更多的问题。
根据个人的经验,如果照合同中列出的项目范围来做,从狭义的项目范围角度来说是可以完成的,但客户既然付了钱,他将不断努力大化他的利益,扩充并充实需求的内容,所以项目组面临着项目中从始至终需求不断变化的过程。
在做好基本的需求控制的基础上,既然面对不断变化的需求,要求项目组对事件的反应要快。
在这种快节奏的项目环境中,充满了太多的不确定因素,成功的按时完成项目像是一场长距离障碍跑。项目组经常要在没有完整确切的数据情况下决定如何做,项目范围的重点和方向要经常改变,如果软件承包商内部不协调一致,复杂的项目将经常会陷入泥潭,不能自拔。
这种项目中标准的项目管理手段不再适用,它需要很多特别的资源去处理不确定的方面,更有弹性的项目管理手段和反应时间是必要的,灵活的项目管理手段将是此类项目的终方法。
什么是灵活的项目管理
做过软件项目管理的项目经理的人都知道,在客户的需求和项目组能够提交的成果之间找到一个完美的平衡点不仅仅是一种项目管理手段,而是一种艺术,如果按照标准的项目管理流程,项目可能永远不会完成,比如在合同中或销售环节中承诺,所提供的系统将满足客户在未来几年中的业务需求;但实际上这是不可能的,特别是行业软件项目,中国各个行业处于快速发展的过程中,业务需求不断在增加,如果不在项目和业务需求之间达到平衡,项目将不再是一个利润点,而是一个成本点。这要求在标准的项目管理手段之外增加一些新的概念和技巧来适应飞速变化的项目环境。
那什么是灵活的项目管理呢?
由于在实际项目的某些方面,标准项目管理方法不再具备有效性和可操作性,所以有些公司试图抛开项目管理标准方法,独立制定符合自己实际的项目管理流程,而在不断尝试的过程中,他们在很多核心管理方面又不得不遵循标准项目管理手段,这造成了困扰,什么是一种有效而可行的项目管理方法?
所以说,灵活的项目管理不是一种独立的项目管理模式,而是基于标准项目管理基础上的一种很大的发展延伸。像一个城市的地铁站台,她的基础是标准的,牢固地,像标准项目管理,而站台和所运行的地铁之间的差距需要根据地铁的实际形状来加以适当的延伸,所以说灵活的项目管理归根结底是在标准项目管理的基础上的延伸。
计划和实施
当我们谈到项目管理的时候,我们直接的印象是工作列表和甘特图,或者叫工作时间表或安排,从标准项目管理理论来讲,项目计划是重点,要占项目周期的很大一部分,首先要制定一整套项目计划,包括项目范围计划、项目进度管理计划、项目质量管理计划、项目人力管理计划、项目成本管理计划、项目风险管理计划、项目沟通管理计划、项目配置管理计划、项目变更管理计划等等。而在现实情况下,客户决不允许你在计划阶段花费太多时间,实际上,客户希望看到项目组到现场马上进入编程开发,他才觉得项目组在做事情,不然开发商是在浪费他们的精力和资金;如果项目经理顶住客户的压力,严格按照标准项目管理流程,将得罪客户,为以后的工作添置很多障碍,有些是致命的。
应用灵活的项目管理,项目管理的重点从计划转移到实施,但不是说项目的范围定义和计划被完全忽略,而是在不完整的需求确认和项目总体计划框架下进入实际开发,在需求不断变化和项目目标渐进明细的情况下灵活的把握项目,将项目始终处于控制范围内。
而且,对于行业软件开发而言,随着业务的变化发展,业务需求和功能需求的不断变更,要求有丰富业务和技术水平的独特专家在项目组中,这些专家不仅仅简单的认为是高级程序员,也不是系统设计人员。具体来说他们是一组人,一组在这个行业摸爬滚打中练一身过硬业务知识和技术水平的人员。他们对于行业软件这个大的系统里的不同部分具有很多比客户还要深刻的理解和认识,在同一个行业软件领域中,比如针对中小型商业银行的银行软件解决方案,大多数项目在功能上,业务需求上等等方面都有着某些方面的类似性和相同性,在一个新的项目中,这组人不管是在简单或复杂的项目计划情况下都有能力和水平将项目中所有的部分组和在一起,像事先经过了详细的系统设计一般。
在这种情况下,项目经理面临着一个挑战,项目艰难而有效的实施下去将是项目所能达到的好效果;面对太多太快的变化导致项目经理手忙脚乱,不知所措将是项目经理所要经历的坏局面,如果不及时将项目重新纳入正轨,项目将是一场灾难。行业软件这个领域而言,不要希望这些项目你不会遇到,在现实世界中,你要做好准备,经常性面对这种项目。
灵活的项目管理特点: 内部和外部不确定因素
内部和外部不确定因素是灵活的项目管理的重点所在,众多的不确定因素导致项目总是处于紧急和高风险的状态下,这要求项目经理和项目组的独特才能和技术。
内部不确定因素包括那些在项目经理可控制的项目范围内,进度安排内和预算成本内所有的内部可控或不可控的方面。例如:对于数据仓库项目,针对客户在系统某些功能执行时间上的苛刻要求,在1G的数据量以下,系统可以满足要求,但随着可以预见数据量的飞速增加,在一段时间后,系统将不得不面对1G以上的数据处理量,而解决此问题的途径有几种,不论是在项目中解决该问题,还是在维护期解决该问题,项目经理一定要从项目的各个方面进行权衡,快速找到一个恰当的方案。
外部不确定因素包括不在项目原始范围内,比如行业发展和竞争需求中所产生的新要求,例如:一个城市商业银行一揽子解决方案的项目,包括核心业务系统、信贷管理系统、国际业务系统、中间业务系统等等,项目经理和项目组业已将客户的需求控制在一定范围内,信贷项目组根据以往的经验,预见到在综合业务系统上线后不久客户将会提出现场信贷功能的需求,但按照现有银行模式,所有数据是大集中在中央数据库中,如果现场信贷的功能要实现,那不得不要求核心业务系统提供数据源和数据端口,而由于此项功能需求是行业中发展中一项新的功能亮点,现在的核心业务系统不包括此接口,而要增加此功能端口和源要求核心业务系统要做很多改动,有些是重大改动,如果放在二期来做,客观条件不允许在具有生产数据下进行长时间充分的测试,很可能造成系统的不稳定,而银行系统又需要具备很强的稳定性,还有可能造成银行在结算、冲账这些关键环节上的错误,这个时候项目经理面对的是外部不确定因素。
这两个方面都是灵活的项目管理方法中必须要考虑的因素,项目经理不得不决定到底如何要解决它们。
对于内部不确定因素,它的风险性对于第一次做此类项目的项目经理是高的,随着项目经理经验的增加,它的风险性呈现反比例发展。像世间无一样,风险不可能减小到零,所以,无论你作为项目经理和你的团队做过多少个同类型的项目,也不论之前成功实施的几个项目间和新项目有多么的类似性,永远不要期望项目完全按照你的既定计划来走,没有人会知道会有什么样的事情会在项目中等着你,每一个项目都在考验你的项目管理能力和灵活的项目管理手段。