项目平衡效能的发展趋势
项目平衡效能的发展趋势<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
今天希望谈到两个对提高过程效率很重要,但很容易被忽略的因素:平衡与趋势。
很多时候,我们把一个一个的数据,看成是一个独立的,完整的个体。然后根据他来作判断和决策。比如一个项目的周期偏差率比另外一个低,所以它就是比较好的项目,然后得到好的考核结果。这样的质量指标,往往造成一个不正确的导向,导致过程变形,不能达到提高过程效率的目标。
我们这次的讨论,更多的是从一个领导的观点,来看这两个因素。
平衡,就是不能单单关注一个(或是一部分)特征。代表项目过程效率的特征很多。在项目的层次,它们包括了进度、生产率(或是成本)、与质量。如果单关注其中一个,虽然能够提高这个特征的绩效,但很可能会让其他的特征变得恶化。CMMI叫这个做“sub-optimization”,这是SEI正在讨论的修改模型里面,在好几个地方都提到的。这是对过程的一种歪曲,我好几年前,就已经提到这个问题,我叫它做“气球效应”。
那么,我们要平衡多少个特征才能避免气球效应呢?在项目里,通常就是进度、生产率、与质量。
在过程改进的过程中,如果因为组织和项目的特殊原因,目标是提高其中一个特征,我们还需要确保不严重破坏其他的两个特征,我们就需要监控所有三个特征。
就是说,不是重点的特征,也要监控。这样才能平衡地推动项目的过程效能改进。
监控平衡性,我们可以用一个图。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
我们可以用这种图表达多个(3-7)参数。这里的图有五个参数。其中项目的关键参数有周期、生产率、与质量。项目的辅助性参数包括规程符合性、团队建设程度等。图里的参数最好是相互直交(orthogonal)的,以减少参数之间的关系。绿色的线条代表项目的目标;红色的代表项目的实际绩效。从高层领导的角度,红线不能跑到绿色的地域里面,否则就是没有满足项目目标。
趋势呢,就是考虑到过程效能在一段时间中的发展情况。很多时候,我们看到一个或是一组项目过程的体现数据,就进行判断。这个表面上无可厚非,但对过程改进更重要的,其实是改进,而不是某一次体现的绩效。改进就是一系列有提高倾向的绩效。不是每一个绩效都一定要比前一个好,才是有改进。所以组织的导向,需要考虑趋势,我们的管理理念,需要关注趋势,而不是关注每一个个别的实际绩效。
可以通过一个以时间为坐标的“走势图”(run chart)来监控趋势。这个图上面的项目数据,按项目完结的次序排列就可以了。
从这个走势图,我们可以看到,项目实施之间是有自然的差异的,因为影响项目的因数太多了,其中包括项目不能控制的。一个项目团队的能力,只能用好几个周期的长期表现来衡量。如果我们利用一个一个的过程绩效数据来考核,我觉得是会对组织的效能有很大的不良影响的。
我们用一个实际的案例来说明这个问题。
假设一个组织的过程改进目标是“在不影响成本与质量的前提下,缩短周期”。当然,目标需要量化。不影响,就可以是保持以往的中间趋势(如平均值、中值等)。周期的缩短,就需要有一个缩短的程度,甚至可以缩少项目之间的差异。比如,在以往周期和标准差平均值的基础上,各缩短5%。
请留意,项目目标是需要追溯到企业的业务目标的。企业的目标如果是通过产品的应市及时性来满足市场,那么,项目的周期就非常关键了。但是如果我们的目标单单是“缩短周期”,这就会导致歪曲过程,成本与质量就会被牺牲了。如果我们的目标是“缩短周期、提高质量,减低成本”,那么,项目要关注的东西就太多了,成功的机会就不大了。
作为一位领导,下达了这个目标之后,还需要考虑如何帮助项目完成和满足这个目标。领导不能只是下达任务,然后不闻不问。管理者的任务,是“确保成功”,而不是行使权力。所以领导需要要求项目提交一些关键的数据,以便监控往目标接近的情况。领导的时间都是宝贵的,这些数据的显示就越简单越好。这里我们可以谈一下如何最简单地定义、收集、制成可以监控过程改进的指示图表。
工作量的收集
最简单的方法收集项目员工的工作量就是员工的考勤数据。我叫这个做成本工作量。我们会觉得这个测量会太粗。其实对领导来讲,这个才是最重要的,因为项目经理的职责之一,就是帮助员工最有效地利用员工的时间。
至于项目里面是否需要更精确的工作量收集方法呢?因为工作量的实施与收集基本上是依赖个人的努力,我们需要平衡收集的精确性与定义的精确性。在项目里,一定会有需要比较精确的定义。我们希望在定义精确测量的时候,要考虑清楚收集的方便、效果与成本。
请留意,工作量的定义,就好像任何其他的度量定义一样,是与度量的目标有关的。比如,要研究返工量、评审效率、质量成本等等,就一定要定义得精确好多了。
我们可以用“员工考勤时间表”来收集个别员工的工作量。
如果员工同时支持多个项目,员工的时间分配,有两个方法,一个是事前得到各个项目的同意,用一个固定的比例分配;另一个是按每天得大概实际任务的时间分配。两个方法都可以。但不能在项目开展之后改动。
这里个别员工的工作量,很容易就可以汇总到项目的“项目工作量表”里。可以看到,这些操作都是比较方便的。
周期的收集
项目周期是项目起点与完成点地时间段。这里要强调的,是起点要越早越好。基本上是产品概念,通过市场需求表达好,同时项目经理上岗、项目资源已经批准就是项目的开始点。项目的完成点,就是产品成功被接受的时间。就是说项目包括建立项目团队与争取客户接受产品的活动与工作量。
项目的周期需要在项目完结之后才可以知道。
规模的收集
规模可以是产品的规模,如代码行、产品部件数等。其实项目的规模,最好从需求决定。一方面,是需求的特征在项目的开始已经决定,产品的规模呢,就要等到实施之后才能知道。第二方面,更重要的,是需求代表市场的需要,就是项目要完成的任务。产品代表需求的实施,可以被设计与实施的有效性影响。简单地说,我建议把需求写的很细,把每一个需要测试的元素,作为一个需求项。需求项不是测试用例。每一个需求项,是一个需要测试的元素。测试这个元素,可能需要用多个测试用例,也可能几个需求项合起来用一个测试用例来测试。
因为需求粒度越细,需求项之间的差异就越小。这样,我们就可以很简单地使用需求项数量来作为规模的测量。
在项目的进展中,不断有需求得到实施,或是部分实施。如何在项目过程中统计规模,有效、正确测量项目的进展比较复杂,这是任何规模测量方法都有的困难。我们可以用一个普遍的原则:一个需求项,要得到完全实施,才算为完成。这样进展可以看起来慢一点,比较保守,最终项目需要完成所有的需求项,所以也可以接受。
需求项这个概念,提供了一个非常有意义的产品需求质量准则,对于提高需求水平非常重要。
这样的思路也会对WBS的意义有要求。项目需要能够从WBS之中的任务组合,和需求对应上。这也是一个CMMI里提到的需求追踪的体现。
质量指标的收集
在项目的进展过程中,质量可以用发现的缺陷数和缺陷密度来测量。但是这个测量的问题在于因素很多,比如检查有效性与质量保证的投入等等有关。客观的质量指标的数据应该是从项目以外而来的,它的来源是独立于项目的。所以比较合理的测量就是TL9000的NPR(问题报告数量)测量。可惜这个需要等项目完成之后,产品发布一、两年之后才可以得到。虽然这样对项目的运作没有帮助,但是对组织的领导是比项目的缺陷测量更有意义的。所以我提议领导需要关注这个产品的现场NPR。
在TL9000的定义里,问题是有分类的。分类对于对客户的实际质量意义是重要的。对于研究和管理质量也是重要和有帮助的。但是对于监控质量的趋势,分别问题的严重程度反而没有特别的意义,反而会造成项目不去关注不被统计的一般问题。提高质量,需要一种消除所有质量问题的心态。所有问题,无论严重程度,都包括在内的测量,有利于有效提高产品的真正质量。
这一点非常重要。作为一个组织,需要能够掌握自己产品在市场的质量,就要现场的NPR。收集NPR比较困难。但是这个困难是需要面对的,否则是不能得到真正的产品质量测量的。
要准确收集产品的问题报告数量,就需要有一个独立于项目,面向市场的统一客户支持体系。我们可以要求,如果90%的现场问题(售后工程与客户)不是通过这个体系,测量本身的质量就不能保证。我们要留意这一点。
因为产品规模不同,而且部署的程度不同,产品质量的测量,需要是产品的现场问题密度。密度是按产品的规模与部署的数量而归一的。
要处理这个数据的延误问题,一个比较方便及时,同时也是独立于项目的数据来源,就是“验收测试”。这个和现场问题数应该有一定的关系。我们可以建立一些模型,表达组织项目的缺陷数与验收测试、现场问题报告数之间的关系。
质量指标的收集是比较复杂的,但这是需要的。成熟的团队都应该是这样的。
以上的数据都可以在“项目工作量表”里记录。
趋势图
用控制图可以过程趋势,了解过程的特征,保证持续提高过程能力。
趋势图就是个别参数的控制图或是走势图。项目完成之后,就需要提供有关的数据。现场问题密度还要等一、两年。其他的可以用项目收集到的数据。因为目标是说短项目周期,最被关注的当然是项目周期的趋势。查看生产率与质量的趋势图,只是用来保证没有意外而矣。但是不能不看。
开始做过程改进的时候,建立度量体系,很大的可能性就是数据看起来没有什么意义,因为数据很发散,无论是散点图、趋势图,都看不出任何关联。这个现象的原因通常反映团队缺乏纪律的现象。纪律在这里的意义是一种规范的操作模式。缺乏纪律不是员工不努力,缺乏纪律包括度量体系的定义、收集、分析的纪律不够、过程执行的规范性需要提高,甚至领导的管理理念和方法需要改变。其中最大的原因在于测量的定义和收集有问题。无论如何,要找到理由,并且进行整改,以建立完整的度量体系。
如果发现数据发散,第一个需要保证的是度量体系里的测量定义是合理的,收集方法与实施也是合理的。确保了度量数据是合理的之后,如周期的零散分布,就是缺乏过程纪律。过程的问题很多,比如:不同项目的团队的操作方法不一致。举一个例子,有些团队不做同级评审,有些做的不好,有些做的不错,都可以导致合理数据的发散。
要强调的,就是在没有准确数据的阶段,也需要严格地分析,发现问题,不能说数据质量不好,就不去收集与分析数据,否则度量体系就永远建立不起来。
我们的关注是周期,周期的发散原因可以包括:
· 版本的规模
· WBS的并行性
· 员工的能力、态度、执行力
· 返工程度与返工量比例
· 构建成功率与通过测试的版本数
提高周期的管理能力,其实最重要的是管理好版本的规模与尽量地减少错误,从而可以减少返工量与成功通过质量验证所需的次数。
有很多同志表达了通过版本管理改善周期不是“真功夫”。其实管理好版本的规模是一个重要的理念。提高效率,不单单是提高员工的执行力,也包括项目的管理理念。一个项目的规模太大或是太小,都不是最有效的。关注把版本规模分配的比较小,可以减少实施的复杂度,有利提高效率。规模太小,管理开支的比重就太高了,影响了效率。
通过版本规模控制周期的波动,可以提高对客户的响应能力,也是一个重要的理念,不能任何改进都单单依靠提高员工效率。控制好周期的波动,可以提供一个项目处理过程问题的条件与环境。
当然改进有很多可能的次序。如果目标是缩短周期,首先关注周期是合理的。提高任何项目能力特征,首先需要把绩效稳定下来,才可能好好地分析问题所在,制定处理的策略。
在这个阶段里,版本规划,如果认真地处理,不应该太难。下一个要关注的,就是程序或是流程上有没有多余的地方。通常最基本的,就是通过验证的投版数。在硬件项目有其重要。软件项目也有评审一次通过率、编译构建的成功率、通过测试的投版数等等。在关注这些问题的过程中,我们就会发现很多如何规范执行力的因素与处理方法。这对过程管理理念的改进很有帮助。
以上谈到的都是第一个阶段。在这里,项目的关注可以是“优化流程”,提高执行力。如果我们开始监控返工量与成功率,未必可以立刻见效,因为这些需要项目的效能有所提高。这个就是第二个阶段要解决的重点。
第二个阶段,就是在努力缩短周期,建立了一定的管理和执行纪律,尝到了过程管理的初步甜头之后,在实践的过程中,项目已经能够把目标作为一个使命来看待,而不是一个任务。这个分别非常关键。有了这个态度,项目经理与员工就能够留意和认识到更深入的因素,比如会议的效率,评审的效率,甚至是文档的效率。因为这个阶段的改进,是项目自己认识到改进的必要性、可能性,大家都比较投入,明确共同目标,作出更有效的判断与决策,不单找到一些实施的途径,并且提高了实施的效率。
最后就是项目开始参考其他团队的最佳实践。这个时候,团队的效率提高比较明显,生产力是应该有明显的提高的。这些优化活动可以用定性的形式在CMMI三级里进行。到大家有了更充分的过程数据与经验,就可以通过量化的方法,系统性地,有针对性地优化过程。
这两个阶段的次序非常有趣。我们经常参考人家的经验,但就是效果不明显。这就是因为我们在没有认识到过程改进的必要性与可能性所导致的。
对于生产率与质量的趋势图,虽然不是重点,我们也需要监控。如果缩短周期的努力做得踏实,我们一定会发现,其他的参数也会有所提高。因为缩短周期,就是提高效率,就会改善质量。
总结
以上的讨论重点包括
· 过程改进的关键在于高层的管理理念,要制定过程改进目标,要平衡地监控过程的趋势:不能只关注一个或是部分的参数,也不能单单查看一个实施数据
· 平衡就是关注所有的项目关键参数
· 趋势就是综合组织的过程参数在时间上的改变
· 缩短周期可以分三个阶段
ü 第一个阶段是流程层面的
ü 第二个阶段是了解了过程的意义,通过项目内部的努力提高过程能力
ü 第三个阶段是通过共享经验,系统性地提高过程能力
转载于:https://blog.51cto.com/mk6yeung/119161