看板中的WIP限制思想
WIP限制并不是真的要限制你的进度,事实上正相反。
什么是WIP限制?
在敏捷开发中,WIP限制决定了每种情况下的工作流中可以存续的最大工作量。限制进行中的工作数量可以更容易辨识团队工作流中的无效工作。在情况变得更糟前,一个团队在持续交付通道中的瓶颈是非常容易辨别的。
为什么说WIP限制很重要?
所以现在你一定在想“赶快告诉我更多吧!”(好吧,我希望你是这么想的。)
WIP限制通过强制让团队聚焦在更小的一套任务中来改善吞吐量和减少“将要完成”的工作量。从根本上来讲,WIP限制鼓励的是“完成”的文化。更重要的是,WIP限制可以让阻碍和瓶颈显而易见。当有明确指示现有工作遇到瓶颈时,团队可以聚焦在阻塞问题上尽快的理解、实施和解决。一旦消除阻塞,团队中的工作将再次开始流动。这些优势可以确保在最短的时间内向用户交付有价值的增量,从而使得WIP限制成为敏捷开发中一个非常有价值的工具。
“此外,多任务处理只是看似时间安排紧密。”
开发期间,大家很容易会想“当我开始另一项工作的时候,我会暂停这项工作”。同时打开两个问题意味着在两个事务之间前后切换或者在团队成员之间转移工作。降低一件事的投入加大另一件事的投入并不意味着自由-因为它会花费时间并且削弱焦点。解决一件原始问题总是好过开始并且未完成一项新工作。换句话说,WIP限制防止我们阻碍自己的流。
最后,WIP限制指出了长期闲置或过载的区域。它们帮助团队看到整个流程中的低效事件而不仅仅是某些特定区域。
专家提示:
对于刚刚使用WIP限制的团队,会觉得并不方便。只需要花点时间在最开始的几次迭代中进行讨论。了解团队何时以及为何达到了WIP限制。起初,要抵制随意调整WIP限制的诱惑。如果违规行为接连不断,那就表明WIP的限制过于严格或者团队的流程效率太低。
在敏捷团队中使用WIP限制
现在你已经认可它们的价值了,那我们回归实际问题。
每当铺开一条新的工作流时,团队都要判断并决定每种情况下的WIP限制。我们建议在监控几次迭代确定每种情况下平均数量的工作项后再设置WIP限制。
要注意的反面模式:
根据需要调高WIP限制,以便团队不再打击它们。(例如“债务上限”,还有其他的吗?)
每个人都有一个很大的专属“后台任务”用来隐藏他们的闲置时间。
团队成员闲着等待更多的工作进入,而不是集中在瓶颈上。
在工程实践或团队流程中,投入更多的人时在持续的瓶颈上要优于过度改进。
敏捷团队使用WIP限制的4个目标
与任何新活动一样,WIP限制最初使用起来比较尴尬。而WIP限制的目标是在中期使团队达到最优状态,所以短期的尴尬实际上是好事。它会迫使团队触碰到他们流程中的一些痛点。
团队在使用WIP 限制几周后,就可以根据需要进行调整。正因为团队一直在受挫,因此可以抵制调高WIP限制的诱惑。而且还能抓住机会,提高团队整体能力-理论上,可以通过教育团队让每个成员获得新技能或在某些方面提高开发过程的效率。
目标1:不断调整单个任务的大小。
在分解需求和用户故事时,保证单个任务的工作量不超过16个小时是非常重要的。这么不仅可以提高团队确切预估的能力,还能有避免瓶颈。没有什么能比大工作项阻塞通道更能降低团队速度加剧WIP限制了。
专家提示: 当WIP限制有效时,一个事件的循环时间就会降低。循环时间就是完成一个事件需要的时间。
目标2:将WIP限制规划为团队的技能。
上面的例子是假设团队成员的技术能力相似。如果你的团队有技术专家,那么当专家牵涉其中时WIP限制应该有所不同。这个时候需要创建特定于专家工作的状态。如果在该状态下出现瓶颈,正好可以趁机让团队其他成员学习一些额外的专家具备的技能,以此来增强整个团队的流。
目标3:减少闲置。
当一个团队成员出现停工期的时候,鼓励他们去帮助上游或下游团队成员。他们不仅能为团队的整体生产力做出贡献,还可以在此过程中学到一些东西。
目标4:保护一种可持续的工程文化。
WIP限制并不意味着开发人员需要急于工作以避免某些情况下工作过载。它旨在保护以保证产品质量和代码库健康为前提的扎实的敏捷工作实践。
Worktile官网: https://worktile.com/
原文作者:Dan Radigan
译者:吴倩倩
文章首发于「Worktile官方博客」,转载请注明来源。
看板中的WIP限制思想相关推荐
- 看板中的WIP限制思想 1
WIP限制并不是真的要限制你的进度,事实上正相反. 什么是WIP限制? 在敏捷开发中,WIP限制决定了每种情况下的工作流中可以存续的最大工作量.限制进行中的工作数量可以更容易辨识团队工作流中的无效工作 ...
- 张量网络算法基础(七、张量网络中的有效哈密顿思想)
张量网络中的有效哈密顿思想 一.无穷大张量网络的本征自洽方法 二.张量网络的梯度更新 三.任意尺寸张量网络收缩算法 四.张量网络中的有效哈密顿量思想 我是一只正在不断学习.希望早日成为小白的小小白,有 ...
- Java中 利用继承的思想实现动物的分类,将动物分为水生动物和陆生动物,有其动物的属性和特征,又有其属性和特征,编程模拟。
Java中 利用继承的思想实现动物的分类,将动物分为水生动物和陆生动物,有其动物的属性和特征,又有其属性和特征,编程模拟. 前言 动物在拥有自己本身所具有的特征的同时,还应该具有所在大类所具有的动物特 ...
- ABP中的依赖注入思想
在充分理解整个ABP系统架构之前首先必须充分了解ABP中最重要的依赖注入思想,在后面会具体举出一些实例来帮助你充分了解ABP中的依赖注入思想,在了解这个之前我们首先来看看什么是依赖注入?来看看维基百科 ...
- Java中的池化思想
池化思想 一:背景介绍 二:什么是池化思想 三:池化的优势利弊 3.1 优点 3.2 缺点 四:编程中池化思想的体现 五:具体示例 5.1 数据库连接池示例 5.1.2 ConnectionPool类 ...
- 在java中三种编程思想(OOA,OOD,OOP)
在java中三种编程思想:OOA,OOD,OOP OOA 一.OOA的主要原则. 二.面向对象分析产生三种分析模型 三.OOA的主要优点 四.OOA方法的基本步骤 OOD 一.OOD背景知识 二.OO ...
- 【PAT笔记】PAT中的散列思想
散列的介绍 散列(hash)是常用的算法思想之一,在很多程序上都会有意无意的使用到.用一句话来概括散列思想的话就是:"将元素通过一个函数转换为整数,使得该整数可以尽量唯一地代表这个元素&qu ...
- Pytorch中BN层入门思想及实现
批归一化层-BN层(Batch Normalization) 作用及影响: 直接作用:对输入BN层的张量进行数值归一化,使其成为均值为零,方差为一的张量. 带来影响: 1.使得网络更加稳定,结果不容易 ...
- 图解集成学习中的梯度提升思想
摘要: 本文讲述集成学习中的梯度提升方法的思想,以简单算术及图片的形式展示整个过程,一看就懂! 简介 机器学习(ML)中的一个关键步骤是选择适合数据的最佳算法,根据数据中的一些统计数据和可视化信息,机 ...
最新文章
- 恕我直言,微服务挺好,但不适合你
- 第七届“数学、计算机与生命科学交叉研究” 青年学者论坛
- Linux常用服务安装部署
- 自信息/熵/联合熵/条件熵/相对熵/交叉熵/互信息及其相互之间的关系
- 【JVM调优工具篇】jvisualvm工具导出dump文件教程
- 线程安全与可重入函数
- 基于Masstransit实现Eventbus的功能
- java it_关于 Java Iterator(迭代器)学习笔记
- 卡诺模型案例分析_AMOS案例分析 | 结构方程模型(二)
- matlab输电线路模型,输电线路模型及其特性.ppt
- 计算机备份打印机驱动程序,windows7如何快速备份打印机驱动
- 微信聊天记录的图片在哪查看
- win10 进不了修复服务器失败怎么办,win10自动修复失败开不了机怎么办?win10自动修复失败无限循环解决方法大全...
- 除权除息,前复权,后复权,不复权
- 数字时代,企业如何选择适合自己的转型平台?
- Python验证码识别:利用pytesser识别简单图形
- The valid characters are defined in RFC 7230 and RFC 3986
- ftp服务器可以异地传文件吗,FTP图片上传到异地服务器
- 程序如何打包成apk文件
- 如何用一张影像动图来对比成都市2019年和2020年油菜花分布状态?