记录这三年,关于项目管理上的一些心得体会 – 概述篇
本文主要目的,是记录我从华为身上学到的一些项目管理上的知识精华,记录在案,一来供个人今后在职业生涯道路上越走越远的时候,不时回来观望一番;二来供奋斗在行业前线又想了解一下的同学一起交流。个人愚见,仅供参考。
大抵是在12年,承蒙外企老板的厚待,给我了一个机会让我开始接触项目管理,踏入这扇大门。
既然是概述篇,具体的知识细节点一笔带过,只描述一下概要即可,对应的知识细节铺开理解,可到博文的其他兄弟章节中 一 一 体会。
外企项目管理崇尚自由、敏捷、高效
初识开发模型
软件生命周期
各个阶段输出件
项目启动会
风险识别及管理
外企项目管理崇尚自由、敏捷、高效
得益于在外企待上的这一年多,完全体会到了外企高管对于企业文化熏陶的重视性。
外企不同于国内中小型企业,大多外企致力于打造专业的团队,提供极度优质的软件服务,打造的是 客户→服务→产品→迭代二→迭代三
而不是像国内中小企业一样致力于 客户→交货→新客户→交货
因而公司给予了博主一个 大概8人的 纯前端工程师团队 进行管理。
在这期间,零零散散的接触到了之前从未接触到的项目管理知识:
做项目计划、甘特图、WBS工作分解、PDCA戴明环、Delphi预估方法 等等。
举个例子:
国内中小企业:
之前博主刚毕业之际,在一家小型外包企业谋求得到一份C#工程师的工作,而在这期间,对于程序员的我来说,就是接到领导的单子,然后口头宣讲需求,然后就开始动手做,赶工做完了先交一次客户,不满意,只能利用周六周天或者平时下班时间加班改,正常作息时间是拿来做下一个项目的。如此一直循环的工作方式。
有一次做某项目,由于太赶工期,且需求变更太频繁,到项目发布会当天,验收会上,首页都还在报错,页面下方布局层次不齐,如此质量也得到了某领导的高度评价和赞赏,然后顺利验收交货进入维护阶段。
而这样的情况由于缺乏正确有效的项目管理手段,例子比比皆是。
切身体验来说,可以如是概况:对于这样的小企业,如果未经过合理的项目管理手段,会使得项目毫无章法,毫无规划,而员工处于这样的工作方式,对个人发展很是不利。
外企:
在外企工作期间,每一份工作项,需要经过需求分析,需求宣讲,工作量评估,软件设计,再进入开发阶段,力求一步到位,想客户之所想不到,容客户之所看不到,因为有之前的几个环节,所以通常能够使软件交付质量异常的高。
不得不说,做好一款软件,是双方配合的过程:客户表达清楚我想要的,软件工作者做出超出你想要的,这是win & win。
我曾经遇到过一个澳大利亚的客户,在来往的邮件中,切实的体会到客户对于当前的痛点描述的很清晰,并且为了方便我们理解,发来了大量的参考Excel数据集合。最后在双方的合作下顺利交付。
在外企的工作经历,带给我的体会是这样的:由于有之前的中小型企业工作经历,这份外企工作经历更加显得弥足珍贵,双方相形见绌。外企崇尚的敏捷、自由、高效的运行。当然这也需要每一位参与者的能力都达到了一定的高度,才能够有更加快捷的运作效率
初识开发模型
上文提到了项目管理中的开发模型:敏捷
其实运用在软件开发中的开发模型有很多,也因项目性质不同,可使用的开发模型也不同。
随着时代的发展,越来越多更加科学合理的开发模型被发掘和应用,这里简单介绍几种博主使用过的开发模型和不通的适用场景。
瀑布模型:
循规蹈矩的进行软件开发、从需求到设计到开发到测试,几乎一气呵成,不存在大量的变动,一般适用于大型项目。
要使用这套模型,我个人总结,需要具备以下条件:
1、项目变动不大、客户需求稳定
2、该模型最后才能够输出项目成果,需要客户参与到软件开发过程中,最好设置几个体验时间节点
3、项目经理能力要求较高,过程管控能力要求较高
4、各节点负责人需要具备文档能来,来撰写各个阶段输出件
敏捷模型:
快速吸收客户需求,将项目管理和沟通更多的放在 每日晨会/看板会/站立会上,每个人都是100%的参与者,通过不断的沟通,快速响应需求,并且以一个一个阶段的方式将大型或中型项目进行分解拆分,分阶段达成。
敏捷开发模型,需要具备如下几个特点,再使用,才能更加高效:
1、团队人员不在多,而在高、精。 控制在 5~10人团队,精准管控
2、客户需求存在多变或还未定的情况,项目支持分阶段验收
3、客户可接收很少的输出件,简化项目开发期间的过程输出
螺旋模型:
相当于是很多个小的瀑布模型的集合,或者说看成,在客户的需求已经明确的情况下,在初期将超级大型的项目分成了迭代一迭代二迭代三,只不过每一个阶段都加入风险把控分析,然后及时把控停留或推进项目。
螺旋模式使用超级大项目,通过版本迭代的方式,剥离用户原始需求,拆分实现,要使用这个模型,个人愚见需要如下几个条件:
1、客户也倾向于分阶段交付项目
2、项目人员组成相对稳定,角色分明
3、项目经理具有风险分析及识别能力
其实软件开发模型有很多,只不过不在这里做太多介绍,概述一下项目管理需要用到大概哪些知识即可。需要看更详细的项目开发模型详解,请参看《我从华为身上学到的项目管理经验 – 开发模型篇》
软件生命周期
不同的项目,软件生命周期可能有些许的不一样,但正常的软件项目生命周期应该是这样的:
- 客户提出明确或模糊的需求
- 进入【需求分析阶段】,进行需求分析,项目计划
- 进入【设计阶段】,根据需求和客户刚需,进行原型设计和设计初稿设计,后期输出软件概要设计文档和软件详细设计文档
- 进入【开发实施阶段】,配合QA进行相关项目管理
- 进入【测试阶段】,配合TPM进行测试管理
- 进入【发布阶段】,配合售后进行项目维护
大家必须明确的是,在项目管理中,有三点是最关键的因素,也是左右项目,适时调整的最大诱因。
时间、成本、质量
成本,是指投入的人力成本和物资成本,都是成本的范畴
时间,是允许的整体时间跨度,如何衡量这个时间,有个小窍门,先拿到最小时间和最长时间,再加上自己预留的BUFFER 来衡量
质量,是指在上述两个条件下所产生出来的软件整体质量,成本大了,时间长了,质量自然就上来了
三者层层嵌套,环环相扣。
但是其中某个环节在某个时间点出问题的时候,如何微调,这个就是技术活了,需要靠不断的项目经验慢慢积累,不方便细说。
各个阶段输出件
各个阶段有明确的输出件,相关名词解释等。
如:
需求阶段输出:《SRS.doc》《FRS.doc》《项目计划.mpp》等
设计阶段输出:《概要设计文档》《设计初稿》等
开发实施阶段输出:《干系人》《周报》《双日报》《日报》等
测试阶段输出:《测试报告》《转测说明书》等
发布阶段输出:《使用说明书》《参数配置表》等
输出件有许多,不能一一拆分将就,详情请参看其他《我从华为身上学到的项目管理经验》章节
项目启动会
这项工作是个技术活,个人认为属于项目管理中的核心范畴之一,也可以从侧面直接反馈出作为项目经理所应具备的风险应对能力和统筹策应能力。
在项目进行到即将启项的时候,需要有一个项目启动会,启动会会需要囊括到项目范围,交付范畴,项目计划,项目干系人等方方面面。
就项目计划而言,需要借助甘特图,来分析什么人,到了什么时候,他应该去做什么事,预留BUFFER有多少,在考虑buffer的情况下做完之后有没有空余时间等等
就项目干系人而言,需要考虑资源的投入产出比,成本,资源稳定性,应急人才备选,资源时间投入比例等
并且在会上,需要明确的阐明交付时间跨度,里程碑,交付件等关键信息给客户或领导做展示。
相关详细的项目启动会输出件demo,会在后面的相关章节中做详细介绍并附上几个不同的项目启动会ppt供参考。
风险识别及管理
风险管理个人看来是个虚活。
这项技术需要更多的量累计,才能达到质的改变。
- 客户风险识别
- 业务风险识别
- 管理风险识别
- 技术风险识别
- 决策树
此处不一一赘述,确实太虚了,无法落笔到本文中,看后面能不能花点儿时间把博主所遇到的一些风险案例 撰写出来,才能体会到。
总之一句话:只计算IT行业的项目管理的话,本人只有3、4年的经验,以上只是我个人的一些愚见总结出来的一个概述,具体的精华部分,会花时间,以举例demo,上传附件等方式来详述,落实到各个其他章节中。
项目管理深似海,慢慢泛舟学习吧。