敏捷开发绩效管理之四:为团队设立外部绩效目标(目标管理,外向型绩效)...

这是敏捷开发绩效管理的第四篇。(之一,之二,之三,之四,之五,之六,之七)

 

最近在看德鲁克的书,发现其中很明确地写着“企业的绩效只存在于外部,而企业内部只有成本”的概念和说法,下面结合敏捷开发团队的绩效考核展开谈谈。

敏捷开发有很多“外向型”思维,比如:关注客户价值,认为可交付的产品才是真正能表征工作进展的因素等等,但尚未直接与目标管理接轨。外向性思维可以防止部门间壁垒或踢皮球,而转而共同讨论对外交付价值,从下面的对比可以看出这点。


“内向型”绩效及其导向

进度:“各阶段按时完成率”会导致分析和设计人员草草结束工作,而将大量不确定工作推给开发人员;开发人员则如法炮制,把延期踢给测试人员。

质量:“千行代码缺陷率”会导致开发人员在很多“是否是缺陷”问题上与测试人员争执不下,另外一些次要的如使用不便、不直观等问题则被长期搁置。

成本:“与计划相比的人员超支率”会导致项目经理很不愿意接受变更,即使是那些显然能给客户带来巨大价值的。

功能:“需求规格中需求的完成比例”会导致开发组思维局限于当年编写需求规格时期的认识,而不能在整个漫长的开发过程中不断精化需求。

此外还有一些更可怕的数据,比如“每月生产的代码行数”“每月生产的功能点或故事点数”(这个很有迷惑性)“每月修改的缺陷数”等,都是不恰当的绩效。德鲁克“企业内部只有成本”的理念指出,无论是文档,代码,可运行软件乃至最终产品,若尚未被销售,都只是成本的一部分。

多数采用内向型绩效的公司和团队,其绩效结果都不好。究其原因,单个部门/工种/个人各自追求自己的绩效,并不会导致整个项目外部绩效的提升(这称为“合成谬误”)。

某些内向型绩效甚至是互斥的,处于零和状态。比如测试团队人均发现的缺陷数(测试团队的绩效)与开发人员人均缺陷数(是开发团队的绩效)并存,则两个团队无论如何都无法同时提升绩效,导致他们永远无法像一个团队一样互相帮助。若你的公司有这样的绩效,则研发人员与测试人员打架就不用奇怪了。

其他多数内向性绩效,都存在潜在的互斥关系。比如前面提到的个阶段按时完成率即内部存在互斥,而“需求规格中需求的完成比例”必与“客户需求响应率”互斥。

外向型绩效

下面是一些潜在的“外向型”绩效,由于之前提过不同企业乃至产品的外向型绩效差别很大,请灵活运用。

产品研发型

进度:

“与竞争对手相比同档产品的上市日期比较”适合消费电子类产品。

“响应分销商需求的时间”适合渠道比较强势的情况。

这些外向型绩效应该作用在整个团队上,换言之不管哪个环节导致了进度差,都一起得到底的绩效。从而促使整个团队一起思考如何提升绩效。

需求和设计人员为了能让开发人员提前开工,可以采取分段写需求和设计的方法,把最影响架构又最不会发生变化的部分先写出来,让开发人员提前开工干活;而开发人员也可能会采取同样的策略,阶段式地发布产品,让测试人员可以提前测试,防止最后缺陷太多导致产品延期;而需求和设计人员又回过头来用开发的进度和测试的缺陷率,来判断产品应该消减功能换取上市时间,还是增加更多功能以换取竞争力。

可见一个为外部目标奋斗的团队,会很容易地团结起来,共同思考提升绩效的最佳策略。

 

质量:

“每月待处理质量问题数”咨询过的一家ERP公司的实际数据(但他们尚未用这个数据考核),此数据一般符合瑞利分布,因此可预测未来的质量问题数量。

“每月终端用户投诉数”适合消费电子、网络游戏等与客户比较紧密的行业。

“每月分销商投诉数”适合渠道比较强势的情况。

“每月论坛缺陷提出数”适合……我在的一家企业使用BBS免费处理缺陷。

用最终用户提出的抱怨作为外部质量目标的策略,不是说大家不用测试了,把缺陷留给用户。而是:用我们测试了但仍漏给客户让其发现的缺陷,来修订我们对缺陷的认识,修订发现缺陷的方法。

有很多产品,收到的客户关于易用性的抱怨,远远多于对功能和常规缺陷的抱怨,就应该将“易用性差”作为核心的质量问题,进而作为质量重点。我在下载一款总体评价4星半的Android短信软件时,发现近期的评价很多都是“越来越难用了”“没用的功能越来越多”甚至“更新太频繁了(给了1星)”等等,最近的一些评分平均估计会下降到4星以下。这些抱怨应该当作质量管理的最终考核标准,因为下载者无疑会根据这些评价来决定是否安装软件,而不是看那些“千行缺陷率”“测试人员发现缺陷数”。

成本:

“产品实际投入产出”适合很长的战线。

