华为硬件开发过程揭秘:第三十四篇——进度管理之道

发表时间: 2020-03-16 21:21

正文:

我离开华为之后,曾经加入一家互联网创业公司。

当在一个大公司的平台上做事做习惯之后,觉得一些都应该是严谨的、完备的、按计划进行的。


在这个公司里,项目经常出现两大致命问题,一是进度拖延,每次定制的计划,至少都得延后两个月,甚至更久。二是质量差,当我们开始黑盒测试的时候,发现有些功能完全没实现,或则跟当时的需求比,完全变形了。


下图的特点在这个公司充分的应验了。


我们做的这个产品的第一个版本是V0.1。当V0.1出现这个情况的时候,项目经理给出的解释是开发人员的经验不足。后来开发人员换了两三拨,从只有一两年经验的开发人员换成了5,6年工作经验的,甚至7,8年工作经验的人,这个情况还是没有太大改善。

所以说,问题的根本不在于开发人员,而在于管理。项目经理和他的项目管理方式,在项目成败中的作用举足轻重,公司的体制和绩效管理方法也往往是成败的本质因素。


为什么项目会出现这样的情况呢?单就这个项目来说,先抛开人员的能力问题来讲,我觉得就项目管理方面来讲,有以下几方面的问题:

1, 对项目的评估不足(包括项目的复杂度,风险,人力投入等)

在项目开始的时候,过于乐观,认为技术不是问题,因为对项目的技术风险,人员的投入都没有进行充分的评估,就急急忙忙码代码了。


2, 项目计划制定得过过于宏观,没有仔细做好任务分解

我认为项目经理最重要的任务,就是将项目进行分解,做详细的开发与验证计划。这些恰恰是这个项目欠缺的。项目经理认为,只要我们给了业务流程,再把原型图给到前后端,就不需要在制定项目计划了。由于没有深入到具体的操作层面,把质量和进度的风险把握到细节。如果项目中不能够及时调整和规避风险,很容易到出结果的时候已经为时过晚。所以项目计划也是一个不断渐进明细的过程。


3, 项目监控不到位

项目监控不是一会松一会严就能做好的。项目监控应该有固定的频率和方法。这位老板最严厉的时候要求开发人员用什么番茄工作法,每十五分钟填一次日志,我真心觉得这除了增加开发人员的工作量以外,没有别的用处了啊。这位老大严格起来像疯子,宽松起来就更像疯子了,前端没有按照要求完成任务,他帮前端开脱,后端没有完成任务,他帮后端开脱。呃,这样忽左忽右的态度,叫程序员如何适应。


那么我们来说说如何预防进度拖延

【措施1、用人】

所以我们在讲流程之前,先说用人。此处简单谈一谈:《曾国藩家书》中有许多关于用人之道的精辟见解,简而概之:广揽、慎用、勤教、严绳。


1. 广揽,通过各种途径挖掘各方面人才。  要想广揽人才,首先要有科学的择才态度。“英雄莫问出处”这话虽然简单,但真正在选人时几人能真正摘掉有色眼镜,不问学历,不问出身?曾氏帐下各种人才俱至,这首先得益于曾国藩独到的识才艺术。    2. 慎用,合适的人要用在合适的岗位上。  很多人会广揽人才,但能用好人才的却不多。曾国藩虽然广揽人才,但在人才的使用上却非常谨慎。他善于从细节上判断一个人的品性德行,从而对人才形成全面的判断。  曾国藩在主政两江时,很多乡亲好友前来投奔他,但他都是给足盘缠要他们回去。他说:好马劣马不能同槽喂食,否则好马也会变劣马。我的两江总督府是一个人才府,如果平庸之才也进了人才府,那么真正的人才就会寒心而走人。


3. 勤教,就是经常培训、教育。  曾国藩很善于通过书信、面谈及饭前闲谈对部属进行培训、教育。书信好理解,曾国藩家书洋洋洒洒几百万字,无所不谈。面谈相当于今天的绩效面谈,总结成绩,指出不足,探讨改进方法,促进部属成长。这些培训方法让曾国藩帐下很多人受益匪浅,这在100多年前相当难得。  

