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限制并不意味着开发人员需要急于工作以避免某些情况下工作过载。它旨在保护以保证产品质量和代码库健康为前提的扎实的敏捷工作实践。

原文作者:Dan Radigan
翻译:吴倩倩

文章来源:Worktile技术博客
文章转载请注明出处。

看板中的WIP限制思想 1相关推荐

  1. 看板中的WIP限制思想

    WIP限制并不是真的要限制你的进度,事实上正相反. 什么是WIP限制? 在敏捷开发中,WIP限制决定了每种情况下的工作流中可以存续的最大工作量.限制进行中的工作数量可以更容易辨识团队工作流中的无效工作 ...

  2. 张量网络算法基础(七、张量网络中的有效哈密顿思想)

    张量网络中的有效哈密顿思想 一.无穷大张量网络的本征自洽方法 二.张量网络的梯度更新 三.任意尺寸张量网络收缩算法 四.张量网络中的有效哈密顿量思想 我是一只正在不断学习.希望早日成为小白的小小白,有 ...

  3. Java中 利用继承的思想实现动物的分类,将动物分为水生动物和陆生动物,有其动物的属性和特征,又有其属性和特征,编程模拟。

    Java中 利用继承的思想实现动物的分类,将动物分为水生动物和陆生动物,有其动物的属性和特征,又有其属性和特征,编程模拟. 前言 动物在拥有自己本身所具有的特征的同时,还应该具有所在大类所具有的动物特 ...

  4. ABP中的依赖注入思想

    在充分理解整个ABP系统架构之前首先必须充分了解ABP中最重要的依赖注入思想,在后面会具体举出一些实例来帮助你充分了解ABP中的依赖注入思想,在了解这个之前我们首先来看看什么是依赖注入?来看看维基百科 ...

  5. Java中的池化思想

    池化思想 一:背景介绍 二:什么是池化思想 三:池化的优势利弊 3.1 优点 3.2 缺点 四:编程中池化思想的体现 五:具体示例 5.1 数据库连接池示例 5.1.2 ConnectionPool类 ...

  6. 在java中三种编程思想(OOA,OOD,OOP)

    在java中三种编程思想:OOA,OOD,OOP OOA 一.OOA的主要原则. 二.面向对象分析产生三种分析模型 三.OOA的主要优点 四.OOA方法的基本步骤 OOD 一.OOD背景知识 二.OO ...

  7. 【PAT笔记】PAT中的散列思想

    散列的介绍 散列(hash)是常用的算法思想之一,在很多程序上都会有意无意的使用到.用一句话来概括散列思想的话就是:"将元素通过一个函数转换为整数,使得该整数可以尽量唯一地代表这个元素&qu ...

  8. Pytorch中BN层入门思想及实现

    批归一化层-BN层(Batch Normalization) 作用及影响: 直接作用:对输入BN层的张量进行数值归一化,使其成为均值为零,方差为一的张量. 带来影响: 1.使得网络更加稳定,结果不容易 ...

  9. 图解集成学习中的梯度提升思想

    摘要: 本文讲述集成学习中的梯度提升方法的思想,以简单算术及图片的形式展示整个过程,一看就懂! 简介 机器学习(ML)中的一个关键步骤是选择适合数据的最佳算法,根据数据中的一些统计数据和可视化信息,机 ...

最新文章

  1. 我如何向团队解释依赖注入
  2. ICCV 2019 | 清华等联合提出高精度、高效率点云3D重建网络框架PointMVSNet
  3. CentOS 6.5下Python3.5以及virtualenv、virtualenvwrapper的安装配置
  4. 全国计算机等级查询系统贵州省,贵州计算机等级考试成绩查询入口
  5. nginx 与php版本,nginx-php不同版本问题
  6. Python入门--函数的创建与调用
  7. 5G布控球星光级400万高清布控球智能布控球
  8. Ubuntu安装字体
  9. R语言:基本变量及其之间关系探索分析
  10. 维控plc解密 维控程序文件密码 工程密码 子程序密码搞定
  11. 长治机电职业技术学院计算机系,山西机电职业技术学院
  12. 【开源项目】Flutter版 玩安卓,android开发模拟器推荐
  13. 简单理解Callable接口
  14. php_uname()函数
  15. 行政和IT人员为什么需要一款固定资产管理系统?
  16. Android开发规范文档
  17. 安装NGrabLite 录像DM500
  18. 计算机与信息技术常用小工具
  19. 判断输入三条边能否构成三角形
  20. 微信小程序-复制到剪切板

热门文章

  1. c 取地址 虚拟地址 物理地址_通过linux0.11源码理解进程的虚拟地址、线性地址、物理地址...
  2. python集合中的元素不允许重复对吗_python字典中的值为什么不允许重复
  3. 【 Vivado 】输入延迟约束实例
  4. 咱们来聊聊快速失败和安全失败
  5. eclipse 向HDFS中创建文件夹报错 permission denied
  6. Zookeeper的安装配置及基本开发
  7. C++STL源代码学习(之slist篇)
  8. 使用工具类时尽量使用私有的无参构造函数
  9. MariaDB Spider分库分表引擎调研
  10. Linux下服务器端开发流程及相关工具介绍(C++)