AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

软件项目管理中价值流反馈回路的意义

作者:Pavel Azaletskiy, Jack Maher

  • 2022-10-06
    北京
  • 本文字数:2831 字

    阅读完需:约 9 分钟

软件项目管理中价值流反馈回路的意义

在探讨价值流程图时,我们总会将交付时间与数据吞吐看作是静态的,但这些参数实际是价值流图的行为特征。价值流程通过步骤、能力、处理事件、反馈回路、概率等在内的结构,定义了价值流的交付时间、在制品(WIP)及动态吞吐量。


让我们从一个简单的价值流开始,只有一个步骤“工作”,负责材料的某些工作。材料每分钟到达一次,所有材料的处理时间步幅固定为一分钟,材料在输入队列中放置时间为一分钟。在这个简单实验中,我们只有一个重新处理的材料“返工”(redo)反馈回路。


如你所见,返工并不是必须执行的步骤。质量优秀的项目会直接进入输出队列,但如果项目质量堪忧那么它将进入返工队列,再次执行“工作”这一步骤。从我们的实验来看,质量不过关重新返回“工作”队列的概率很重要,我们将这种情况称作是“返工”概率。


在实际生活中,这种过程非常常见:

  • 在代码审查中,代码修改提交者会收到代码是否存在问题的反馈,如违背代码标准、实施问题等

  • 在质量保障实践中,测试团队会返回应用构建后存在的 bug

  • 在场景可靠性工程中,新版本部署需要人工干预解决先前被忽视的问题


也许你会认为我们所用的例子过于简单,以至于无法完全反映上述例子中的场景,但我们现在还不需要过多的细节。正如一位科学家所言,所有模型都是错的,但有的可能错得有用。这句话完美符合我们现在的情况。让我们先从这个模型开始,看看能在其中学到什么可以应用至软件工程管理中的知识。


图 1.实验性质的价值流图

 

如果你想要对模型进一步探索,调整参数或根据需要添加细节,可以参考这个链接

 

第一个实验是研究一个步骤中的“返工”概率对整体流程交付时间和吞吐量的影响。这种实验设置对软件工程经理来说非常现实,它能提示我们在不增加雇员的情况下要如何提升交付价值。让我们先从抽象案例开始,进一步探讨其对软件管理的实际意义。


在我们的模拟中,我们以 10%的步幅将返工概率从 0%提升到 90%,假设材料处理顺序代表结果差别,是输入队列还是返工队列的材料优先被处理,换句话说,我们是否需要将 bug 修复优先于功能开发。

我们将以下三种设置的价值流图模拟运行 100 分钟:

  • 当输入队列优先级高于返工队列时,工程团队实际是在处理新需求而不是改 bug

  • 当输入队列优先级与返工队列相同时,工程团队是将新需求与 bug 混合在一起

  • 当输入队列优先级低于返工队列时,工程团队优先处理 bug 再处理新需求

 

输出模拟如下:



图 2. 三种情况的模拟结果

 

只有当输入队列优先级高于返工(bug),也就是新功能比改 bug 更重要的情况下,才会出现交付时间固定为两分钟的情况。解释也很简单,因为输入队列的材料(新功能)拥有更高优先级,所有返工队列(bug)的材料都积压在底层,无法进入“工作”这一步骤。尽管两分钟的交付时间看起来很美好,但这也只是一个假象,不断推迟处理的返工材料只会延长 WIP 的时间:这些 bug 或技术负债终究还是要处理的,新材料(新功能)无论如何都会被推迟。因此,将团队部分能力分配给已知问题的处理是合理的。

 


图 3. 高优先级输入队列中,在制品有 50%的概率返工

 

在制品(WIP),一个不能细看的东西。我们或许可以参考道路交通和网络流量这两个模型来研究在制品的影响,由于道路宽度和带宽的有限性,新加入的车辆或数据包都会对当前部分的基础设施造成影响。在低负载时,这些影响可以忽略不计;但随着负载的增加(车辆或数据包的数量),整体交通流动速度会下降。“降低流量水平”,这看板(Kanban)使用 WIP 作为流程机制的关键原因。以 WIP 为阈值指标确实可以帮助我们监控“流量”,但前提是它能够捕捉到全部的项目工作,包括计划内、非计划内、行政管理等等各种会占据我们精力和时间的活动,然后这一切又会变成优先级争夺的游戏。


让我们继续回到模型的研究。当输入队列(新功能)优先级高于返工队列(bug)时,事情大不相同了:交付时间会随着返工概率的增长而增长。原因是材料在离开过程,也就是项目工作完成前,会多次进入“工作”的步骤。另一个值得注意的现象是,随着返工的增长吞吐量反而会降低,这也是必然的,因为吞吐量的计算公式是离开材料和到达材料的比率。在一段时间内(在我们的模拟中是固定的 100 分钟),如果交付时间增长,那么离开的材料数量会减少,吞吐量也会下降。


那么这对于实际软件工程管理来说有什么实际意义呢?率先解决反馈回路中会出现大量 bug 或问题的部分,以恢复团队能力。举例来说,如果我们的架构脆弱或代码可维护性很低,在部署任何变更后都需要大量返工,那么重构是必要的,只有这样才能提高工程团队的能力,恢复生产力。


最后的一个观察结果是,模拟时长决定了交付时间。价值流模拟的时间越长,交付时间的变化就越多。这种行为是直接反应了价值流图结构中反馈回路,在输出队列与返工队列之间的概率分布。工程管理者在接手包含大量累计债务的历史遗留代码时,考虑对解决方案增量返工是较为合理的,否则,不仅仅是追赶进度的速度,交付速度也会一直迟缓。


