项目控制就是根据项目跟踪发现的偏差和问题,制订相关的改进措施和解决方案并监督其执行,保证项目按照正常轨道运行。我们谈风险控制喜欢说要分析出风险的根源,项目控制也一样需要分析出问题和偏差的根源,而这一关键步骤则需要项目经理和整个项目组有完善的问题和偏差分析能力(涉及CMMI的DAR过程域)。
由于任何一个问题或偏差的产生都往往不是一个因素确定的,所以这里不仅仅是分析的时候需要综合考虑各个指标和因素,在我们制订方案和措施的时候也需要进行多因素决策。在这里我们举例说明下:当我们发现某个项目成员完成的某个功能提交系统测试后BUG很多,对于这个问题可能原因就有1)任务工作量安排太紧张,根本没有留够自测和单元测试时间 2)项目成员个体生产率较低,但估算没有考虑该情况。 3)该功能业务逻辑本身较复杂4)发现BUG很多不是开发人员问题,而是需求没有写清楚;而具体针对以上不同原因应该采取的解决措施是 1)考虑我们的估算是否需要改进2)对低于评价生产率新员工或成员要进行培训,并且对类似情况要进行风险分析 3)架构和设计人员要介入,加强沟通 4)需求质量要通过培训或需求评审进一步提高;如果存在多方面的原因则就需要制订复合的改进措施进行改进。
另外对于控制我们不能简单的理解成纠正偏离即可的一个简单过程,控制的一个重要任务是通过原因分析为我们后续版本积累宝贵经验。比如你在周跟踪的时候发现进度出现延后,你的控制措施可能是周末加班解决问题。但如果仅仅这样做的话则只治标而未治本,这样后续还会接二连三的出现进度延后的问题。但当你分析出进度延后的根源是项目成员的某方面技能没有达到而立刻组织相关培训进行改进的话,则后续就可以很好的避免类似问题的发生。
让我们来分析下常用的一些项目控制或纠正偏离方法:
1)需求不明确,用户老是改来改去,项目返工工作量大。
尽量是从我们开发模式上想办法,采用快速原型和用户确认需求,系统分析员尽量分析和挖掘用户深层次需求;开发模式上采用敏捷或增量迭代的开发方法来适应编号;设计上都采用面向接口设计保留系统的扩展性和健壮性。
2)进度出现明显延后
这里我们首先要谈的是,周跟踪是很重要的,在项目中我们以每周为单位对项目任务的进展进行跟踪,这样可以很好的控制项目的延期时间,便于采取后续的补救措施;在项目进度出现偏离时候增加人手往往是愚蠢的办法,最有效的方法就是缩减项目范围。次之的方法是项目成员加班,适当加班可以补救进度偏差,但长久的加班确会丧失所有效果;另外方法就是提升整个项目的士气,项目进度延后时候往往士气较涣散,大家的生产率也较低,工作责任心不强导致产出的工件质量不高,这种时候往往更是需要通过团队活动来提升项目凝聚力的时候。另外一个关键就是项目经理应该审视自己的进度和人员安排是否合理,资源是否充分利用,外科手术队伍里面不需要大家都拿手术刀,你的项目手术刀是否交给了放心的人?
3)项目产出物的质量较差。
质量差有两个原因,一个是成员本身技能还存在问题,另一个原因就是态度问题。对于本身技能问题应该尽快的组织项目的培训和交流,对于新员工要安排专门的辅导老师,尽快让技能欠缺者提升技能,保证整个团队的战斗力。态度决定一切,项目中产出物的质量差往往更多是项目成员的态度问题,而这个没有捷径,只要通过持续的项目团队建设,定期的项目成员沟通进行改善。
项目经理不可能面面俱到,三头六臂。项目经理一个重要目标就是建设一个有激情和责任感的团队,大家都以项目为重,把软件系统真正的当做他们自己的产品,这样才能够生产出高质量的产品。
当发现缺陷泄露率较高的时候,一定要及时的采取措施,加强评审的力度和代码Review的力度,加强这方面团队规程和纪律的建立,保证项目成员能够按照规程和规范去执行检查,而不仅仅是把评审和Review做为一种应付手段。
项目经理在项目中的一个重要工作是沟通和协调。PMBOK把项目管理主要分为了项目启动,计划,执行,控制和结束五个阶段的工作。而我们这里谈项目跟踪和控制,主要就是涉及到项目的执行和控制两个重要管理程序。项目结束也很重要,后续还会专门来将关于项目总结和复盘的相关内容。项目跟踪和控制也是CMMI重要的一个过程域,其目的很简单就是要保证项目在现有资源的情况下按时的交出合格的产品来。因此所有对这个目的有造成影响的要素都应该属于项目跟踪控制的范畴。对于跟踪控制的类别则完全可以跟踪项目管理四要素来分,即项目范围,项目资源成本,项目的质量和项目进度四个方面的内容。
项目跟踪的目的是发现项目的偏离和问题,而项目控制的目的则是纠正偏离和解决问题。所以两者密不可分,跟踪是为控制服务,而只要对跟踪的内容控制了才能够真正达到效果。另外项目跟踪过程中还有一个重要目的就是收集项目度量所需要的数据,你在跟踪过程中发现的非异常数据也要收集和记录下来,为后续项目服务。
下面我们先来考虑项目的跟踪,这里面分别谈下跟踪的内容和跟踪的频度两个问题。除了从项目四要素进行跟踪外,另外还需要跟踪的就是项目的风险和问题。如果一个项目有不成功的理由,那这些理由都应该在项目启动时分析为项目的风险,所以说在一个项目中项目经理70%的时间都是在和项目的风险做斗争,你管理和控制住风险项目就成功了一半。而这里的问题主要应该有两类,一类是我们跟踪过程中发现的问题,另外就是在项目执行过程突发的事件和问题。
对于项目跟踪的频度一般分为日跟踪,周跟踪,阶段跟踪和里程碑点的跟踪几个方面。项目要跟踪的内容和面都很广,所以有些内容不会每天都会跟踪而是放在检查点或里程碑点统一跟踪一次。而对于一个项目小组来说我们的日跟踪或周跟踪最重要跟踪的内容就是任务完成情况,这是保证项目进度的一个重要内容,如果出现较大的偏离话就需要及时的调整项目进度计划。对于具体各个阶段需要跟踪的项目要素可以用下表来描述(绿色表示在该点需要进行跟踪)。
项目的跟踪过程有些需要借助于自动化的软件或系统来协助完成数据的收集和统计,如CQ可以直接帮我们统计出相关的变更或BUG的数据并帮我们形成图表,对于项目进度的信息数据则可以通过Project和项目成员的反馈来完成。对于其它如问题,承诺等相关跟踪项目,最适宜的跟踪工具就是Excel表格,组织级可以制订出相关的Excel的跟踪模板,项目经理直接根据模板进行数据的反馈即可。