思码逸关钦杰:聊聊研效管理中的数据操纵

3月25日,思码逸咨询总监、研发过程提效专家关钦杰在 QECon 质效城市论坛【深圳站】分享了主题为《聊聊研效管理中的数据操纵》的演讲。

以下内容根据关钦杰老师分享内容整理:

在生活中,当我们去描述客观事实的时候,我们经常要用数据说话,比如,盐少许,就不如说盐 2 克更加科学精准。但是反过来我们也会发现,有时候数据不变,但说法不一样,结果和信息也会发生偏差。

我们今天也来聊一个相对轻松有趣的话题:研效管理过程当中数据操纵有哪些?我们有哪些反操纵的方法?数据本身不会说谎,但如何去呈现,传递的信息和结果可能会发生很大的一个反差

相关性不等于因果关系

首先是一个有意思的例子,现实生活当中我们经常说“鱼和熊掌不可兼得”,那我们来看这幅图,横轴代表品质,纵轴代表颜值,大家觉得这两组数据放在一起,它有相关性吗?显然是没有相关性的。

既然长得帅和品质好,没有相关性,那在单身的男女去找伴侣的时候,肯定要找一个又帅品格又好的。但扎心的现实是什么呢?我们去看这组数据。

在现实当中,我们不愿意和又丑又渣的人约会,就会剔除一部分样本。同时双方都有选择的权利,也有人可能会不愿意和你约会,又剔除了一部分数据之后,数据发生了变化——颜值和品质之间出现了负相关,也就是说越帅的人,具有“海王”体质的可能性相对高。这就是伯克森悖论

图片

伯克森悖论是说当我们去把所有的样本总和放在一起看的时候,你会发现这些数据之间不具备相关性。但是当机会不同的时候,它会造成一种机会上的相关性。选择机会不一样,会造成相关性也发生很大的变化。伯克森悖论时刻提醒我们,我们的直观感觉总是建立在我们能够注意到的现象之上的,但真实世界包含了很多被我们忽视的现象,要了解真实的情况,就需要把忽视掉的情况都考虑到。

接下来是实际研发管理中的一个实例,我们用了两组数据,一组是每周的加班时长,统计加班时长跟产出之间是否相关。结果显示,加班时长和产出之间并没有非常强的正相关关系。在标注出的红色区间中,一定的加班时长范围内产出量呈现聚集性分布。这说明卷更长的加班时间,对产出的影响可能是不大的。

图片

另一组数据也是大家比较关心的两个参数,一个是生育率,一个是房价。调查发现房价和生育率之间是很明显的负相关。对此,大家有两种解读。第一种解读是说,房价太高了,大家买不起房子所以就不生小孩;第二种解读是,在很多一二线城市,聚集了一些高收入的人群,他们的收入足以负担房价,但因为职业工作忙碌的原因,在30岁之前生小孩的概率非常低,因而也导致了这种负相关。

图片

这也就告诉我们,相关性不一定等于因果关系

在一些场景实例中,需求量与代码量也并不一定呈正相关,那可能会出现产品抱怨需求交付慢、研发委屈天天加班的情况,我们会问:研发的工作量都去哪了?这时,我们可以通过数据去做下钻分析:通过 commit message,将每一个commit对应到一个任务上去,这样可以清晰地看到每一个 commit 的目的和工作量,研发团队实际上在需求变更上花费了大量的工作量,而这些返工工作量也挤压了完成新需求开发的工作量。类似的下钻分析可以让我们更清楚地知道如何进行需求管理,让需求更稳更快地交付。

图片

因此,在实际的工作当中,当我们去看到一组数据的时候,不要马上为这组数据它是正相关还是负相关而欢呼,因为有相关性的两组数据,并不一定有因果关系。

百分比陷阱

谷歌曾经遭到公众质疑,认为谷歌搜索返回的结果当中有假新闻和虚假信息。对此,谷歌的一名副总裁回应说,日常搜索中确实有一小部分查询会返回误导性的内容,但是占比很小,只有约0.25%。乍一听,这个数字很小,问题好像也并不严重。但谷歌每天要处理50亿次搜索,0.25%意味着,每天有1200多万次搜索会返回虚假信息,足以造成较大的负面影响,并不是一个小问题。

