如果说硬件工程师工作的对象是单板,软件工程师工作的对象是代码,那么项目经理工作的主要对象就是人,而且是一群性格各异,彼此之间可能毫不熟悉的攻城狮。要在最短的时间内完成团队的磨合,有效的开展工作,并且最好能在规定的时间和经费的范围内,顺利完成项目交付,项目经理没有十八般武艺,那怎么能hold住呢?
一张图说明项目经理是怎样累成狗的。
整体管理:影响一个研发项目成功的因素有很多,要确保一个研发项目能在规定的时间,规定的经费下顺利完成,更不容易。所以项目经理需要整体把握项目中的各个环节,协调各个模块之间的关系,确保项目的整体进度和质量。这些都需要项目经理对项目的各个环节了如指掌。虽然质量方面有QA辅助,需求有SE把握,人力资源有HR帮忙,但是我认为项目经理是整个项目中最能看到项目全貌的人,所以这些领域都要熟悉,才能够协调好质量,进度,人员,资金等各方面的问题。同时,比起单板和项目,人才是最难管理的,要做到项目团队都能服从安排,有一个良好的团队氛围,更是不容易。
曾经呆过一家做网站开发的公司,因为进度延迟,所以项目经理天天召集会议,甚至用上了番茄工作法,让开发人员每十五分钟填写一次日志,然后进度并没有得到改善。我觉得这个现象很奇怪,就跟参加会议的研发人员打听了开发的具体情况。原来是这样的:1.没有分析过功能模块的难度,计划都是拍脑袋出来的,这个模块3天,那个模块5天。导致了有的模块简单的,工程师很快完成后就坐等,有的模块复杂,工程师加班加点也完不成,这种情况更没办法 2.模块前端和后端有关联的部分没有规定协商的机制,一方出了问题影响到另外一方,大家就开始扯皮,这个说这部分工作不是我们负责的,那个说这部分工作该你们负责。到后来,大部分开会的时间都是扯皮。3.空闲出来的工程师没有提前做下一步的工作,闲置了一部分人力。结果有的工程师累死累活,还看着旁边的人逛淘宝,怎不心生怨言?
价值管理:分析和管理项目的价值,包括项目的投入产出,项目运作过程中产生的价值等。在华为,项目的价值分为外部价值和内部价值。外部价值对市场和客户而言,内部价值主要是指内部能力提升,技术储备等方面。
这个道理其实很简单,我们做任何工作,都要考虑为什么做这个项工作,需要我们投入多少精力,投入多少金钱,项目的收益是什么。特别是客户价值方面,我们的产品是否有竞争力,是否能提升客户的满意度,产品面世后是否能带来更多的潜在客户,这些都是在项目开始之前需要充分考虑的。对于华为这样的大公司来说,会做一些技术储备或则某些特定领域人员能力提升的项目,但是在大多数的小公司来说,需要考虑最多的一块,是客户价值。
价值的基本公式:V=F/C(V=价值,F=特性,C=成本)
可以看到价值是受很多方面的影响,特性,费用,进度,人力投入,资金投入等等。所以项目不能单纯追求某方面的突出,而是整体权衡的结果。
价值分析的方法有很多种:workshop,SWOT分析,产品竞争力分析等等,都可以综合运用。
强调一点:千万不要打着客户价值的幌子,过设计。过设计在大家身边应该不在少数,大家可以仔细回想一下。
对于客户价值的分析结果,我们可以用一张客户价值跟踪表来描述:
特性编号
特性描述
关键资源投入
价值藐视
评价标准
范围管理:明确项目的需求,并在项目实施的过程中确保需求的实现。如果在项目过程中出现需求的删减,增加,更改,都需要依据流程进行评审,决策,并且持续跟踪。
市场人员最头大的是:我让你给我开发一个保温杯,结果你给我了一个热水瓶。
研发人员最头大的是:今天你告诉我要开发一个保温杯,结果明天又给我说要一个热水瓶。
范围管理的重要不言而喻。虽然有时候市场的需求会变化,客户会抽风突然提出一个什么新功能,但是我们的项目经理一定要保持清醒。在项目的概念阶段,就要把项目的范围明确下来,包括产品的功能,性能,特殊实现需求,以及产品的交付时间,验收标准等,而且要给所有的需求进行排序,并且持续的跟踪管理。
在项目进行的过程中,任何需求的变更都需要召集相关人员,做严谨的评审,有时候看上去是一个小需求,其实会牵涉到各方面的问题,所以不能头脑发热。
又要拿前面那可怜的项目经理举例了,啊,他简直就是项目经理黑榜上的典范啊。公司开发的网站是一个差旅管理网站,在攻城师们动手码代码之前,先进行了客户需求访谈,并且整理了需求清单。结果到了项目黑盒测试的时候,市场人员对着需求清单对网站进行测试,发现A需求少了,B需求变样了,又跑出来一些需求清单上没有的功能,我们拿着需求清单和测试报告去问项目经理的时候,他居然来了一句:我也不知道,不知道研发人员是怎么搞的,怎么会变成这样子呢?搞得市场人员真的是苦笑不得,您天天开会是干嘛呢?睡大觉去了吗? 如果说客户是上帝的话,那么项目经理就是觉得上帝会不会发怒的关键人物啊,所以一定要睁大了眼睛盯着你的项目,ok?
质量管理:如果说需求管理决定开发一个热水瓶还是一个保温杯,那么质量管理就是来决定这个保温杯到底可以用十年还是用五年的。
质量管理包括制定项目质量策略、目标,定义支撑目标达成的过程活动和关键措施。可以看到,质量管理包括了交付件的质量管理和过程的质量管理。在华为的项目中,质量管理是由QA帮助项目经理一起完成的。在制定质量策划的时候,要根据项目的具体情况,客户的要求,再结合公司的基线数据,团队能力,制定合适的质量策划,并且对照公司流程活动,对本项目要执行的质量活动进行适配和裁剪。
这里要注意的一点是:对于交付产品的质量,大家都还比较重视,但是对于开发过程中的质量活动和交付件的质量,很多研发人员都不以为然,认为结果做好了就行,过程不重要。我觉得这是一个大误区,规范的过程是对好的结果的保障;高质量的交付件,既是对开发过程的记录,便于事后追溯,也是对经验的一个传承,当项目有新成员加入的时候,一份正确的高质量的过程文档,就是对项目最好的说明。
成本管理:分析产品的成本要求,明确产品的成本构成,并且要制定成本实现方案。这里的成本指的是交付产品的成本。其他资源成本属于财务管理的范围。
成本管理的内容我们用一张图来说明(不限于此):
成本管理的关键在于对成本的分解。大组件的成本解构成小模块的成本,影响成本的因素都一一列出,那么当所有成本项细分到不能再细分的时候,产品的成本构成就一目了然了。
在设计过程中,有很多细节都会决定成本的高低,比如关键器件的选择,独家供货器件,产品的制造工艺,软件的升级方式等。这些都需要在设计开发的过程中仔细考虑。
财务管理:对项目所需的经费进行预算和管理。直接费用主要包括两方面的内容:人员费用(员工工时工资,差旅费用,合作费用),物料费用(芯片样片,结构件,资料等)。财务管理的方式和成本管理大同小异,主要是做好预算,分解,和跟踪管控,就不再多说。
时间管理:管理和控制项目的进度,确保项目能按时完成。
时间管理,也是时间和项目活动分解与组合的一个过程。在华为的项目过程中,项目团队会根据确定好的项目范围,参照流程定义的标准活动个,来定义项目中的具体活动和完成活动需要的时间。在项目执行的过程中,对活动进行监控。如果进度出现偏差,则要调整进度计划或者采取其他的措施,来保证项目目标的达成。
时间管理要做好几方面的工作:1.在定义活动的时候,要对每个活动进行充分的估计,避免在计划期间,就将时间卡得过于严格。虽然说我们的攻城狮们对于加班加点已经习以为常,但是我们也不能把时间定得累死狗也完不成啊。2.对于相互之间有关联有依赖的活动,要注意时间交叠期,不能因为一个活动的偏差造成对其他关联活动的大的影响。最好在制定计划的时候就给出补充解决方案,以防事发突然。3.项目过程中的监控。如果项目都进行了一两个月了,你才发现项目的进度有问题,我只能说,你真的不适合当项目经理啊。
周四的时候,我和另外两个老师开车去珠海,给一家公司做培训。结果行程到一半的时候,发电机故障的标志灯亮了,亮了大概有5分钟,又灭了。以防万一,我们在最近的一个路口下了高速,并快速的找了一个修车店检查车辆。so sad!发电机是真的坏了,而且店铺里没有现成的零件替换,需要厂家送配件。结果就是我们比原定计划晚了三个多小时到达。如果把这件事当做风险管理的一个例子,那我认为我们的处理是妥当的。1.我们提前一天出发,没有因为这件事导致培训的延误;2.在标志灯亮了又灭的过程中,没有抱侥幸心理继续开,那样可能我们就真的躺在高速路上了更麻烦(一路上看到了5辆坏在高速路上的车) 3.事情发生后,团队成员没有互相抱怨,影响后面的情绪。
风险管理:风险是指项目中可能发生的某种不确定的事件,这些事件可能影响项目的进度,质量,范围。风险管理就是指对这种不确定的消极事件进行主动应对和管理,降低或消除它们对项目的影响。
风险管理主要有以下几个活动:风向管理计划——识别风险——分析风险——制定风险应对计划——控制风险。
风险管理计划指决定如何进行项目风险管理活动的过程。这个计划确定了项目管理过程中风险管理活动需要遵循的规则,例如:风险管理的方法,风向管理的活动,责任人,已经风险的类别定义等。
识别、分析风险:识别可能影响项目的风险并进行记录,同时对风险发生的概率和影响进行分析,对风险进行等级排序,识别出top风险。这一环节是整个风险管理过程中最重要的一个环节,并且是持续循环的一个活动。也就是说在项目的每个阶段,我们都要进行风险识别和分析,而不是在项目开始做过一次就了事。
制定风险应对计划:根据风险的优先级来定制应对风险的措施,包括需要的资源,责任人等。华为通常采用的几种应对风险办法:规避,转移,减轻,接受。
控制风险:跟踪已经识别的风险,实施风险应对计划,并且评估风险对项目的实际影响。
沟通,沟通,再沟通。以上所有的管理,都少不了这个最重要的环节。特别是研发出生的各位技术宅,更要多注意沟通方式和技巧,尽量做到事成人爽。好了,有空我们再来聊沟通的那些事吧。