有效估计应具备的条件
在第一讲中谈到了应如何正确认识项目的估计工作,大家不难得出如下结论:在研发项目中,如果想要制定的计划更切合实际情况,更有效指导项目实施与控制,就需要对项目进行合理的估计。而估计的结果要有效,则需要应用历史数据或者经验。试想一个从未开发过等离子电视机的研发人员怎么能够准确地估计出开发一款新电视机所需要的时间呢?
是否只要研发人员具备了某些领域内的实践经验,他们就能够制定出符合实际执行情况的计划来?答案当然是否定的。这也正是目前研发型企业在制定项目计划时普遍面临的一个困窘:在新项目启动之初,选择有经验的研发人员担任项目经理、系统工程师,希望倚重他们丰富的经验,通过对项目历时进行估计、对项目约束与假设进行识别、对项目可能调动的资源进行分析、对客户需求进行挖掘和理解,制定出合理的计划。但是他们制定出来的项目计划与项目实际的执行情况还是差距很大。最终因为计划本身不合理导致几乎所有人都不按照计划执行,项目组陷入各行其是的局面。看来要制定合理的计划,让估计结果具有现实意义,仅靠有经验的人是做不到的。
即便是经验丰富的人单凭经验也无法制定出合理的计划,为什么?因为缺乏正确估计方法的有效应用。正确估计方法之于有经验的研发人员,正如高性能的狙击步枪之于神枪手。历史数据与经验以及正确的估计方法是有效估计的两条腿。很多企业虽然从事研发的时间较长,但大量的经验教训仅存在“牛人”的脑海里,无法在组织层面进行传递和共享,在“知识共享与传递形成组织层面的经验”这条腿上做得很不够,那就更有必要加强“正确估计方法的应用”这条腿。因为要能够积累有效的历史数据和经验非一朝一夕,所以如果企业要在短期内提升研发计划的合理性,那么在制定计划的过程中应用正确的估计方法则必比可少,同时也是捷径。
估计对象
项目计划是为了达到项目目标——范围、时间、成本、质量——而制定的未来的行动方案,它涉及到项目进度计划、沟通计划、配置管理/数据管理计划、质量保证计划、资源需求计划等等。因此在制定计划的过程中,需要对项目预计投入工作量、时间进度、所需要的资源等进行估计。
估计方法可以应用于所有需要估计的场合,但是在项目管理中,通常需要对项目的规模(Size)、工作量(Effort)、进度(Schedule)等进行估计。
项目规模(Size)代表着项目可交付物——产品或服务——的需求范围、复杂程度等项目的本质特点。不同的研发领域,对项目规模的评价方法和评价单位不同。比如在硬件领域,由于工作的复杂性主要表现单元电路的复杂性,因此常用关键芯片或者关键逻辑电路的结点数来反映其复杂性。结点数越多的逻辑电路,其实现的功能越多,逻辑结构也越复杂,因此所要耗费的人财物等也相应增多。通常用结点个数(Nodes),千结点个数(KNodes)来表示硬件规模。在软件领域内,通常用代码行数(Lines
of Code,LOC),千代码行数(KLOC)、实现的功能点数(Function Points,FP)等来表示。在结构领域,通常用结构设计软件中的结构件特征数(Number
of Features)来表示。采用上述方法来表现项目规模的好处就在于:无论是硬件、软件还是结构,其每个结点、每行代码、每个特征点都需要企业投入资源去执行需求分析、总体设计、具体实现(如布板、编码、绘制图纸制作手板)、进行测试验证等,这是一个全面的过程。因此一旦对将要开发的项目进行了规模估计,就可以基于此规模进一步分析所需的人员、工作量、设备、风险等等。
项目工作量估计的前提是假设公司内的不同研发人员具有相同的研发生产率(R&D
Productivity),比如都等同于标准研发工程师。在这样的前提下,项目组成员可以根据对项目需求的理解,直接应用估计方法估计出所需要的工作量投入。项目规模与项目工作量之间的关系是:Size
= Effort * R&D Productivity。工作量通常用工作人年(Man Year,MY)、工作人月(Man
Month,MM)、工作人日(Man Day,MD)。假设某项目的规模是1000Nodes,公司硬件开发人员的研发生产率是10Nodes/MD,则该公司完成本项目的硬件开发需要投入1000/10=100MD
项目进度(Schedule)代表着项目的持续时间,通常表现为日历时间,反映了市场与客户的要求、可用人财物等资源、各专业领域配合、以及必需活动之间的相互影响等要素。除这些基本要素外,在制定项目进度时,还需要思考:本公司的工作时间是6天工作制还是5天工作制,每天工作8小时还是7.5小时?研发人员的等级划分及生产率对应关系,比如:1个系统工程师相当于1.5个工程师,1个高级工程师相当于1.2个工程师,1个助理工程师相当于0.8个工程师等等。
在进行项目估计时,理论上是可以对规模、工作量、进度等应用估计方法直接估计,但是实际情况却并非如此。在现实工作中,大部分企业都是直接估计项目进度,至于项目规模、所需工作量等仅凭项目经理或几个有经验的人拍脑袋想想即可,甚至根本就不考虑项目的规模与工作量。
正式的估计方法要求首先估计规模或者工作量,而不推荐直接估计进度。至于对规模与工作量,既可以首先估计规模,然后根据生产率计算出工作量;也可以二者都估计,然后在二者之间进行平衡。因此,在制定项目计划时,应首先决定估计的对象,并确定所对应的估计单位。
通过采用正规的估计方法,提升影响计划合理性的短板,并选择合适的估计对象,改善估计过程,以便制定出客观合理的项目计划来。
|