谷歌副总裁的说法其实是在利用百分比的方式弱化问题。百分比对同一个数据,在表述上也是“可大可小”的,完全看你想强调什么。比如某个地方的消费税,从购买价格的4%提高到了6%,可以说是增长了2个百分点,也可以说是增长了50%,因为花同样的钱,要交的税比原来确实多了50%。

但这两种说法,给人的感觉完全不一样,如果我想让人觉得增税幅度微不足道,就可以说只增加了2个百分点。如果我想让人觉得增税幅度很大,就可以说税率增加了50%。这也就意味着,需求交付率可能是一个伪指标。为什么呢?我们需要问两个问题:

第一,需求的大小可比吗?

我们的需求交付率是多少?迭代的百分比是多少?这个百分比是可以比较的吗?未必,因为需求的复杂度不一样,拆分的颗粒度不一样,不见得交付了10个需求就比5个需求的工作量大。

第二,前置时长平均值可信吗?我们经常会看到说需求的交付前置周期,前置时长是多少天?需求的平均交付时长是13.5天,但我们把数据标准从均值改为80分位/85分位数,会发现大多数需求交付周期长达21天,比13.5天多了差不多50%,是非常大的差异。

为什么这两个数据之间有这么大的差异?我们来看一下场景实例。这是不同的产品线和不同时期需求的实际规模,也就是对应到我们所说的代码当量。

图片

我们用代码当量去校准需求的颗粒度。代码当量是在抽象语法树基础上计算开发工作量,可以挤压掉代码行统计水分,有效地去除编码过程中的不良习惯和噪音,比如空行注释等等不良的操作习惯。我们在这里将代码当量作为一个类等比的单位。即大家有统一认知的、更加接近实际开发工作量的单位,可以用来校准需求的颗粒度。

第一个维度是稳定性。当需求颗粒度在450当量以内时,不会受到太多需求变更的干扰,交付的速率相对来说更高,稳定性相对高。第二个维度是质量。需求颗粒度大于2500当量,重点缺陷密度呈现指数增长。

所以在这个过程中,我们需要给组织提供一个可以校准的方法,然后再利用历史数据得到一个最优区间,帮助我们去指导需求的颗粒度拆分。在拆分后落到实际研发的过程中,我们如何去规划也取决于估算标准故事点是否合理,需要我们对历史结果进行校准。

警惕数据删失

在前面的部分我们讲到,百分比和均值都有一定的陷阱,再去看数据时,需要多当心,深入地思考。那么我们还可以做哪些下钻分析?接下来我们来看第三个典型的数据操纵——警惕数据的删失。

在《拆穿数据胡扯》这本书中有一个有趣的例子,是关于死亡年龄与音乐类型的曲线,即从事的音乐类型与寿命之间的相关性。我们看到,从事传统音乐类型(如布鲁斯、爵士乐、福音音乐等)的音乐人似乎是比较安全的,而新风格的音乐表演(如朋克、金属,尤其是说唱和嘻哈)看起来非常危险。

而实际上是:

  • 导致这些数据有误导性的原因是右删失——在研究结束时仍然活着的人被从研究中删除了。

  • 说唱和嘻哈属于新的音乐类型,最多40多年的历史,大多数音乐人从20几岁开始从业,所以大多数人都健在。

  • 相比之下,爵士乐、蓝调、乡村等音乐已经存在一个多世纪了,所以多数人活到了80岁甚至更久。

图片

由于这个数据中剔除了健在的人,只把去世的人的数据拿进来了,所以导致这个数据看起来非常恐怖,不完整的数据统计周期会导致数据样本有这样大的偏差。

在场景实例中,也有样本范围选择偏倚的问题,比如可能会遇到,近一年半生产率呈现下降趋势,而近半年生产率呈现上升趋势。如何去反操纵呢?我们给出的反操纵术关键词是:不以高低论英雄。而是向外看水平,与行业相比,处于什么样的水平;向内看变化,与历史比,发生什么变化。