试想如果是手机研发,应该在开发阶段就做好测试、维护、重刷系统等接口,另外应该优化性能以选择低端硬件,否则整个产品极难保障盈利。

而且还会发生若软件做得好(但软件的研发成本要上升),则可以节省一些硬件资源或减免某些专用硬件的情况。这时候若要分别考核软件部门和硬件部门,就很难实现了。

需求:

“每月待处理需求数”咨询过的一家ERP公司的实际数据,如果产品试销售过程中此数据很大而且消退很慢(符合瑞利分布),则表明产品与客户的需求不符。估计也能呈现一些易用性方面的因素。

“客户尖叫度(Customer Screaming Rate)”苹果成功的标志性绩效指标,不谈需求,因为他要超越需求。要学习这个很难,但要理解并体现其精神。

“软件与硬件需求匹配度”适合消费电子,比如若硬件与软件研发平行,则最终交付产品中交付的软件和硬件应该匹配,而不能“18个功能中,硬件完成了12个,软件完成了13个,但其中6个不重合(就是说这些功能交付不了)”,这样软硬件部门才会共同配合。

某手机厂商很擅长上一条,他们一年的200个项目中,只有3个延期,就是很好地利用了功能排序-软硬件对齐的方法,牺牲次要功能保证上市时间。

项目开发型

产品做的多,项目做的少,不敢多说,请各位补充吧!


为团队设立外部绩效目标的目的,是对齐团队的不同角色、工序、人员的目标,从而互相帮助提升共同的绩效。

外部目标多数可以被客户、用户或市场明确感知,其提升几乎意味着带来收入的增加。如果想在测试人员发现Bug的时候发奖金但却发现账上没有钱,那就改到客户很少抱怨的时候发吧,那时候账上肯定有钱。 

 

注:这是一篇旧文,因符合本系列的内容,在进行了很大改动后重新编辑发布在这里。

 

 

 

点击下载免费的敏捷开发教材:《火星人敏捷开发手册》

转载于:https://www.cnblogs.com/wodeyitian/archive/2011/08/23/2459987.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362015.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面向对象程序设计-C++ Default constructor Copy constructor Destructor Operator Overloading【第九次上课笔记】...

先上笔记内容吧&#xff1a; 这次上课的内容有关 构造函数析构函数运算符重载return * this内容很细&#xff0c;大家好好回顾笔记再照应程序复习吧 :) #include <iostream>using namespace std;class Integer { public:int i;int geti () const {return this->i;}vo…

阅读react-redux源码 - 一

阅读react-redux源码 - 零阅读react-redux源码 - 一阅读react-redux源码(二) - createConnect、match函数的实现 阅读react-redux源码零中准备了一些react、redux和react-redux的基础知识。从使用的例子中可以看出来顶层的代码中需要用一个来自react-redux的Provider组件提供r…

【K8S in Action】服务:让客户端发现pod 并与之通信(2)