4. 严绳,就是通过建立健全规章制度来管理和督促部属。  制度不健全,好人干坏事;制度完善了,坏人也做好事。100多年前的曾国藩就明白了这个道理,并进行了丰富的实践,可叹今人还在这个问题上认识不清。


这8个字中,“勤教”是最难的。这也是华为说的:“先固化、再僵化、再优化”,这个过程,需要主管、项目经理下足够的功夫。例如“例会”、“问题跟踪”,很多很多次的动作才能形成一个习惯,很多很多的习惯才能形成一种传统,很多很多的传统才能形成一种文化。华为的流程文化,也是很长时间的历练才能形成,并且有大量人的智力和体力的投入。

所以在初创团队中,要想建立一套“规章制度”、“规范”、“流程”,这些文档网上都有,流程建立的核心是“人”,流程执行的核心也是“人”。华为的IPD流程,网上有很多文章,照搬肯定不行的,关键是吸收精髓,然后为我所用。


看到上述项目管理的种种问题,大家是不是觉得项目管理是一件很难做的事呢?其实不然,我认为在华为研发、流程部期间,经历过很多项目、很多项目的计划制定简直是“反人类的”,但是项目的进度和质量都是有保证的,至少不会出现较大幅度的失控。

华为的项目经理,又做了版本经理、开发代表的区分。开发代表往往管理多个版本。开发代表,这个词很好,顾名思义就是开发的事情都得代表。虽然有一些事情不需要开发代表亲力亲为,但是方方面面都是他需要关照到的,从产品的需求确认,排序到开发的进度把控,再到质量要求,配置管理,转维的计划,物料供货,客户报价等等等等,都需要是开发代表关照到的范围。开发代表就像一只360度旋转的陀螺,每天周旋于不同的角色之间。

项目经理的人选就有位重要,项目经理的选人也非常重要,这是为什么华为让研发人员去负责招聘,而不是交给猎头公司和HR,是有原因的。


所以老话说的:“兵熊熊一个,将熊熊一窝”,初创团队的CEO、大公司的项目经理,决定项目和公司的生死。


【措施2、把牢需求,从源头控制进度】

我们先看看IPD流程中项目是怎样诞生的。

一切的项目的来源都是市场需求。华为有专门的市场管理流程来规范如何处理收集到的各种市场需求。marketing会根据市场的需求来制定相应的业务规划,也就是说某个产品线将要开发些什么产品,这些产品的V1.0.V2.0V3.0大概是什么样子的,都是有一系列的规划的,这就是业务规划和路标规划。同时,市场又是多变的,有可能出现规划外的产品,所以也有可能charter是直接从市场需求中来的。

从上图可以看到,产品的开发之前,需要有一个收集产品需求的流程。这个流程,保证了两点:

1、需求是有依据的

2、需求有基线,归档并跟踪

3、需求有讨论,不是一言堂,不是拍脑袋。


虽说到了产品开发阶段,才是开发代表的主战场,但一个善于战斗的开发代表是绝对不会等到charter交到他的手中,他才开始准备这个项目的。在charter开发的过程中,开发代表就应该积极深入到客户、或者产品线、合作伙伴、甚至竞争对手,对项目做更充分的了解和沟通,可以提前评估各方面的资源,做好和各方斗争的准备。项目经费,人力资源投入,质量要求,客户需求满足度,这些都是在正式立项前,开发代表都要考虑的内容。功课做得足,后面才不会吃亏。投入了多少时间和能收回多少果实,绝对是成正比的。


【措施3、在项目各个阶段,做好关键动作。分阶段保证计划落实】

Charter通过后,就正式立项了。从项目的开始到项目关闭,开发代表始终都会奋战在一线。项目开发主要的几个阶段:

项目启动(概念)→项目计划→项目开发与验证→项目发布→项目关闭


项目启动:启动阶段说白了就是拉人成立山头的过程。告诉大家,我有番号了,是正规军,你们都跟着我干吧,面包洋酒都会有的。于是SE,测试经理,硬件,软件,结构,RQA,配置经理统统都来了,来给开发代表打工了。开发代表介绍charter,需求,大概可以花多少钱,多长时间内要完成。然后大家一起评估下工作量,看看时间是很紧张呢还是很很紧张呢。

