话说3级的PM已经非常厉害了,但仍然处于定性阶段。如何才能不动声色的跟BOSS过招?PM 4级就是让数字变成你的嘴巴,开启项目管理的量化大门。因此,4级PM的工作重心(详见上一篇文章中的表格),也会逐渐转变。对应的四类工作,总结起来变化如下:

开发类:

保持3级,适当深化

项目管理类:

在量化的项目质量与绩效目标的要求下,识别关键过程,借助统计学的基线与模型,策划与监控关键项目过程

支撑与协作类:

  • 基于企业的目标体系,制定支撑业务目标实现的项目质量与绩效目标

  • 掌握统计学技术,对项目进行量化管理:

-  使用基线对项目进行监控,及时发现异常并分析解决

-  使用模型,预测项目的质量与绩效目标的达成情况,在项目早期就可以识别风险并加以管控

-  当发现有影响目标实现的问题存在时,进行根源分析,策划解决方案,并使用统计学技术,进行预测与差异性分析,以评估新的解决方案的可实施性

  • 数据驱动的向上管理:

-  就项目的质量、绩效目标,对业务目标的支撑性作用,与管理层达成一致

-  定期与管理层沟通项目的量化管理状态,并就下一步工作的开展达成一致

改进类:

当改进计划被评估分析并批准后,认真落实,并对改进结果进行评审验证

接下来,我们展开来说说软件项目的量化管理。在详细展开软件量化管理的实践之前,有必要先澄清三个问题

一、没有准确的度量定义,收集的数据跟垃圾没有两样。

在软件开发过程中,具有潜在价值的度量指标繁多。怎么办?

很多PM问过我,“要想提高开发的效率,应该度量那些数据”?这问题不难啊,比如用代码行和工作量一除就有了。

可很多PM这么做了,却得不到想要的结果。为什么?

因为缺乏度量标准

就拿代码行来说,有人度量新增的,有人度量更改的,有人包含提示行,有人不包含……工作量的度量呢,也是面临同样的问题,算不算测试啊,算不算写文档啊……结果N种代码行的度量,结合了N种工作量的度量。这样的量化结果,你说怎么拿来用?

所以,当PM要“用数据说话”的时候,最先要做的是定义。前面的基础打好了,后面的应用才不会浪费。

图片来自网络,版权归作者所有

二、数据确实可以一定程度上反应团队的绩效,但这是个雷区,非高手不要碰。

很多公司都有KPI考核,尤其那些文化中比较强调竞争性的公司,喜欢横向比较,甚至搞末位淘汰。我只能说,作为咨询师我愿意尊重公司的不同文化,但用量化的项目数据做个人绩效的评定,我并不赞同。IBM的研究,也证明了在两个不同的软件项目之间,很难找到可比的度量:

  • 不同类型的产品导致的任务复杂程度差别可能达到五倍

  • 小修改中每行代码的成本,常常高出新编程序的2-3倍

  • 需求更改的程度可以说千变万化

  • 相应项目设计变更的程度有过之而无不及

Flaherty,M.J. “Programming process measurement system for System/370,” IBM System Journal

图片来自网络,版权归作者所有

比绩效考核更为重要的是,使用项目数据真正的目的,是帮助企业看清项目的进展情况,为过程改进提供有价值的依据

首先,数据采集的过程,无论是否使用自动化工具,都不可避免要人为参与。其次,产生不良数据的原因很多,直接使用往往会产生错误的评价。例如一个平均工龄大于5年的项目组,和一个平均工龄不到1年项目组,比较效率就没有意义。如果非得进行绩效评价,我们需要更多的维度和更多的数据。

三、量化管理 ≠ 数据管理

量化管理是建立在大量数据的基础之上,使用统计学技术,进行预测与监控,以数据驱动决策

某公司开发阶段的人员成本偏高,主要原因在于人员的工作效率低下,因此希望通过控制开发阶段编码效率来减低人员成本。经过与项目团队的深入沟通,我们锁定了团队规模、开发语言难度和团队人员的能力三个可能的影响因素,并进行定义与赋值:

然后将以上三个可能的影响因素,统一为一个影响因素“团队能力权值”。

团队能力权值=团队成员能力*团队规模*开发语言难度

接下来,我们收集了50个产品类项目的代码行、工作量等信息。考虑到数据完整性等因素,最后选定30个有效产品类项目。使用统计学工具Minitab进行回归,建立了效率模型:

【编码效率模型】:Y=aX^b

Y - 编码效率,单位“KLOC/人月”

X - 团队能力权值,单位“个”

a、b - 系数(考虑数据保密性,以字母代替)

有了上述模型,PM可以在项目建立的初期,进行效率的预测估算,例如:

【场景】某个软件开发产品中,团队规模为小规模团队,采用C#作为开发语言,平均人员能力是三年以下工作经验,熟练掌握一种或两种开发语言,没有管理经验;

【分析】按照“团队能力权值的计算公式得出:X=0.32

【结果】Y=a0.32^b (KLOC/人月)

在项目开展的过程中,PM还可以根据基线(下图),对项目的进展状态进行监控,效率控制在3.12304~4.422919内,出现异常点时及时分析和处理:

