《程序员度量:改善软件团队的分析学》一好的度量像探照灯

好的度量像探照灯

虽然度量不能告诉你哪些技能是好的,哪些技能是坏的,但是具体的度量本身显然有好有坏。坏的度量通过没用的或者实际不相关的细节浪费你的时间,分散你的注意力,使你不能有更深刻的理解;好的度量拨开迷雾,将灯光照耀在真正紧要的事情上。特别是那些随着时间流逝,你或许已经错过、忘记或未能充分欣赏的事情。
问题是,如果你不使用它们的话,你无法区分哪些是坏的度量,哪些是好的度量。如果度量太难于收集,或者太抽象并且混乱,我们可以认为这些度量是坏的。你可以通过如下这些问题来评估一个度量本身的好坏:

  • 这个度量是否相对易于描述和理解?
  • 这个度量是否展示了我还不知道的一些事情?
  • 这个度量是否清楚地涉及了我关心的目标?

如果上面所有问题的答案很明确是NO的话,那么这个度量要么需要更多的工作去完善,要么它就应该废弃掉。
个人和团队很自然地去选择那些对他们来说很有意义的和提供最大价值的度量,随着时间的流逝,如果存在更好的度量,将不再需要那些缺乏意义或者更没用的度量。你想要描述性的度量,并且度量能够覆盖更多样的技能,遗憾的是,大多数度量都只不过是混乱的和不切实际的。
毫不夸张地说,已经有上百个统计旨在跟踪棒球运动员各种各样的细节,包括诸多富有创造性的命名,如:贪婪得分(Vultured Runs)、魔鬼得分(Ghost Runs)、 构成防御率(Component ERA,CERA)和纯粹防御率(Defense-Independent Component ERA,DICE)。没有人会定期地使用所有的这些度量,也没有人懂得它们所有的意思。或许在某个时候,会有人认为所有的这些度量都可能是好的,但是,随着时间的流逝,证据表明当中的某些度量是没有用的。每个分析师和每个团队通过反复试验来检验那些统计数据对特定球员位置和情形是很有意义的,并且将会沿用那些好的度量。
好的度量不仅仅只是跟踪活动。就像本章开篇引用的John Wooden的名言揭示的一样,活动并不等于成就。好的度量可以直接关联到或者产出成就。例如,跟踪某人工作了多久,对度量本身来说没有任何用处。在篮球比赛中,没有谁会统计某个球员运了多久的球,因为这样跟踪活动不能关联到比赛的结果。但是人们会跟踪某个球员丢掉控球(失误),因为球权的改变可以极大地影响比赛的胜负。
在棒球比赛中,救援和救援失败是两个好的统计例子。当一个替补投手加入一个比分接近的比赛中,如果当时他们队是保持领先的,而他们成功地保持了领先优势,那么承认他们充当了救援。如果他们失去了领先优势,那么认为他们救援失败。这些统计数据满足上面我们所说的好的度量的标准,也就是说,它们相对容易理解,这些统计数据给出我们在其他方面无法跟踪到的一些信息,并且这些度量直接关联球员和球队的关键目标(输赢)。
对于程序员,你可以想象一个类似于棒球的救援这样的度量。一个程序员可能在项目的后期或者软件发布之后,通过修改重要的问题而获得好评。拥有这样的度量将允许你跟踪这些特别的“救援”,这允许你依次跟每一位成员沟通此度量,讨论它的价值。并且可能确定团队何时失去了达成“救援”的机会,你可以确定那些拥有很多“救援”的程序员可以得到认可和欣赏。最终,就像你开始理解好团队里的度量一样,你或许开始识别出,如果你的软件团队缺少“救援”,则需要在这个领域提高关注或技能。

时间: 2024-10-24 23:39:40

《程序员度量:改善软件团队的分析学》一好的度量像探照灯的相关文章

《程序员度量:改善软件团队的分析学》一第1章

第1章概述让我们不要太确信,我们没有错过一些重要的东西.--比尔·詹姆斯(棒球统计学家和作者),摘自"Underestimating the Fog"这是一本关于程序员.软件开发团队的度量和模式的书.本书的一些想法源于我在多年前开始的对软件开发团队构成的思考:无论好坏,所有细微贡献以及无名英雄的辛勤汗水都是项目成功的关键组成部分.近二十年里,我一直在负责设计师.程序员和测试团队的组建与管理工作.这些年,我意识到一个软件开发团队就像一支球队一样,需要有各种角色的球员和不同的技能的专业人员

《程序员度量:改善软件团队的分析学》一连接活动与目标