追求简单的艺术:越是复杂就越容易提高结果在可接受范围外的概率。为避免这类情况发生的一种方法是,尽可能简化反馈回路,使其快速且直接。对数据质量评估和鉴定之前所收集到的一切信息应保持怀疑态度,让变更部署质量的反馈保持简单、简洁、快速,是 TDD 和 BDD 之类工程实践会如此强大的原因。


后续可以尝试单一变量的迭代变化,当然最好是通过实验设计自己搭建一个价值流,以充分性为目标,看看最后会是什么结果,你可能会面临“完美并不意味着好”的挑战。更高阶的挑战会包括跨流程影响、间接影响,甚至还会有活动和数据观测之间尚未被发现的关系。流程和数据透明化、可见性都能够成为价值流程图中传递意图和映射现实的强有力工具,并在利益相关者的参与中构建可信度和可用性。

 

下图列表展示了价值流图的多个流程是如何有多个交付时间,在输入和返工队列拥有相同优先级且返工概率为 50%时,材料在离开项目时留下的流程痕迹。如你所见,一个材料可以有各种形式的返工反馈回路。当软件工程经理面临这种多类型反馈回路的场景时,可以根据情景发生频率、对吞吐量和团队能力的不利影响等不同情况有不同处理方式。先找到反馈的根源,是什么导致工程师无法及时收到反馈?另一个重要的问题是针对重复性反馈,为什么工程师无法在收到反馈后立即做出变更?架构或环境配置本身都极可能导致工程师无法在本地进行测试、运行这套反馈流程,只能从其他团队或管道步骤中获取反馈。在生产力最高的环境中,工程师都可以在本地,不影响代码库的请胯下运行所有管道步骤和各类测试。



综上,我们会建议敏捷DevOps领域使用价值流图的从业者透过价值流结构和视角来观察其包括交付时间、吞吐量、WIP 等在内的动态特征。搞清楚价值流中的哪些结构因素会导致动态观察的结果变化是对改进或新的、更平衡的价值流而言至关重要的。


希望这些想法和见解能在你的实践中派上用场。欢迎随时联系我们,分享你认为重要的经验教训。


原文链接

The Implication of Feedback Loops for Value Streams


相关阅读:

DevOps 已死,平台工程才是未来

POC、Scrum 和低质量软件的解决方案

2022-10-06 10:5510184

评论

发布
暂无评论
发现更多内容

办公软件定制开发在企业发展中的优势

Geek_16d138

APP软件开发 软件定制

企业如何选择安全又快速的大文件传输平台

镭速

大文件传输 大文件传输平台

什么是工业元宇宙?如何利用版本控制来应对工业元宇宙的挑战?

龙智—DevSecOps解决方案

元宇宙

《社交泛娱乐出海作战地图》加印领取啦!

融云 RongCloud

地图 社交 泛娱乐 出海 一图流

云小课|HSS教您如何应对LockBit勒索事件

华为云开发者联盟

云计算 后端 华为云 主机安全 华为云开发者联盟

Things3 for Mac(日程和任务管理工具) 3.19.3激活破解版

mac

任务管理工具 苹果mac Windows软件 Things 3

Goldie App for Mac(黄金比例设计软件) v2.2永久激活版

mac

苹果mac Windows软件 Goldie App 黄金比例工具

集群 CPU 利用率均值达 45% ,揭秘小红书规模化混部技术实践

小红书技术REDtech

cpu #云原生

Aseprite for mac(像素动画制作工具)

展初云

Mac 2D像素风格动画制作软件 Aseprite

借助工具落地提高外包软件项目代码提交规范

知者如C

产学研合作新篇章:东南大学OpenHarmony技术俱乐部成立,专家进校园共谋发展

科技热闻

Python subprocess模块的高级玩法

秃头小帅oi

Python 程序员 低代码 subprocess 前沿

VPS服务器搭建指南:快速、简单、高效的秘诀大揭秘

一只扑棱蛾子

VPS VPS服务器

上海数交所与合合信息发布产业数据行业创新中心,政产学研合力为“数据航母”加速

合合技术团队

合合信息 上海数交所 产业数据行业创新中心 2023全球数商大会

Vue 实现低代码开发平台,没想到这么好用!

伤感汤姆布利柏

优雅实现API接口开关:让你的应用更可控

树上有只程序猿

spring-boot API接口

99%的人不知道的Docker干货

伤感汤姆布利柏

Docker 程序员 低代码 干货

Tableau Desktop 2019 for Mac(最好用的数据分析工具)激活版下载

iMac小白

Mac综合优化清理软件MacCleaner 3 Pro

展初云

Mac 清理优化 MacCleaner Pro

HTTPS的安全问题及应对方案

EquatorCoco

网络安全 https 安全

综合清理优化工具:MacCleaner 3 Pro 激活中文版

mac大玩家j

Mac软件 清理工具 清理优化软件

打破障碍:克服数字化应用挑战的策略

互联网工科生

数字化

使用OSS搭建私有云内网yum仓库的方法

EquatorCoco

云原生 数据 OSS 仓库

【专业测试工具推荐】优化测试流程,高效完成测试工作!

Liam

程序员 测试 自动化测试 接口测试 测试工具

应用容器化转型系列-容器部署进阶

品高云计算

Parallels Desktop 19完美激活秘钥

iMac小白

Mac安装Windows应用的工具CrossOver 23.7

展初云

电脑兼容性会被PC端小程序引擎颠覆吗?

Geek_2305a8

ASP.NET Core Web API设置响应输出的Json数据格式的两种方式

EquatorCoco

json 前端 ASP.NET Core .NET 7

软件项目管理中价值流反馈回路的意义_文化 & 方法_InfoQ精选文章