写点什么

没有采用框架的 LeSS 导入

  • 2024-06-26
    上海
  • 本文字数:2248 字

    阅读完需:约 7 分钟

我提倡在使用 LeSS 中平衡框架导向和实验导向。因为框架导向已经挺强了,我想更多地展开实验导向。有可能不采用 LeSS 框架来导入 LeSS 吗?我认为是可能的,因为那其实就是受 LeSS 实验启发的持续改进。


受 LeSS 实验启发的持续改进


让我来分两部分加以解释 - 持续改进和受 LeSS 实验启发。


持续改进


LeSS 导入 - 无论是框架还是实验 - 的目的是改进产品开发。为了持续地改进,两件事能有所帮助。

  1. 一个持续改进的周期,基于年/季度/月、版本/迭代等。虽然框架经常会带来一个持续改进的周期,我们并不真的需要一个框架来创建周期;生活中就充满了周期:)

  2. 一个诸如 PDCA 这样的改进方法。我们定义改进话题、设计并采取措施,学习并加以适应。为了能提升改进质量,我们可以应用系统思考,更多信息请参考“实践系统思考: 2) 从鱼骨图到因果回路图”这篇文章。


受 LeSS 实验启发


当定义改进话题(改进什么和怎么改进)时,我们能受益于对 LeSS 实验的学习。我们可以从分析问题开始,然后从 LeSS 实验中寻找启发:可能的原因和方案、甚至重新定义问题。我们也可以从 LeSS 实验开始,然后寻找机会来改进我们自己的情况。我把这叫作问题和实验的碰撞。


它们在哪里碰撞?在系统模型中。我们在同一个系统模型中分析问题并学习相关 LeSS 实验。虽然一个实验可以是一个采取措施的单元,它并不是一个好的学习单元,因为一组实验会共享一个上下文,在更大上下文中一起来学习它们会更有效。这与建议在更大的上下文中分析问题是一致的。系统模型则提供了这个上下文。


一个例子 - 改进遗留代码


比如说,我们有一个改进遗留代码的话题。我们可以把问题定义为“遗留代码拖慢了我们”,然后措施是“重写遗留模块 A”。我们把这放入到一个系统模型中,以下是一种方式。我把 B1 回路命名为“重写以清理遗留代码”。



让我们来学习相关的 LeSS 实验以获取更多启发。第二本 LeSS 书中有一个章节就叫“遗留代码”。你注意到的第一件事会是,那些实验被组织成两部分:一部分是如何避免新增遗留代码;另一部分则是如何清理现存遗留代码。事实上这是一个典型的存量流量思考方式 - 如果你识别某个变量为存量,你会考虑它的流入和流出;虽然 CLD 并不要求显式区分存量和流量 - 它们在 CLD 中都是变量,我们受益于这种思考从而考虑得更为完整。就这样我们通过拆分/新增了遗留代码相关的变量来对模型加以完善。



我们继续读这个章节。第一部分是如何避免产生更多遗留代码,以下是一组相关实验。

  • 避免……固定内容并带有不合理的截止日期

  • 尝试……透明性和客户协作

  • 避免……招聘许多技能弱的开发人员

  • 避免……相信大学教育会教授开发技能

  • 尝试……增加对学习开发技能的组织支持

  • 尝试……支持更多自学

  • 避免……轻视编程

  • 尝试……提升对遗留代码所产生负面影响的认知


产生遗留代码有两类主要的原因:一个是排期不合理,另一个是开发技能差。在读这些实验的过程中,我们进一步完善模型。



如你注意到的那样,模型被扩展了许多。让我一块一块来解释。

  • B2 回路是对期望产出和实际产出之间差距的一种典型反应,我把它命名为“施压以获得更多产出”。然后,R1 回路则展示了一个意外的后果,我把它命名为“匆忙/疲劳的开发人员产生遗留代码”。

  • B3 回路则是另一种反应,我把它命名为“招聘以获得更多产出”。不幸的是,招聘好的开发人员需要时间,在模型中呈现为延迟。当我们因为不能等而在匆忙中招聘时,就会招许多技能弱的开发人员。因此更多的招聘导致了更低的开发者技能,进而产生了另外两个意外的后果。

  • R2 回路展示了一个后果,我把它命名为“技能弱的开发人员会慢”。R3 回路则展示了另一个后果,我把它命名为“技能弱的开发人员产生遗留代码”。


借助于系统模型,我们对诸如“避免……招聘许多技能弱的开发人员”、“尝试……增加对学习开发技能的组织支持”和“尝试……支持更多自学”这些相关实验的学习更深入了。


继续第二部分 - 关于如何清理现存遗留代码,以下是一组相关实验。


  • 避免……重写遗留代码

  • 尝试……清理你的周边

  • 尝试……写高层和单元两类测试

  • 尝试……重写致命的遗留代码


我们终于看到了与最初的 B1 回路相关的实验。等一下,有两个相关的实验:一个是“避免……重写遗留代码”,另一个是“尝试……重写致命的遗留代码”。这很有趣,为什么既避免又尝试?我们深入下去……留给你自己学习:)然后,我为“清理你的周边”增加了 B4 回路,那是另一条清理遗留代码的路径。以下是更新的模型。



所以,LeSS 实验在系统模型中是什么呢?它们对系统施加影响;它们影响某些变量、链路和回路。

在看到所有这些变量和动态之后,我们可能仍然决定采取原先的措施 - 重写遗留模块 A。此外,我们采取另一个措施来“提升对遗留代码所产生负面影响的认知”。与此同时,我们理解这些只是这个持续改进周期里的措施,之后我们将继续工作在这个改进话题上。


在这个例子中,我们从一个改进话题和一个措施开始,然后转向学习相关的 LeSS 实验以获取启发。我们看到了之前没有看到的变量和动态;我们学到了之前没有想到的影响方式。然而,我们也可以从 LeSS 实验出发,并思考它们试图影响的但还没进入我们视野的问题。这就像是,我们在系统模型提供的舞台上摇摆于我们的问题和 LeSS 实验之间。


结束语


LeSS 导入的这条路走得人少,但它却在 LeSS 的源头。当我们看那些发布的 LeSS 案例,它们大多数都是 LeSS 框架的导入。事实上,我期望看到更多没有采用框架的 LeSS 导入案例。

全国独家线下面授,上海 8 月 22-24 日大规模敏捷 LeSS 认证提前报名预约中!与国际导师现场互动学习,提升敏捷规模化产品开发技能!报名享特大福利哦。


详情点击下方图片:


报名联系 Toby 171 5214 1688(电话/微信同号)

发布于: 刚刚阅读数: 2
用户头像

还未添加个人签名 2022-05-24 加入

还未添加个人简介

评论

发布
暂无评论
没有采用框架的LeSS导入_大规模敏捷LeSS_ShineScrum捷行_InfoQ写作社区