连接活动与目标 程序员是软件开发团队中的球员,这个软件开发团队是某个商业活动或者组织的一部分.至少这个组织的一些目标同样也是这个软件开发团队的目标(因此,那些目标也同样是程序员的目标).最有意义和有用的度量允许将程序员和团队关联到组织目标上. 为了做到这一点,需要定义那些软件团队所共享的组织目标,并且这些目标可以精确地或近似地测量出.然后,需要确定程序员和团队的哪些技能是可以测量的,最终,必须建立一个模型或者度量将技能与目标关联在一起. 你可能说,运动团队有一个清晰的目标,那就是赢得比赛(并且最

《程序员度量:改善软件团队的分析学》一数据获取

数据获取 很多系统都能帮助收集数据元素.有些可以提供易于访问的有用数据,特别是那些直接打交道的或控制的并且与开发相关的系统.对度量而言最有用的系统之一可能就是实际产品本身,一些适当的手段和监控可以提供关于客户采用.使用或特定特性和产品改变的成功的大量数据.有些系统可能不容易访问,通常是你无法授权使用其他业务部门的数据.我的经验是,如果你向系统所有者或管理员解释数据的有用性和使用目的,而且说明你并不需要保密和敏感的数据,你应该能得到授权.有时我们可以直接从系统中得到数据,而有时数据是从常规报告或者

《程序员度量:改善软件团队的分析学》一关于软件采用、问题以及竞争的数据

关于软件采用.问题以及竞争的数据 除了测量程序员技能,目标受众以及那些通过不同方式和软件打交道的人员(外部用户.内部用户.销售和支持人员或者上述所有人员)对软件的接受情况也是关键的测度.收集那些可以指示软件的成功以及人们对工作的响应的质量数据,包括收集关于采用.效益和问题的数据,还可以相对于已知的竞争对手来评估成功. 关注与采用 作为度量系统的基础,确定一个软件产品.项目或者特性是否可以积极或者消极地接受,以及尝试度量这种响应的程度,非常关键.可用来对响应进行跟踪的最基础的指标是使用情况.但是使

《程序员度量:改善软件团队的分析学》一模式、异常点和离群点

模式.异常点和离群点 一般来说,我们收集和保持度量数据持续的时间越久,它们就会变得越有用.度量分析是一个模式识别的过程,意味着寻找一个重复的.可提供洞察力的模式.从单个时间段里收集到的一组度量或许会揭示出一些有趣的信息,并且我们可能会因此而得出一些有趣的假设,然而,从多个时间段里收集多个度量将可以改进我们的推测,或者把推测转化为知识. 我们在寻找模式的时候,很重要的一点是,必须认识到并不是所有的模式都是简单化的.我们必须仔细地寻找,而不仅仅只是关注于表面,因为从一些度量的组合中发现一些模式和解释

《程序员度量:改善软件团队的分析学》一软件团队是成功还是失败

软件团队是成功还是失败 在体育运动中,每个团队都为胜利而战,而成功的定义也很清晰.精确.软件开发与此不同,我们缺乏对成功的恰当测度.我所发现的最佳策略是软件开发团队的成功三角形,它基于三方面的因素:客户响应.质量指标和效率.这些都能按发布版.特性来测量,并且可以相对于先前的水平.团队目标和组织目标加以评估. 用户对每个软件发布版的响应是什么 开始时,你可以考虑以三个月为周期测量用户对新发布版的采用率是否达到了20%.你能够同设定的目标相比较.为客户响应.质量指标和效率进行这种检测,为团队提供了一

《程序员度量:改善软件团队的分析学》一假设检验

假设检验 真理并不总是赤裸裸的.基于这个原因,当自己的某些假设成为成功的关键因素时,常常询问一下自己,在这些假设中真正重要的是什么,不重要的又是什么,这样做很有裨益.在寻找有用度量的过程中,你应该目光长远一点,不只是蜻蜓点水,并且考虑所有的可能性.有时,某个地方不能看得很清楚,新的数据可能会帮助你找到隐藏在后面的真相.你可以收集并使用度量来挑战你的假设,并且即使推翻了你的假设,也同样有帮助,因为你真正掌握了知识.美式橄榄球有将近100年的历史,公认的一个教练理念是如果你的团队在3次进攻之后未能达

《程序员度量:改善软件团队的分析学》一数据选择

数据选择 为度量寻找合适的数据,有点像科学,有点像艺术,但更多的是试错.当决定使用哪些数据时,我们会面对很多选择.显然,你可以提出多种多样的测度,能获得相同的结果,或者发生几乎等同的一件事.例如,要决定一个程序员的质量测试有多好,我们可以选择去测量编写的测试用例数.代码的测试覆盖率,或者发现的bug数量和严重性.我们也可以测量所有这些.一般来说,当我不得不在多个可能使用的测度中去选择时,我基于以下经验法则来决定最优方案:选择最容易获得的数据.选择最容易让非程序员解释和理解的数据.第一条经验法则或

《程序员度量:改善软件团队的分析学》一可重复的成功

可重复的成功 虽然度量可以提升我们的理解力,并且我们可以在许多方面因此而受益.但我们追寻的第一要务是可重复的成功模式.如果找到,这些模式可以指出哪些是我们团队所需要的,以帮助我们最大化成功的概率和最小化失败的概率.常言说"人算不如天算",就眼前来说,这或许是对的.但是,幸运并不是保持稳定绩效的内因(虽然很多赌徒渴望它是).高度熟练的个体或团队看起来是幸运的,但是他们始终如一的成功缘于他们的努力工作和计划.某些人或许得到了"机遇"或有个"好运气".

《程序员度量:改善软件团队的分析学》一涟漪效应

涟漪效应 另一个重要的模式是,度量可以帮助我们确认一个人对团队中其他成员的影响.例如,优秀的程序员,可能使其他程序员黯然失色,也可能帮助其他程序员更迅速地提高他们的技能.最难识别和确定的是那些涟漪效应的模式,但是一旦发现这种模式,这可能带来最大的价值.个体对团队的正面影响或负面影响是决定团队是否大于或小于个体之和的重要因素.我们可以检验的并且同等重要的另一个相关模式是,特定的人在一起工作所产生的结果.在这种情况下,你不会看到太多个体对其他人的影响,但是会看到某些特定的人员组合是否会更有效.这种模