以上,我们引用了一些比较有趣的例子,大家可以结合现实中的实例去进行数据洞察以及反操纵的思考。

总结

  • 抽样偏差可能使无关数据间呈现相关性。

首先我们要解决抽样偏差的问题,如果要通过大样本分析得到清晰数据,我们需要解决抽样偏差和样本偏差本身的一些问题,抽样偏差有时候会使无关的数据呈现出某种相关性。

  • 相关性不等于因果关系

  • 为核心指标建立衡量健康度的指标阀

  • 不要光看均值,要结合大多数看

  • 不以高低论英雄,向外看水平,向内看变化

数据从来都不会说谎,但也不会说出全部真相。在这个时代我们去谈研发数字化的建设,更便捷地、更快速地获取了大量的数据的情况下,这些数据怎么呈现、怎么展示、怎么保证它的健康度,是我们未来很长一段时间需要不断去关注和思考的一个重要问题。

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

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

相关文章

【Source Insight4.0】解决注释中文乱码

本来用的好好的,结果今天创建一个新的项目就出现注释中文乱码!!! 然后上网查找说要修改为【Default encoding” :改成System Default(Windows ANSI) 或者Chinese Simplified(GB2312)】但是我的并没有效果。 最后是选…

Frida05 - 高级API用法

参考文档 https://api-caller.com/2019/03/30/frida-note/ https://frida.re/docs/javascript-api/#frida 数组打印 测试代码: private static class Bean {String a;int b;float c; }private void test() {Bean[] beans new Bean[3];beans[0] new Bean();be…

深度学习笔记_6经典预训练网络LeNet-18解决FashionMNIST数据集

1、 调用模型库,定义参数,做数据预处理 import numpy as np import torch from torchvision.datasets import FashionMNIST import torchvision.transforms as transforms from torch.utils.data import DataLoader import torch.nn.functional as F im…

二十九、获取文件属性及相关信息

二十九、获取文件属性及相关信息QFileInfo QFileInfo 提供有关文件在文件系统中的名称 位置 (路径)、访问权限及它是目录还是符号链接、等信息。文件的大小、最后修改/读取时间也是可用的。QFileInfo 也可以被用于获取信息有关 Qt resource . QFileInf…

算法模板之双链表图文详解

🌈个人主页:聆风吟 🔥系列专栏:算法模板、数据结构 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. ⛳️使用数组模拟双链表讲解1.1 🔔为什么我们要使用数组去模拟双链表…

使用java调用python批处理将pdf转为图片

你可以使用Java中的ProcessBuilder来调用Python脚本,并将PDF转换为图片。以下是一个简单的Java代码示例,假设你的Python脚本名为pdf2img.py: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader…

Java数组(2)

我是南城余!阿里云开发者平台专家博士证书获得者! 欢迎关注我的博客!一同成长! 一名从事运维开发的worker,记录分享学习。 专注于AI,运维开发,windows Linux 系统领域的分享! 本…

Kotlin 笔记 -- Kotlin 语言特性的理解(二)

都是编译成字节码,为什么 Kotlin 能支持 Java 中没有的特性? kotlin 有哪些 Java 中没有的特性: 类型推断、可变性、可空性自动拆装箱、泛型数组高阶函数、DSL顶层函数、扩展函数、内联函数伴生对象、数据类、密封类、单例类接口代理、inter…

西蒙子S7协议介绍

西门子的S7 协议,没有仍何关于S7协议的官方文档,是一个不透明的协议。关于S7的协议介绍,大都是非官方的一些七零八落的文档。 1. S7的通信模型 西蒙子S7 通讯遵从着基于TCP 的 Master(client) & Slave&#xff0…

读取小数部分

1.题目描述 2.题目分析 //假设字符串为 char arr[] "123.4500"; 1. 找到小数点位置和末尾位置 代码如下: char* start strchr(arr, .);//找到小数点位置char* end start strlen(start) - 1;//找到末尾位置 如果有不知道strchr()用法的同学&#xf…

