知识卡片

用两条分布曲线提升研发指标的三步实践法

结构图卡

内容

把[[正态分布与幂律分布:独立相加的回路,还是相乘的回路|两条分布曲线]]用于实际改进软件研发指标,可以按三步走。第一步,判断指标属于正态分布还是幂律分布——除了画图看形态,还可以用经济学的边际成本来辅助判断:需求交付周期、代码开发当量这类指标,每新增一个需求/系统都要投入类似的资源(边际成本较高),增长速度会比较缓慢,属于正态分布;用户增长率这类指标因为有网络传播效应,边际成本较低,反而容易导致强者愈强,属于幂律分布。第二步,寻找指标的影响因素——先大致判断团队目前处于什么水平(比如交付周期是正态分布,团队水平大致在平均值附近),再分析形成这个指标的具体影响因素,同时特别关注异常值:分析正态分布指标时不能只看平均值,散落两边的离群点往往隐藏着好的影响因素;分析幂律分布指标时要关注处在长尾的值,这些同样可能帮助找到有价值的负面影响因素。第三步,结合系统结构模型分析改进思路——正态分布的系统里,每个影响因素对应结构模型里一个个独立的回路;幂律分布的系统里,多个影响因素共同构成一个增强回路;找到这些回路之后,正态分布场景(比如提升代码质量)的改进思路通常是逐渐加强好的独立回路(详尽的前期设计、把代码质量纳入绩效考核)、同时削弱负面回路的影响(缺少代码评审、存量技术债务多);幂律分布场景的改进思路通常是促进那个增强回路运转得更顺畅、同时尽可能降低调节回路的拖累作用。可迁移启发:团队制定”如何提升某项研发指标”的改进计划前,先花时间做完这三步诊断——直接跳过”这是什么分布、结构里有哪些回路”这一步、上来就列一堆改进措施,很容易把本该用”加强独立回路”思路解决的正态分布问题,错误地套用了幂律分布”死磕一个增强回路”的策略,反而事倍功半。

结构图

flowchart TB
  S1["第一步:判断分布类型<br/>(边际成本高→正态,边际成本低→幂律)"]
  S1 --> S2["第二步:寻找影响因素<br/>(正态看两端离群点,幂律看长尾值)"]
  S2 --> S3["第三步:结合结构模型定改进思路"]
  S3 --> S3A["正态分布→加强好的独立回路,削弱坏的独立回路"]
  S3 --> S3B["幂律分布→促进唯一增强回路顺畅,降低调节回路拖累"]

参考来源

- 位置:《架构师启示录:知识模型、落地方法与思维模式》第9章《系统维护》之"9.2.3 曲线在实践中的运用"(源文件:_epub-src/EPUB/xhtml/chapter13.xhtml) - 结论依据:原文说明"对需求交付周期、代码开发当量等指标而言,每新增一个需求或者新开发一个系统,都需要投入和之前类似的资源,即边际成本较高……与此相反,业务人员关注的用户增长率等指标,由于有网络传播等效应的存在,边际成本会较低……对代码质量来说,一般的改进思路是逐渐加强好的影响因素的作用,而降低负面影响因素的作用。对符合幂律分布的系统来说,一般的改进思路是促进增强回路运转的顺畅程度,尽可能降低调节回路的影响", 直接支撑本卡关于三步实践法的结构图。 - 原始内容:在分析正态分布指标时,我们不能仅仅关注平均值,也要关注散落在两边的值,这些离群点中往往隐藏着一些好的影响因素。