下周我们会分享5级PM的过程管理能力。然后,详细阐述胜任四大类工作的具体做法。更多实践、更多干货分享,持续关注我们哦~

PM过程能力成熟度4级的更多相关文章

  1. PM过程能力成熟度2级

    当PM意识到自己不再是程序员后,就会在项目管理方面,逐渐达到过程能力成熟度1级.尽管这种亲身经历会带给PM管理的信心,但从项目的层面来说,整体还是混沌的,PM在经历过1级的阶段性胜利后,将面临更多的问 ...

  2. PM过程能力成熟度3级

    2级PM已经可以把项目管理起来了.如果这时候,企业只有一个PM,那这种程度的管理,只要逐渐深化,就可以一直维持下去. 然鹅,现实总是复杂很多... 公司会在PM建立2级的过程管理后,提高所有项目的可视 ...

  3. 突破瓶颈,再出发 - PM过程能力成熟度5级

    尽管程度不同,但PM的每个级别都在践行过程改进,并在4级借助数据,达到了“登峰造极”的程度.随着量化与统计分析的深入,项目会被优化到极其稳定的状态,组织的过程改进也就此进入了平台期. 平台期可以被视为 ...

  4. PM领导能力成熟度2级

    人生如戏,大幕拉开,他走上舞台,饰演PM一角. 从技术岗位迈向管理岗位的第一步,对大多数像他一样的新晋PM来说,并不轻松.技术知识与经验是他曾经的主要才能与成功基础,而从成熟度一级开始,身为管理者的他 ...

  5. PM过程管理成熟度1级

    之前,我已经从项目实现的角度.企业管理诉求两方面,分析了PM的核心能力架构,以及其在过程管理方面的能力等级.接下来,Fancier凡奉信息会站在PM能力成长的角度,横向与纵向阐述每一成熟度等级PM的过 ...

  6. CMMI能力成熟度模型集成的过程域

    什么是CMMI CMMI全称是Capability Maturity Model Integration, 即能力成熟度模型集成,是由美国国防部(Office of the Secretary of ...

  7. 能力成熟度模型CMM

    能力成熟度模型(Capability Maturity Model,英文缩写为CMM)[1]是 一种开发模型.Carnegie Mellon大学的研究人员从美国国防部合同承包方那里收集数据并加以研究, ...

  8. CMMI将能力成熟度分为5个级别

    CMMI将能力成熟度分为5个级别(初始级,已管理级,已定义级,量化管理级,优化级) . 初始级 此时软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力.管理是反应式的. .可管 ...

  9. CMMI 能力成熟度模型集成

    关于CMMI的过程域,请参考 CMMI能力成熟度模型集成的过程区域 1.CMMI/SPCA概述 CMM是“能力成熟度模型(Capability Maturity Model)”的英文简写,该模型由美国 ...

随机推荐

  1. Python函数的定义、参数传入与函数的调用

    作为计算机代码的一种抽象方式,函数在Python中扮演了极为重要的角色.今天给大家介绍Python函数的定义.参数的传入以及调用方式.其中函数参数的传入方式为本节重点内容.Python函数的参数形式包 ...

  2. 【swoole】如果使用好定时器功能

    swoole中提供了一个定期器的用法 $server->tick(1000, function() use ($server, $fd) { $server->send($fd, &quo ...

  3. 去除inline-block元素间的间距

    一.现象描述 真正意义上的inline-block水平呈现的元素间,换行显示或者空格隔开的情况下会有间距,这是因为浏览器在解析时,会将换行等读取成一个空格导致. 二.移出空格的方法 ① 我们可以去掉元 ...

  4. Android app去掉https签名校验

    本文同步至http://javaexception.com/archives/30 问题: 之前的一个开源项目碰到了一个问题,Fix CertPathValidatorException: Trust ...

  5. mssql sqlserver 给已存在表添加新的字段及字段备注的方法

    转自:http://www.maomao365.com/?p=8102 摘要: 下文讲述向已存在表上添加新字段及字段备注的方法,如下所示: 实验环境:sql server 2008 R2 1. 添加新 ...

  6. redis数据操作

    数据结构 redis是key-value的数据结构,每条数据都是一条字符串.注意:键的类型是字符串,并且不能重复. 值的类型分5种: 字符串string 哈希hash 列表list 集合set 有序集 ...

  7. Powershell-查询当前文件目录层级结构

    日常工作中我们往往有需要导出当前共享环境或磁盘文件目录层级结构等的需求,最早在目录少的情况下我们使用CMD下tree 命令可以很清晰的看到目录.文件层级结构,那么我们又如何通过powershell直观 ...

  8. flink源码编译(windows环境)

    前言 最新开始捣鼓flink,fucking the code之前,编译是第一步. 编译环境 win7 java maven 编译步骤 https://ci.apache.org/projects/f ...

  9. libaio.so.1()(64bit) is needed by MySQL-server 问题解决办法

    [root@localhost upload]# rpm -ivh MySQL-server-5.5.25a-1.rhel5.x86_64.rpmerror: Failed dependencies: ...

  10. 以Windows服务方式运行.NET Core程序

    在之前一篇博客<以Windows服务方式运行ASP.NET Core程序>中我讲述了如何把ASP.NET Core程序作为Windows服务运行的方法,而今,我们又遇到了新的问题,那就是: ...