一 通过Ingress暴露服务 Ingress (名词&#xff09; 一一进入或进入的行为&#xff1b;进入的权利&#xff1b;进入的手段或地点&#xff1b;入口。一个重要的原因是每个 LoadBalancer 服务都需要自己的负载均衡器&#xff0c; 以及 独有的公有 IP 地址&#xff0c; 而 Ingres…

事件绑定on与hover事件

今天项目中UI设计了一个鼠标划入和划出的效果&#xff0c;本来这个小效果是非常简单的&#xff01;可是在实际的生产环境中就出现了一点点问题&#xff01;因为在实际的环境中&#xff0c;数据全部是用ajax异步加载进去的&#xff0c;这样就造成了hover方法不能用了。先看一下原…

Java EE + MongoDb与Apache TomEE和Jongo Starter项目

知道MongoDB和Java EE &#xff0c;但是您不知道如何将两者集成在一起&#xff1f; 您是否阅读了很多有关该主题的内容&#xff0c;但没有找到适合该目的的解决方案&#xff1f; 这个入门项目适合您&#xff1a; 您将学习如何以一种时尚的方式使用MongoDB和Java EE &#xff0…

hdu 3831

神题&#xff0c;经典dp 关键是状态的表示。 f[i][j][k] 原串后i个字符&#xff0c;与目标后j个字符做匹配&#xff0c;在这之前最近一次发生的后缀操作为“置k”&#xff0c;k52时表示不置后缀 转载于:https://www.cnblogs.com/zhaozhe/archive/2011/08/26/2154684.html

1017 A除以B (20 分)

本题要求计算 /&#xff0c;其中 A 是不超过 1000 位的正整数&#xff0c;B 是 1 位正整数。你需要输出商数 Q 和余数 R&#xff0c;使得 ABQR 成立。 输入格式&#xff1a; 输入在一行中依次给出 A 和 B&#xff0c;中间以 1 空格分隔。 输出格式&#xff1a; 在一行中依次输出…

阅读react-redux源码(二) - createConnect、match函数的实现

阅读react-redux源码 - 零阅读react-redux源码 - 一阅读react-redux源码(二) - createConnect、match函数的实现 上一节看了Provider组件的实现&#xff0c;主要做的事情就是通过Context透传了来自redux的store和监听store变化的事件对象Subscription的实例。 本节会深入到co…

一个罐子统治一切:Apache TomEE + Shrinkwrap == JavaEE引导

警告&#xff1a;我不是Spring Boot的专家。 我发现很多事情对此非常有趣&#xff0c;并且当然可以真正改善您的日常工作。 而且&#xff0c;我对Spring Boot没有任何反对&#xff0c;也没有开发或使用它的人。 但是我认为社区高估了该产品。 一年前&#xff0c;我开始收到很多…

iview-admin框架运行步骤

第一步&#xff1a; 前往github下载整个iview-admin框架的全部源码 github地址&#xff1a; https://github.com/iview/iview-admin 第二步&#xff1a; 点击Clone or download绿色按钮。下载整个压缩包 第三步&#xff1a; 解压至D盘&#xff0c;在根目录中按 1、前往github下…

阅读react-redux源码(三) - mapStateToPropsFactories、mapDispatchToPropsFactories和mergePropsFactories

阅读react-redux源码 - 零阅读react-redux源码 - 一阅读react-redux源码(二) - createConnect、match函数的实现阅读react-redux源码(三) - mapStateToPropsFactories、mapDispatchToPropsFactories和mergePropsFactories mapStateToPropsFactories import { wrapMapToPropsC…

Xcode 升级后,常常遇到的遇到的警告、错误,解决方法(转)

从sdk3.2.5升级到sdk 7.1中间废弃了很多的方法&#xff0c;还有一些逻辑关系更加严谨了。1&#xff0c;警告&#xff1a;“xoxoxoxo” is deprecated解决办法&#xff1a;查看xoxoxoxo的这个方法的文档&#xff0c;替换掉这个方法即可。2&#xff0c;警告&#xff1a;Declarat…

.net 垃圾回收学习[How To: Use CLR Profiler][翻译学习]【2】

http://msdn.microsoft.com/zh-cn/library/ms979205 注意&#xff1a;内容可能已经过期了。 注意&#xff1a;CLR Profiler最新版本&#xff1a;http://www.microsoft.com/download/en/details.aspx?id16273 Identifying Common Garbage Collection Issues 可以使用CLR Profil…

JavaOne 2014:会议与合同利益冲突

杜克街咖啡馆&#xff0c;工程师可以在街上进行走廊交谈 。 与签约不兼容 我的第11届JavaOne会议&#xff08;2004年至2014年为11 10 1&#xff09;非常出色。 值得参加此活动并结识社区中所有参与的人。 现在&#xff0c;这里是绅士的&#xff0c;但 。 除了经济上的明显优…

JQuery(三)-- AJAX的深入理解以及JQuery的使用

HTTP HTTP http: 超文本传输协议。特点&#xff1a; 简单、快速、灵活、无状态、无连接 URL&#xff1a; 统一资源定位符。 组成&#xff1a;协议名://主机IP&#xff1a;端口号/项目资源地址&#xff1f;传递参数的键值对#锚点 ①ip地址在同一个网段是唯一的。如果是在公…

阅读react-redux源码(四) - connectAdvanced、wrapWithConnect、ConnectFunction和checkForUpdates

阅读react-redux源码 - 零阅读react-redux源码 - 一阅读react-redux源码(二) - createConnect、match函数的实现阅读react-redux源码(三) - mapStateToPropsFactories、mapDispatchToPropsFactories和mergePropsFactories阅读react-redux源码(四) - connectAdvanced、wrapWithC…

(转)模拟鼠标/键盘

鼠标操作类 using System;namespace Edobnet.Net.Lib{/// <summary>/// Mouse 的摘要说明。/// </summary>public class Mouse{public Mouse(){//// TODO: 在此处添加构造函数逻辑//}internal const byte SM_MOUSEPRESENT 19;internal const byte SM_CMOUSEBUTTON…

c++ 返回 char*

一段在C里经常犯错误的代码 一个类&#xff1a; class C{public:C(){}~C(){}public:string a;string funa(){string tmp "1234";return tmp;}};外部调用类C并使用其成员&#xff1a; C classc;char *test1 classc.a.c_str();printf("%s\n", test1);上述正…

JSF的工作方式和调试方式–可以使用polyglot吗?

JSF不是我们通常认为的那样。 这也是一个调试起来可能有些棘手的框架&#xff0c;尤其是在初次遇到时。 在这篇文章中&#xff0c;让我们继续探讨为什么会出现这种情况&#xff0c;并提供一些JSF调试技术。 我们将讨论以下主题&#xff1a; JSF不是我们经常想到的 JSF调试的难…

React组件实现越级传递属性

如果有这样一个结构&#xff1a;三级嵌套&#xff0c;分别是&#xff1a;一级父组件、二级子组件、三级孙子组件&#xff0c;且前者包含后者&#xff0c;结构如图&#xff1a; 如果把一个属性&#xff0c;比如color&#xff0c;从一级传递给三级&#xff0c;一般做法是使用prop…