0. 前言
项目管理在工作中随处可见,特别是客户端,版本更新是用户强感知的显式升级,对于版本节奏和进度控制有较高的要求,作为一名客户端开发同学,在统筹app版本迭代中不断体验项目pm角色,为了解答自己遇到的各种问题,不久前参加了PMP的培训和考试,理论与实践结合中略有些收获,在此做一些记录和总结。
1. 什么是项目
根据PMBOK的标准定义,项目是为创造独特的产品、服务或者成果而进行的临时性工作。根据这个定义,项目就具有了独特性、临时性、渐进明细性。换句话说,具备目标明确性、活动一次性及资源消耗性这三个主要特性的活动,都可以看作是项目。除了工作中我们具体参会与的项目之外,项目在生活中也随处可见,比如为了准备一次考试或者答辩、新房子的装修、减肥、安排一次团建活动甚至一次求婚等都可以都看为是项目。在这些项目的实施过程中,都存在项目管理任务,但是,实际生活与工作中,可能更多关注的事情本身,而对做好事情相关的组织、计划、控制等过程相对缺少关注,或者没有经验与能力加以关注,对项目的过程和结果也缺乏评价和持续性改进。那么项目管理到底是在做什么,有哪些内容?
2. 项目管理包括哪些知识
2.1 项目管理由谁管理
项目管理一般是由项目经理(以下简称PM)来执行,PM有个官方认证也就是PMP认证。
PMP认证是由PMI(美国项目管理协会)在全球范围内推出的针对项目经理的资格认证体系,通过该认证的项目经理被称为“PMP”, 即Project Management Professional(项目管理专业人员)。PMP具备全面的、科学的项目管理知识,拥有至少三年以上的项目管理经验,并且所具备的知识和经验得到PMI的检验认可。PMP资格考试基于《PMBOK指南》,它涵盖了项目管理过程指导知识和工具技术,项目管理就是将知识、技能、工具于技术应用于项目活动,以满足项目要求。通过合理运用于整合特定项目所需的项目管理过程得意实现。PM就是负责实现目标的这个人。
那么对PM的能力要求有哪些呢?
比较官方的是下图的一个人才三角:
其中专业技能就是硬技巧,是可以通过学习培训获取的项目管理工具和技术,比如数据分析技术、可行性分析、进度和成本制定技术等。领导力比较偏向工作中积累的经验和软实力,需要时间和实践的沉淀。战略和商业管理指的是PM的行业知识,特定业务的项目需要PM具备一定的额专业知识。除了这个基本的人才三角,PM终究是管理岗位,做的事情就是确保项目的达成,是以结果为导向的,要负责项目团队成员以及团队与外界的沟通与联系,落到实处概括为这几个关键因素,也可以称之为PM的核心竞争力。
其中,人际关系、沟通技能、积极的态度是一个优秀PM的必备技能,“顶尖的项目经理约有90%的时间花在沟通上”。当然,计划总比现实美好太多倍,实际工作中总会遇到各种临时问题和突发情况,无论是客观环境因素还是主观上人的因素,PM都要自始至终保持职业道德感,对项目有最终责任,促成项目成功的秘籍有三点行动:发挥作用(BYLian);坚持;坚持发挥作用(jian chi BYLian)。
2.2 项目管理有哪些知识
根据PMBOK,包括五大管理过程组10大知识领域以及49个子过程管理。
五大过程组的主要内容:
每个知识领域在五大过程中有相应的子过程步骤,每个子过程中有相应的输入文件、工具技术、输出文件。项目可能包含一个或多个多个阶段,多阶段的各过程组在每个阶段重复进行,各过程、过程组之间由相互依赖的输入、输出产生相互作用。项目管理需要利用各领域的工具技术,统筹十大知识领域的输入输出进行项目整合。
当然,实际的项目工作中,需要根据组织和项目的特点进行裁剪,实施最合适的管理方案。
2.3 项目管理的环境因素
PM要在组织结构中管理项目,每个项目所处的类型不尽相同,PM在其中的角色和职权也有很大差异,不同的环境会要求不同的管理技能。粗略的讲可以将组织结构划分为职能型和项目型,前者按只能部门划分,项目是跨部门的人员组合,职能经理有绝对权力。而后者是以项目为单位,PM有管理的绝对权力。目前很多IT类项目可能是更多的是混合型-矩阵型,特别是接近下图中的弱矩阵结构,没有专门的PM,大多由技术人员或者PM来担任,PM没有太多的管理权限,要靠沟通协调等能力来确保项目的推进,更多的是项目协调员的角色。没有权力的前提下协调项目,对PM能力有着更高的要求。
3. IT方向的项目管理相关知识
除了上面提到的,很多IT项目PM大都由技术人员担任,大多处在弱矩阵结构中,IT项目的常用管理知识可能集中在几大领域和相应过程的一些工具技术上。介绍几个用到比较多的。
3.1 项目生命周期
不同的项目根据自身特点属于不同的生命周期模型:
- 预测型生命周期:瀑布型生命周期。
- 迭代型生命周期:项目范围确定,成本和时间定期修改;重复循环-逐步改进
- 增量型:渐进增加功能;
- 混合型:预测型+适应型
- 适应型:属于敏捷型、迭代型或增量型,详细范围在迭代开始之前就得到了定义和批准;敏捷或变更驱动型;
正如我们对项目采用不同的技术架构和选型一样,不同的分类适用于不同的项目管理方式,每种方式对需求层面和团队建设也是有一定要求的。比如目前流行的敏捷开发适用于Scrum开发框架,它有一个3-3-5-5模型。
- 3个角色:Product Owner, Scrum Master, Scrum Team.
- 3个工件:产品Backlog(Product Backlog)、Sprint Backlog、燃尽图(Burn-down Chart)
- 5个会议:Sprint计划会议、每日站会,Sprint评审会议,Sprint回顾会议,产品Backlog梳理会议
- 5个价值:承诺、专注、开放、尊重、勇气
3.2 关注的领域及其工具
IT项目在具体的工作中,可能着重关注以下几大知识领域,每个领域都各自有很多工具技术,这里简要总结一些关键常用的,无论对项目管理还是日常生活都很有帮助。
3.2.1 项目整合管理
整合是对项目整个过程各个阶段的计划和把控,这里强调比较多的就是科学的指定计划,按照计划进行,不一致的属于变更控制,也要按照变更计划走变革流程,确保一切可控。
3.2.2 项目进度管理
这个是开发人员必经之难,体现为估时问题,这里有几个定律非常有用:
- 帕金森定律:只要还时间,工作就会不断扩展,直到用完所有时间。
- 小学生定律:即拖延症,人们只有在最后一刻即快到期限时才会全力以赴。
- 布鲁克斯定律:投入两倍的资源不一定能缩短一半的时间,布鲁克斯有本著名的《人月神话》,里面的思想和观念很有影响。
3.2.3 项目质量管理
- 质量免费:质量管理带来的效益完全能覆盖其成本。
- PDCA-戴明环:结果不达标是计划出了问题,不断执行、改进而不是一开始就非要制定一个完美的计划再一丝不苟按这个完美计划进行。
- 5Q法: 连续追问五个为什么,找到问题所在。
- 因果图:也就是石川图和鱼骨图,列举出所有的原因。
- 帕累托法则:二八法则。对问题找原因,对事情分优先级,分配自己的时间等都可以用。
- 消除非增值活动、提高效率、防止镀金、全员参与。
3.2.4 项目沟通管理
- 沟通渠道计算:N*(N-1)/2,增加一个新资源可能增加很大的沟通过成本。
- 沟通形式:面对面是最好的沟通方式。
- 有效沟通:确保信息送达;反馈是有效的保证。
- 会议管理:进行必要的会议,启动/开工/审查/收尾 、站会/复盘,主持人控制好会议节奏。
- 非正式沟通:拉近团队成员之间的距离。
3.2.5 项目风险管理
- 风险识别和分析:SWOT/TOWS分析,
- 应对规划:针对分析的风险做好应对计划,并且明白可能突发未知风险。
- 应对实施:实施应对计划管理已发生风险;利用经验形成专家判断。
- 风险与机遇并存,有的风险可能会转化为机遇,比如攻克了技术难题可能就形成了技术壁垒。
3.2.6 技术人员做PM的问题
- 喜欢做事害怕见人
- 主动培养,后天能力,不要逃避
- 关注局部而非整体
- 只考虑结果,只关注自己擅长的区域,手里有锤子看哪里都是钉子。
- 静态看待技术之外的事情
- 缺乏政治敏感性
- 考虑别人的感受,制度和政治。发挥主观能动性。
- 排斥非正式沟通
- 理想主义/完美主义
- 事在人为,积极面对。对自身以外的要求过高导致苦恼。
- 缺乏领导艺术
- 人民内部矛盾,不问责,不去纠结谁错了,是要让未来更好
- 藐视人情世故
4. 在实践中的问题
虚拟团队章程:在具体项目过程中,经常遇到大家对整个安排、项目节奏有困惑以及问题沟通不主动的问题,在多次项目迭代中固化发版流程和形式,形成一种虚拟章程或者习惯:四个会议+站会+复盘会。风险是呈现S型曲线,越到后面风险越大,通过阶段关口的有效会议,把整体问题集中提前暴露,阶段问题尽早暴露。
沟通:勤走动,多面对面沟通;确保有效沟通,问题一定要求得/给予反馈;向上沟通,遇到解决不了风险及时上报。
组织过程资产沉淀:各种需求文档、技术接口文档、经验教训、bug分类标签等按版本沉淀。
-
管理三角关系:进度、成本、范围有个稳定三角关系,需要各个具体解读平衡需求、人员投入、进度计划的三角关系。实际我们总是时间和人力有短板,最常用的比如利用并行开发、阶段提测等平衡各方关系。
技术兼任PM要平衡好自己的角色和时间分布。
-
PMI主义:最后想把PMI主义附上,它既是PM的行为准则,也是PM担当过程中遇到困难时的灵丹妙药。
- 你是专业的项目经理,管理是你的核心职能。
- 必须以专业的方法做项目,即遵循PMBOK的要求。
- 强调事业环境因素和组织过程资产。
- 强调历史信息,强调经验教训总结,强调记录。
- 问题重在预防,而非解决。
- 必须有明确的目标,必须有正式的计划,才可行动。
- 利害关系者很重要,尽早识别全部利害关系者并让其参与。
- 项目经理必须被任命,PM是管理工作的核心责任点。
- 项目是系统工程,项目经理是整合者,多重约束牢记在心。
- 项目管理以结果为导向,项目成功是项目经理的最终责任。
- 变更影响项目成功,项目经理应影响变更发生,管理变更。
- 项目经理的主要责任是整合项目,整合通过沟通实现,项目经理要花75%-90%时间用于沟通。
- 项目经理必须拒绝提供不重要的信息要求。
- 必须详细描述工作,责任必须明确。
- 任何情况下,质量都要达到客户满意度。
- 削减费用的前提是削减项目范围,而不是牺牲质量。
- 项目经理必须遵守公司规定、职业道德、法律。
- 项目经理必须主动、不等不靠;无论环境如何,先尽自己的最大努力。项目经理是神奇、伟大的,可以拯救世界。
- 一切决策必须是事实为依据,以程序为准绳,正确的程序优先于正确的结果。
- 防止范围潜变,杜绝质量镀金。
- 项目必须进行合同和行政收尾。
- 公正、公平、公开、勇敢、诚实地面对现实。
- 处理各方关系时,都要本着双赢的理念。
- 决策要遵守四大价值观:责任、尊重、公平、诚信。
项目管理的知识,如同项目管理的领域语言,掌握和认同的人越多,团队的协作成本越低效率也会越高。
5. 后记
项目管理毕竟属于管理范围,知识体系繁杂庞大,以前也会觉得平日里很多项目自己运行的挺好的不也没有怎么系统管理啊,如果说,向红利要效益、向战略要效益、向管理要效益,对应着发展的不同阶段,那么对于我们一线开发人员来说,高质高效的项目目标达成是对战略的最大保障。
6. 感想
最近在看《人月神话》,里面有个软件开发各阶段的任务安排的经验时间分布:
- 1/3 计划
- 1/6 编码
- 1/4 构件测试和早期系统测试
- 1/4 系统测试,所有构建已完成
惊讶于编码只需要这么少的时间分布,但跳出开发人员的角色从自己经历多的开发项目看,确实编码占用差不多就这个时间,一个月的项目,真正的时间也就1/4不到,其他用在计划、方案确定上更合理一些,凡是到手就开始coding的基本后期花很大精力去测试、改bug,做变更等等,相反,在需求-设计阶段就充分讨论和计划的,编码阶段会更顺利,质量更高,而有的开发者确体会不到这点,以为动手写代码之前的行为都属于浪费时间,后期花
时间走变更改bug时会哀怨需求变数多、得意于自己的开发投入,而这些完全可以以更高效的方式解决,管理的魅力也许就在于此吧。
于自己的生活也是如此,PDCA和28法则用的好的话,生活里的项目绝大多数应该是成功的而不是烂尾的,大到人生多规划,小到生活小目标,是时候当做项目来管理了。
References
- PMP项目管理五大管理过程组 10大知识领域 49个子过程管理
- 小白必备的PMP项目管理入门知识
- 现代卓越石泉老师的《从技术骨干走向项目经理》