Linux 基本语句_16_Udp网络聊天室

代码&#xff1a; 服务端代码&#xff1a; #include <stdio.h> #include <arpa/inet.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <stdlib.h> #include <unistd.h> #include <string…

中小型企业网络综合实战案例分享

实验背景 某公司总部在厦门&#xff0c;北京、上海都有分部&#xff0c;网络结构如图所示&#xff1a; 一、网络连接描述&#xff1a; 厦门总部&#xff1a;内部网络使用SW1、SW2、SW3三台交换机&#xff0c;SW1为作为核心交换机&#xff0c;SW2、SW3作为接入层交换机&#x…

PDF控件Spire.PDF for .NET【转换】演示:将多个图像转换为单个 PDF

如果您想要将多个图像合并为一个文件以便于分发或存储&#xff0c;将它们转换为单个 PDF 文档是一个很好的解决方案。这一过程不仅节省空间&#xff0c;还确保所有图像都保存在一个文件中&#xff0c;方便共享或传输。在本文中&#xff0c;您将学习如何使用Spire.PDF for .NET …

-bash: docker-compose: 未找到命令

-bash: docker-compose: 未找到命令 我在使用Docker搭建Nacos容器时遇到了这个问题&#xff1a;是没有安装 docker-compose工具 。 docker-compose的用处主要体现在以下几个方面&#xff1a; 快速搭建开发环境&#xff1a;使用docker-compose可以快速搭建起开发环境&#xff0…

一分钟轻松制作AI数字人播报视频

随着人工智能的快速发展&#xff0c;AI数字人播报成为了媒体和信息传播领域的一项创新技术。AI数字人播报是利用人工智能技术创建的一系列短视频&#xff0c;以新闻主播为中心&#xff0c;展示各种场景和情境能够以短视频的形式进行新闻的报道。这种创新的内容形式在社交媒体和…

Java刷题篇——单链表练习题上

206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; 1. 题目描述 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例1 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1] 示例2 输入&#xff1a;head [1,2] 输出&…

Spring Boot 3 + Vue 3 整合 WebSocket (STOMP协议) 实现广播和点对点实时消息

&#x1f680; 作者主页&#xff1a; 有来技术 &#x1f525; 开源项目&#xff1a; youlai-mall &#x1f343; vue3-element-admin &#x1f343; youlai-boot &#x1f33a; 仓库主页&#xff1a; Gitee &#x1f4ab; Github &#x1f4ab; GitCode &#x1f496; 欢迎点赞…

高可用接入层技术演化及集群概述

集群概述 集群的介绍及优势 集群&#xff1a;将多台服务器通过硬件或软件的方式组合起来&#xff0c;完成特定的任务&#xff0c;而这些服务器对外表现为一个整体。集群的优势 高可靠性&#xff1a;利用集群管理软件&#xff0c;当主服务器故障时&#xff0c;备份服务器能够自…

2023年国赛高教杯数学建模D题圈养湖羊的空间利用率解题全过程文档及程序

2023年国赛高教杯数学建模 D题 圈养湖羊的空间利用率 原题再现 规模化的圈养养殖场通常根据牲畜的性别和生长阶段分群饲养&#xff0c;适应不同种类、不同阶段的牲畜对空间的不同要求&#xff0c;以保障牲畜安全和健康&#xff1b;与此同时&#xff0c;也要尽量减少空间闲置所…

代码随想录算法训练营第五十五天 _ 动态规划_392. 判断子序列、115.不同的子序列。

学习目标&#xff1a; 动态规划五部曲&#xff1a; ① 确定dp[i]的含义 ② 求递推公式 ③ dp数组如何初始化 ④ 确定遍历顺序 ⑤ 打印递归数组 ---- 调试 引用自代码随想录&#xff01; 60天训练营打卡计划&#xff01; 学习内容&#xff1a; 392. 判断子序列 这个题目就是 …