这个阶段必须要完成一些基础的配置:比如项目编码申请,创建项目基本信息,记录预算分摊关系等等。


项目计划:华为的项目计划包括很多个独立的计划:开发与验证计划,版本计划,版本转维计划,测试计划,质量策划,还有子项目计划(硬件,软件,结构,逻辑等等)。

做这么多计划的核心,其实还是那句话,讲一个庞大的项目切分成模块,各个模块的负责人再来根据模块的具体情况,手上的资源情况,制定进一步的计划。开发代表这个时候要做好的就是各方的沟通协调工作,特别是有依赖关系的几个模块,在计划上就一定要衔接好,还要充分考虑可能出现的风险,留出部分的预估时间。


项目开发与验证:这个阶段的重点工作其实就是跟踪与监控了,定期检视各个子项目的进展情况,是否有突发的风险,需要新引进的物料是否能按时走完流程,一些特定客户需要的认证准备,等等。还是一句话,跟踪和监控需要有序有力的进行,任何不确定的因素都要想办法确定下来,不给后面的发布埋雷。大多数的项目经理都会用到的一个管理工具推荐给大家《任务跟踪表》。


项目发布:按照计划执行对内对外的发布,项目验收,做好各方位的交接工作。其实只要项目的进度偏差不是太大,也没有出现重大的bug攻关不下,到了发布这个阶段,基本上大家都可以稍稍松口气了。当然,还是不能大意。这个时候,更多的是跟各方的一个交接动作。


项目关闭:关闭遗留问题,项目编码停用,文档归档,经验教训总结等。该奖励的奖励,该打板子的打板子。(此处,可以说明华为年终奖与此挂钩)


这几个主要的阶段介绍完了,看上去是不是还是蛮简单的。实际上在整个的项目管理的过程中,还穿插着大量的风险管理,需求变更管理,团队成员的即时激励等等工作,有时候紧急,有时候可以缓缓,但是都需要开发代表妥善的解决。我对一件事情印象很深,就是我当时所在的整个小组都被借到另外一个产品线去做服务器的开发项目,就是因为当时这个项目的硬件经理不给力,直接被开发代表撤换,然后又没有合适的人力投入,开发代表就通过种种办法,硬是完成了不可完成的任务。从团队的磨合到解决前期留下的各种问题,天天都是忙飞了,这种进度和强度,都是很大的。


【措施4、工欲善其事必先利其器】

1、用好跟踪工具,并与绩效挂钩。

开发代表,只是负责项目群,对产品的各个版本的交付负责,所以他负责在整个产品的各个版本交付的时候,有很多工具PMM(类似于Redmine系统,web的项目管理软件)、缺陷库、问题跟踪表、燃尽图。这些工具,很多初创团队都有在用,但是是否落实在实处?就看计划的严肃性和绩效管理是否挂钩。这样的话,大家都重视计划,胜则举杯相庆,败则拼死相救。


2、计划制定,要严谨,并用统筹方法分配进度。

进度计划往往都是严谨的,计划变更是需要严肃评审的,不能随意拖延。否则跟绩效挂钩,绩效也直接影响奖金、加薪等直接利益。那么项目经理在执行层面,会根据“deadline”进行倒退,并分析关键路径。


我们需要运用“统筹方法”,首先分析活动的依赖关系。


活动所依赖的活动ABCDEFGHA



然后根据依赖关系,画出进度网络

经常有一些初创团队,在做一些智能硬件的时候,发现到期不能交货,主要的原因就是:没有做进度网络图分析。最后导致,模具周期长,结构件供货周期长,最后导致无法供货。

把每个子任务的工期,加上活动之间的依赖关系,就可以确定进度的关键路径。


3、用流程保证计划渐进明细,不断刷新,不断细化。

在项目各个阶段都需要进一步根据实际情况,细化近期计划。否则阶段内的计划不完成,总体计划注定完成不了。

记住解决问题的思路,然后所有的活动,模板,管理方法都要根据自己项目的实际情况进行制定和修改。

别人的光点不燃自己的灯。