Kaiyun 开云Kaiyun 开云我们都知道“万事开头难”这句话,对于软件项目的建设工作来说也同样如此。当甲方项目经理在首次面对项目时,要怎样开始项目工作呢?是去了解业务需求还是制定工作计划、评估工作量?尽管说这些工作的完成情况会对后续相关工作产生直接的影响,是甲方项目经理在项目筹划阶段必须完成的工作,但它们还不是甲方项目经理开展项目工作的第一步。
就笔者个人的经验来看,甲方项目经理在开始一个信息化项目时,首先需要做的工作是对项目各方的进行深入沟通、调研,来明确其对项目建设的核心要求和原始目标,如市场部门希望6月底一定要有一个可用于推广的产品、业务部门希望产品功能齐全并可以满足后续的业务扩展等等。可以说,这些建设要求不仅是项目各利益方对项目工作的期望,同时也是项目工作开展的基本原则和考核依据。但在实际的项目建设过程中,由于时间、资源、人员等方面的限制,使得绝大多数项目都无法完全的满足各方的要求,特别是不同部门基于自身利益提出的要求会存在一定程度上的矛盾。这就要求甲方项目经理在项目工作开始前,不能简单的对这些要求全盘接受,而应对这些不同的建设要求进行综合的梳理和分析,积极同各方进行沟通,制定出受到各方都可以接受的项目建设要求。通常,我们将这一过程称为对项目“完成”的定义。其中,项目“完成”指项目建设工作应满足的一系列建设要求,是项目建设的工作准则、实现目标和考核标准。
对于信息化项目来说,其只有在满足“完成”的情况下,才可以算作是真正的完成,达到了项目建设的预期要求。可以说,“完成”的项目一定是完成的,但完成的项目不一定是“完成”的。例如,为了抢占市场先机,要求产品在指定的时间内推向市场,那么产品只要能够按时完成,就可以算作是达到了“完成”的标准。而没有如期完成的产品,尽管它的功能齐全、运行稳定,显然也不能算作是真正的“完成”。
“完成”是项目建设工作的最终目标,所有工作都是为了实现这个目标而开展的。只有在工作开始前明确了最终的目标,后续的项目工作才能够做到有的放矢、事半功倍。因此,甲方项目经理在项目开始时要做的第一步工作,就是明确该项目“完成”的定义。
我们知道,项目“完成”定义是在项目各方所提出的项目建设要求的基础上,经过深入的分析、比较、均衡后,开云 开云体育官网形成的对项目完成状态的描述,是项目建设工作的最终目标和考核标准。通常情况下,甲方项目“完成”的定义通常是由甲方项目经理依据各方对项目的建设要求,结合自身的工作经验而得出的。
那么对于“完成”来说,其通常是从哪些方面来对建设工作提出要求呢?对于不同的项目参与方来说,由于各自不同的工作立场和职能定位,使得其对项目建设提出的要求也会侧重于不同的方面,如项目完成时间、需求实现范围、一定要实现某一特定功能、界面好看等等。但对于甲方项目经理来说,这些不同角度、不同维度、不同层面和不同来源的建设要求整合在一起,需要耗费大量的工作和精力。因此,为了简化项目“完成”定义的梳理工作、便于后期的跟踪管理,笔者基于自身的工作经验,参照项目管理三角,将这些不同的侧重点归纳总结成为以下4个方面,分别是质量、时间、范围和成本(资源)。
甲方项目经理在定义“完成”时,应从上述4个方面来对各参与方提出的建设要求进行梳理。其可以将项目建设中需要优先满足的方面作为中心,其余部分作为三角形的三条边,从而形成一个项目“完成”三角。使用项目“完成”三角的好处是可以直观的看到项目建设的核心诉求,以及3条边相互之间的关联和影响关系。如下图2.1,选择质量作为项目核心,时间、范围和成本围绕它形成相应的项目“完成”三角。假如保证质量、时间不变,增加范围的话,势必会导致成本的增长。
对于项目“完成”三角来说,质量、时间、范围和成本(资源)分别代表了项目“完成”在该方面的建设要求,具体如下:
质量是软件产品的生命,没有质量的软件只能是一堆无用的代码,发挥不了任何作用。软件产品的质量越好,留存的bug就越少,出现异常的概率就越低。
但在实际情况中,极少有软件产品能够做到百分之百的没有bug,这是由于以下两个方面的原因:一是现在软件的功能越来越复杂,代码量为百万级的项目比比皆是。对于这些日益庞大、复杂的软件,使得在有限的资源下,查找所有bug就像海底捞针一样,很难确保百分之百的找到所有bug;二是当bug减少到一定程度后,继续减少所要付出的成本将会是前期的几倍甚至是百倍。因此,对于绝大多数软件来说,高质量并不意味着没有任何bug,而是将其对质量的影响程度控制在了一个可以接受的范围内。
那么,我们又是如何分析bug对质量的影响程度呢?一般情况下,主要通过以下两个指标,分别是bug危害程度和bug出现概率。其中,危害程度越高,bug对软件正常使用的影响就越大;出现概率越高,bug在软件使用过程中出现的概率就越高。甲方项目经理在对软件产品的质量进行管理时,首先要确保的是产品能用,然后才是好用。因此,在解决bug时,一般会遵循以下的顺序和思路,首先是高危害、高频率的必须解决;其次是低危害、高频率的尽量解决;再次是高危害、低频率的绝大部分解决;最后是低危害、低频率的依据情况解决。详见表2.1。这样做的好处是,可以将有限的资源用于解决最重要的问题,确保软件的质量可以满足正常使用的要求。
对于项目来说,其质量标准就是依据实际情况,来明确不同影响程度的bug所对应的处置顺序和处理原则,哪些需要优先解决、哪些需要全部解决或部分解决甚至是不解决。其中,降低质量标准可以极大的减少时间、降低成本,但是要承担较高的质量风险;反之提高质量标准,则可以降低运行时出现异常的风险,但是付出更多的时间和成本。
范围代表了在项目中应当实现的各类需求,包含功能性需求和非功能性需求。其中,功能性需求,指满足业务要求所需要实现的所有功能;非功能性需求,指功能描述以外的所有需求,包含了安全、性能、扩展性、持续运行时间、无差错率、易用性、美观等多个方面的内容。如果我们将项目涉及到的需求比作一棵树的话,那么功能性需求就相当于树的主干和枝叶,是项目工作中重点关注的部分;非功能性需求则是树的根,尽管很少有人会关注到,却决定着树的高度。可以看到,功能性需求和非功能性需求对于项目整体需求来说,是相辅相成、缺一不可的。这就要求甲方项目经理在对需求进行管理时,不能仅仅关注功能性需求或是非功能性需要,而是要做到两手都要抓、两手都要硬。
我们知道,在项目建设过程中,需求的范围不会是一成不变的,而是会随着项目建设情况的变化而随之进行调整的。但需要注意的是,需求调整的时间点越接近项目后期或是调整的范围越大,对项目的影响也就越大,需要付出的时间和成本也就越多,个别情况下甚至会导致项目失败。这就像是修改一幅接近完成的画作,其难度要远远大于修改一幅刚画了几笔的画。所以,尽管说需求范围可以接受变更,并且适当的变更可以使需求更贴近实际使用的要求,有利于提升产品的质量。但是提出变更的时点应越早越好、范围越小越好,否则就会对项目建设工作产生不利的影响。
在确定了项目的范围后,就相当于明确了项目建设的相关需求,系统需要实现哪些功能、开云 开云体育官网满足哪些要求,就都有了明确的依据。我们将这些依据落实到纸面上,就形成了项目需求文档,其是贯穿整个项目建设周期的核心文档,也是项目建设工作的实现目标和参考依据。
时间指项目完成的最终日期,是综合考虑政策、市场、成本和技术等多个方面的影响而确定的,但也可能是由上级领导直接敲定的。可以说,项目的完成时间一旦确定,整个项目的总体工作时间就不会再发生大的变化,相关的工作计划、资源配置、人员协调等建设规划都就随之确定了下来,各项工作都将按计划有序开展以确保在指定时间内完成。
尽管说项目完成时间一旦确定,就不允许再随意的进行调整。但是在实际的项目建设工作中,总是存在一些特殊的情况使得完成时间必须进行调整,如市场要求提前上线、增加了大量新的需求、建设进度远低于预期等等。而项目完成时间一旦进行了调整,那么所有在进行和未进行的工作,都需要按照新的完成时间来重新进行规划,相关资源也需要按照新的要求来重新安排。为了降低调整完成时间对项目工作造成的影响,甲方项目经理需要依据调整后的完成时间,并结合项目具体的建设情况,来对后续工作涉及到的计划、资源等内容重新进行规划、梳理。如有必要,还需要对项目的“完成”定义进行相应的调整。
完成时间对于项目建设工作来说,是非常直观、简单的建设标准,其判别依据主要就是项目工作能否在规定时间内完成。相较于质量、范围等较为主观的建设标准,其更加的客观,且对项目建设工作得而约束力更强。
为了确保项目建设相关的各项工作能够达到预期的目标,在建设过程中需要不断的投入各式各样的资源,为此所付出的费用称之为项目成本。按照投入资源的类型,我们可以将成本分为人力成本、研发成本和管理成本等多种类型。对于大多数甲方项目来说,人力成本主要指在项目建设工作中,为了引入业务、市场、法律、财务等项目相关的人员所要付出的成本。通常情况下,这些人员主要来自于甲方机构的各个部门;管理成本指为了确保项目工作能够按计划有序进行,甲方项目经理在进行管理、沟通、协调等工作时所付出的成本;研发成本主要指为了确保乙方团队能够按计划、按要求的完成项目研发工作,所需要付出的相关成本。
这里需要注意的是,人力成本、管理成本主要涉及对象是甲方机构的相关人员,除非有明确的内部人员支持定价制度和相应的考核机制,否则是不会将这些成本计入项目总成本的。同时,对于大多数项目来说,场地费、水电费等基础费用,也并不会计入到项目成本中的。因此,在一定程度上来说,甲方机构的项目成本主要就是研发成本,甲方项目经理在评估项目预算时,其标准也是该预算能否覆盖研发成本。
对于甲方项目经理来说,项目成本管理就是对研发成本的管理,如成本超出了预算,那么就需要通过缩减需求范围、降低质量等方式来减小研发支出,确保成本始终处于预算覆盖范围之内。否则的话,就需要向公司管理层提出申请,提升项目对应的预算。
对于甲方项目经理来说,定义项目“完成”的过程就是其在对项目各方所提出的项目建设要求进行综合的比较、分析、权衡后,从质量、范围、时间和成本这4个方面,形成各方均认可的项目建设要求的过程。按照笔者个人的工作经验,甲方项目经理在定义项目“完成”的时候,可以采用如下流程:首先应从质量、范围、时间和成本等“完成”要素中确定该项目“完成”的核心要素;其次按照核心要素、普通要素的顺序,来制定出项目“完成”所对应的建设要求。
我们知道,项目“完成”定义是对信息化建设项目建设要求的描述,一般从质量、范围、时间和成本这4个方面,为各参与方给出了明确的建设要求、工作方针和考核标准。但需要注意的是,由于时间、资源、人员等方面的限制,使得在项目建设时无法同时满足“完成”的所有要素,如时间不变的情况下,扩大范围势必会导致质量的下降。这就要求,甲方项目经理在定义“完成”时,为了确保项目建设工作能够最大程度的满足预期要求,就必须将这些要素进行分级,优先保证对项目最重要的要素,然后再在保障核心要素的基础上完成其他要素。因此,在开始定义项目“完成”时,首先要做的就是确定这4个要素项中,哪个要素项是该项目“完成”的核心要素。
按照笔者的个人工作经验,在确定项目“完成”核心要素时,可以采用以下2种方法,分别是关键角色法和评分法:
关键角色法就是找出项目中特定的关键角色,并将其最为关心的项目“完成”要素作为该项目的核心要素。在这里,项目的关键角色,主要指对项目有巨大影响力,甚至是可以直接决定项目生死的人。在甲方机构中,项目关键角色通常指对项目负有主管职责的高层领导。开云 开云体育官网
评分法是将质量、范围、时间和成本这4要素列为评分项,由各项目参与方在最低1分到最高5分中,依据自身的要求来进行打分。然后将不同参与者对项目的影响力作为权重,对各评分项进行加权平均,最后得分最高的项就是该项目“完成”的核心要素。评分表样例如下表2.2:
在这里我们需要注意的是,“完成”的核心项在项目建设过程中并不是一成不变,而是会随着项目具体情况的变化来进行相应的调整,如“完成”核心项是时间,但随着项目建设工作的开展,产品质量始终无法达到预期要求,那么当质量对项目的影响大于时间的影响时,“完成”核心项就会由时间变为质量。对于甲方项目经理来说,其在项目建设过程中,应依据项目实际情况的需要来及时的对“完成”核心项进行调整,从而使项目团队的工作重心向项目的核心问题转移。否则的话,项目可能会因其核心关注点得不到解决而无法满足建设要求,进而导致项目失败。
在确定了项目“完成”的核心要素后,我们就可以开始对项目的“完成”进行定义工作了。在定义时,我们应首先确定核心要素项对应的建设要求,然后以核心要素对应的要求为基础,梳理出其他要素所对应的建设要求,最后将这些建设要求整合在一起,形成项目“完成”的定义。具体流程如下:
将所有项目参与方对“完成”的要求通过表格的形式列示出来,分为项目参与方、质量、范围、时间和成本5列,通常会将“完成”的核心项放在最左边。然后,按照参与方对项目的影响权重,由大到小逐行录入所有参与方对“完成”的要求。如下表2.3。
我们可以按照从核心要素到普通要素的顺序,来逐项的定义出该要素所对应的建设要求。这里需要注意的是,为了项目建设工作能够最大程度的满足建设要求,非核心要素项对应的建设要求,如无特殊原因的情况下,是绝对不能对核心要素项产生不利于的影响的。如,核心项要素是时间,要求1个月内上线。那么范围作为非核心要素项,其提出的需求应确定可在规定时间内完成,否则为了确保时间的要求,就要对范围做出相应的调整。因此,在梳理建设要求时,核心要素项和非核心要素项的流程会略有不同,具体如下:
在梳理建设要求时,应以权重最高的参与方的建设要求为基础要求,然后按照权重由大到小的顺序将其他参与方的要求与之进行比较、分析,如果完全相同或完全对立则跳过,其他的情况则应在与双方沟通后,形成新的基础要求。不断重复直至没有新的建设要求,最后形成的基础要求,就是核心要素所对应的建设要求。如下图2.2。
非核心要素项目对应的建设要求在梳理时,流程、方法基本同核心要素的方式相同,但在对每一个参与提出的建设要求进行梳理前,需要分析其是否会对核心要素产生影响,如有影响的话,则需要通过相关的沟通、协调,消除相关的影响。如下图2.3。
在明确各要素对应的建设要求后,需要对非核心要素对应的建设要求进行比较、分析,确保相互之间不存在冲突。然后按照核心要素、非核心要素的顺序,将这些要求有机的整合在一起,即形成了该项目对应的“完成”定义。