看板,基于精益思想的软件开发方法。
一、看板实践
1、当前团队存在的问题:
* 我们经常延迟交付;
* 估算常常不准;
* 整个团队忙得不可开交;
* 优先级不清;
* 需求来自四面八方;
* 互相不清楚谁在干什么;
2、在引入看板可视化,可以解决:
* 让隐藏的工作无所遁形
- 为每个工作项建立一个即时贴即可轻易做到
* 帮你清理:
- 谁在干什么
- 你正在处理的工作
- 进行中的工作数量
* 工作可视化之后,信息将散播给看到的每个人
3、工作流映射到白板上:
工作流程列:待办、分析、开发、测试、颜色、等待发布、发布生产环境
* 识别所有阶段,从工作进入到工作离开团队
* 不要奢求完美
- 检视并进行调整(拥抱调整)
* 工作直到对客户产生价值才算是完成
* 通过可视化工作流,你可以看到
- 工作状态
- 潜在的问题,比如工作没有进展并在某个阶段前堆积如山
4、卡片上有什么内容?
* 从卡片上你可以
- 看到工作项的进展状态
- 能够决定下一步如何处理
* 常见的属性为
- 工作项描述
- 电子系统中的唯一标识
- 完成期限
- 谁在处理这个工作项
- 工作类型(比如Bug或者常规工作)
5、限制在制品
* 致力于减少同时处理的工作项
* 批量规模越小,前置时间越短
* 流动效率提升的同时资源利用效率会有所降低
* 类似传递便士的游戏或模拟方法是教人抽象概念的很有力的方式
6、看板快速通道
* 处理特殊情况的常用方式
- 如紧急工作
* 通常在白板上刻划为单独通道
* 快速通道的相关规则如下:
- 任何时候最多只能有一个工作项在快速通道内
- 每周最多有一个紧急工作
- 快速通道内的工作项无需进入在制品限制
7、看板实践对团队工作的度量
* 有利于团队改进
* 团队自己选择度量指标,且不要将度量指标用于绩效考核
* 两个常用的度量指标为:
- 前置时间是整个工作流的时间
- 吞吐量是一定时间内完成的工作项数量
二、看板规则
可视化工作
限制在制品的数量
促进工作快速流动
三、工作可视化
》规则显示化
》信息发射源
* 最终是要为更好地理解工作流动和有效的合作建立信息透明和共享;
* 意味着将之前不可见的信息变得可见,将隐含的知识和规则显示化,还需要解决不一致和冲突;
* 看板墙是一种很好的方法,可以用来可视化工作流和共享信息,比如工作优先级,谁在干什么工作以及每个工作项的进展状态等信息;
* 通过使用大的可视化看板墙,信息被广播给每一个感兴趣的人,从而避免了信息隐藏在人们的脑子里或者难以访问的工具中;
* 创建一个看板很容易:将工作项的流程,即工作项在完成过程中通常历经的步骤,映射到在一张白板或者一面墙上刻划的不同的列中;
四、工作项
1、卡片的作用
* 促进决策制定
* 帮助优化结果
* 展示工作类型和分类
2、工作项卡片,包括:
* 工作项描述
* 头像:工作项负责人
* 截止日期
* 跟踪标识
* 阻塞事项
3、工作项类型
* 不同工作类型使用不同颜色
* 利于设置优先级
* 避免黄色的即时贴海洋
* 有目的地去使用一种颜色
4、进度指示器
* 显示工作项已完成的进度
* 打点、方框或者字母的方式
* 总体进度或者每步进展
* 基于服务等级协议
5、工作项大小
* 这个工作项到底多大
* 相对数字或者T恤尺寸
* 当进入看板墙或者得知工作时设置
6、收集工作流数据
* 反映工作流动情况的度量指标
* 可以简单到只记录工作开始/完成的日期
* 高级的方式:记录工作项被拉入每一列的日期
* 保持简单,需要时再改进
五、在制品
在制品,是指你手头正在处理的所有事情,包括正在处理的任务、等着被验证或者部署的工作项等。
1、软件开发中的在制品,是:
* 尚未实现的需求规格说明书
* 未被集成的代码
* 未测试的代码
* 尚未发布的代码
2、大量在制品会带来的问题和负面影响:
* 上下文切换
* 被拖长的反馈环,进而给你带来额外的工作:场景还原
* 增加风险:不能快速应对变化
* 更多开销:资源协调
* 质量下降:修复缺陷时间将更为耗时,并且更加困难
* 缺少动力:工作最终都堆在另一个队列中并不会激发他们的动力
六、限制在制品
限制在制品,并没有硬性的规则。找到一个合适的在制品限制不仅仅取决于上下文,而且依赖于你想要达到的目标,并且是一个移动的目标。
1、确定在制品限制
* 更低比更高好:确定一个较低的在制品限制,但不能过低
* 人员闲置或者工作闲置:边试验边调整
* 没有限制是不对的
2、设置限制的原则
* 口号是:“停止启动,聚焦完成”
* 尽可能降低在制品,但也许不能设置为1个
七、管理流动
客户想要的东西才具有价值,其他不想要的东西都是浪费。
流程中的某些步骤增加了价值,而另外一些步骤则没有。
1、浪费阻碍工作的流动,包括:
* 部分完成的工作
* 多余的特性
* 重复学习
* 工作交接
* 延期
* 任务切换
* 缺陷
2、帮助工作流动,包括:
* 限制在制品:在制品越少,流动越快
* 缩短等待时间
* 消除阻塞:当被阻塞时,开展对其他利益相关人员无法产生直接效益的特殊工作
* 避免返工
* 跨职能团队
* 使用服务等级协议或目标时间来将工作放入时间盒并优先处理重要工作
3、工作阻塞,分析:
* 是什么原因导致了阻塞?
* 是否可以做点什么来预见这种情形并通过变通的办法来应对?
* 如果你改变工作方式,是否这种阻塞事项就可以完全被避免?
* 或者是需要其他人改变工作方式?
* 通过问题的根本原因分析来学习和改进
4、每日站会
* 团队每日报到
* 简短,5~15分钟比较常见
* 及时开始与结束
* 聚焦重点
* 有规律性:每天在同一时间、同一地点举行站会
5、每日站会实践
* 关注工作而不是人
* 遍历看板,从右到左:强化拉动原则
* 关注“味道”和偏离:没有遵循规则的工作项
* “你所有的工作都在看板墙上了吗?”
* “我们在做正确的事情吗?”
* “我们理解我们的工作规则吗?”
* 每日站会之后,鼓励自发改善会议
6、规模化站会
每日站会 -》每日同步 -》发布同步
* 多团队的定期站会
* 从问“为什么”开始?
- 你期望如何利用这个会议?
- 同步团队之间的信息,不要只是重复汇报进展
* 每日大会也考虑使用看板墙
7、我接下来该做什么?
* 帮助团队成员知道接下来做什么会使得团队更自治
* 使用显式的规则和可视化技术
* 经验规则:
- 完成在制品
- 发现瓶颈并帮助解决
- 拉入新工作,如果不超过在制品限制
- 找点其他有意思的工作
* 空闲不是坏事——空闲会促使改进
8、管理瓶颈
* 瓶颈是整个流程中让生产过程慢下来的环节
* 约束理论是如何管理瓶颈的管理理论
- 识别系统约束
- 充分利用约束
- 使其他工作服务于充分利用约束
- 打破约束
- 重复:持续学习和改进