读《学习敏捷构建高效团队》笔记7

第8章 精益、消除浪费和着眼全局

精益是一种思维方式,是一种世界观。

——Mary Poppendieck,Tom Poppendieck,The Lean Mindset: Ask the Right Questions

如果你每天参加每日例会,使用冲刺,并与产品所有者和Scrum主管一起工作,那你就是在使用Scrum。对极限编程也是一样:如果你不断重构,使用测试驱动开发,持续集成并且进行增量式设计,你的团队就正在使用极限编程。

如果你不理解集体承诺和自组织,你就没有理解Scrum,而Scrum的价值观正式帮助你理解这两点。同样,在极限编程中:不理解简化和精力充沛的工作这些价值观,你最后不过是把极限编程的实践当做一个清单,你的团队不会真正拥有变化,而你最后得到的还是难以维护的复杂软件。

8.1 精益思维

精益的价值观包括以下这些:

  • 消除浪费

    找出那些不能直接帮助你创造出有价值软件的工作,把它们从项目当中去掉。

  • 增强学习
    通过项目的反馈来改进你开发软件的方法。

  • 尽可能延迟决定
    每一个项目的重要决定都要等到你拥有了最大量信息的时候再做,也就是在最后责任时刻

  • 尽快交付
    理解延期的代价,并且通过拉动式系统和队列来将这种代价最小化。

  • 帮助团队成功
    创建一个专注而高效的工作环境,创造一个由精力充沛的人组成的团队。

  • 保证产品完善
    软件应该符合用户直觉,并形成一个一致的整体。

  • 着眼全局
    全面理解项目中的工作——使用恰当的衡量指标来保证你了解全局,毫无遗漏。

一个组织更加珍视什么,它就最终得到什么。在我们把价值取向从过程转向人、从文档转向代码、从合约转向合作、从计划转向行动的过程中,敏捷宣言起到了很大的促进作用。

——Mary Poppendieck,Tom Poppendieck,《敏捷软件开发工具》

要点回顾:

  • 精益或精益思维是一种思维方式,与其他敏捷思维方式一样,它也有一些价值观可以帮助你理解和适应它。

  • 精益是一种思维方式,而不是一种方法。这也是为什么它没有可供你用到项目开发中的具体实践。

  • 精益思维与更广义的敏捷开发有一些共同的价值观:“尽量推迟决定”(或者在最后责任时刻做决定)和“增强学习”(使用反馈和迭代)。

  • 帮助团队成功这一精益价值观与 Scrum 的专注和极限编程的精力充沛的工作十分相似。

  • 选择思维的含义是理解选项与承诺的区别,并且尽量给你项目的未来留出尽可能多的选项。

  • 使用集合式开发的团队会同时探索多个选项并从中选出最好的一个,像 A/B测试中在一个用户样本上测试多个用户界面选项并选择最佳的那些特性。

8.3 创造英雄与神奇思维

很多现实生活中的敏捷团队反复地看到,改进团队协作和创造健康而放松的工作条件能够帮助开发出更好的软件。

精益试图去除那些虚妄,并帮助团队共同协作,思考如何创造真正的价值,而不会单纯的蛮干。

8.4 消除浪费

如果你习惯于不断“重构”运作项目的方法,你会得到一个更加灵活而能干的团队。

对于开发团队来说,也许看起来并没有花太多的时间等待计划被批准,因为它很可能在等待的过程中正在开发另一个功能。但是需要使用该特性的客户并一定清楚开发团队的优先级安排。而且,说实话,他也根本不关心,他只知道,他要求的功能从开发到交付一共经历了71天

要点回顾:

  • 相信团队能够做到不可能的事情,并且忽略现实世界的限制和项目的实际情况,这种思维就称为神奇思维

  • 精益团队消除浪费的方法是:找出那些对开发一个有价值的产品没有直接贡献的活动,并移除它们。

  • 任何不直接为项目创造价值的活动都是浪费,精益团队致力于发现这些浪费,并尽可能将其从项目中消除掉。

  • Mary Poppendieck 和 Tom Poppendieck 提出了软件开发的七种浪费:做了一半的工作、多余的过程、多余的功能、任务切换、等待、移动和缺陷

  • 保证产品的完整性是另外一个精益价值观,它包含感知完整性(即产品多大程度上满足了用户的需求)和概念完整性(即产品的各项特性多大程度上能够有机地结合在一起)。

  • 精益的思维方式帮助团队着眼全局 ,客观理解团队的工作方式,包括其中的问题;量化指标 能够帮助你对你的项目和团队有一个客观的看法。

  • 尽快交付意味着去除那些延迟你的工作和导致瓶颈的无用活动。

怎么才能知道你是否做到了尽快交付呢?

精益思维可以回答这个问题:使用量化指标。一个衡量你的团队是如何交付有价值产品的有效方法是使用工作进度面积图(work-in-progress area chart),简称为 WIP 面积图。这是一个简单的图示,它显示了最小可销售特性是如何在你的价值链条中向前推进的。

如果你创建过一个价值流示意图,那么你就可以创建一个工作进度面积图,后者用于表示特性、产品和其他价值指标是如何经过价值流的每一个环节的。这种方法最适合于使用MMF,因为后者代表了最小的价值单位。

要点回顾:

  • 最小可销售特性是指团队可以交付的最小的“一块”价值或功能,比如一个用户故事或一个用户请求,就是最终可能进入产品所有者的积压工作表的东西。

  • 价值流示意图是一个可视化工具,它通过展示一个 MMF 的整个生命周期(包括每个阶段工作和等待的时间),来帮助精益团队看到其项目是如何进行的。

  • 理解问题的根本原因帮助你着眼全局;在这方面,五个为什么技巧十分有效。

  • 一个可以帮助你的团队做到尽快交付的有用工具是工作进度面积图,它是一个可视化工具,可以展示出 MMF 如何经过项目的整个价值流。

  • 有三种约束你的工作流的重要浪费:Muda(徒劳无益的事)、Mura(不均衡)和 Muri(不合理或不可能的事)。

现在就可以做的事:

  • 找出你项目中的所有 MMF。你们是如何管理它们的?你们是否将用户故事写在卡片或即时贴上,然后把它们贴在任务板上?还是在规格文档中对它们有独立的需求说明?找出一个较大的功能或故事,看你是否能把他分解成小块。

  •  在你的项目中寻找浪费。把你发现的 Muda、Mura 和 Muri 的例子写下来。

  • 从你的项目中那些已经完成的 MMF 中随便拿出来一个,给它制作一张价值流示意图。试试看能否让你们整个团队一起做这件事。然后为另外一个 MMF 也制作一个价值流示意图。这两个价值流之间有什么相似之处?又有哪些不同?

  • 找到你的团队经常碰到的一个瓶颈。(在这里价值流示意图会很有用)跟你的团队讨论一下,看看要在未来避免该瓶颈,你们可以做些什么。

  • 看一下你和你的团队目前承诺的交付日期。你们是不是真的作出了承诺?有没有其他的选项,可以交付一些不同的东西,但依然兑现你们的承诺?

教练技巧:

  • 软件团队中的大多数人以前没有遇到过给思维方式起名称的。

  • 精益思维最为困难的地方之一就是要对谈论浪费感到适应。不过就帮助团队学习发现浪费(尤其是对不合理、不可能这两种浪费)这一点来说,开个“批评会”还是有帮助的。

  • 要想让针对浪费的讨论保持一个正面的基调,你可以帮助团队成员找出下面这样一些情形:某一事项从“项目”的角度看是浪费,但对于“公司”来讲却是不可或缺的。

  • 作为教练,你工作的一个部分是避免开发团队与公司之间产生摩擦。

  • 另外一个保持正面积极氛围的方法是,帮助团队和经理两方把工作流程与该流程中的人区别开来

敏捷系列文章:

读《学习敏捷构建高效团队》笔记1

读《学习敏捷构建高效团队》笔记2

读《学习敏捷构建高效团队》笔记3

读《学习敏捷构建高效团队》笔记4

读《学习敏捷构建高效团队》笔记5

读《学习敏捷构建高效团队》笔记6

 

打造敏捷团队

看板方法-什么是看板方法

实施看板方法

我们怎样实施敏捷?

我们的站立会有问题!!!

谈谈code review

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
完整版:https://download.csdn.net/download/qq_27595745/89522468 【课程大纲】 1-1 什么是java 1-2 认识java语言 1-3 java平台的体系结构 1-4 java SE环境安装和配置 2-1 java程序简介 2-2 计算机中的程序 2-3 java程序 2-4 java类库组织结构和文档 2-5 java虚拟机简介 2-6 java的垃圾回收器 2-7 java上机练习 3-1 java语言基础入门 3-2 数据的分类 3-3 标识符、关键字和常量 3-4 运算符 3-5 表达式 3-6 顺序结构和选择结构 3-7 循环语句 3-8 跳转语句 3-9 MyEclipse工具介绍 3-10 java基础知识章节练习 4-1 一维数组 4-2 数组应用 4-3 多维数组 4-4 排序算法 4-5 增强for循环 4-6 数组和排序算法章节练习 5-0 抽象和封装 5-1 面向过程的设计思想 5-2 面向对象的设计思想 5-3 抽象 5-4 封装 5-5 属性 5-6 方法的定义 5-7 this关键字 5-8 javaBean 5-9 包 package 5-10 抽象和封装章节练习 6-0 继承和多态 6-1 继承 6-2 object类 6-3 多态 6-4 访问修饰符 6-5 static修饰符 6-6 final修饰符 6-7 abstract修饰符 6-8 接口 6-9 继承和多态 章节练习 7-1 面向对象的分析与设计简介 7-2 对象模型建立 7-3 类之间的关系 7-4 软件的可维护与复用设计原则 7-5 面向对象的设计与分析 章节练习 8-1 内部类与包装器 8-2 对象包装器 8-3 装箱和拆箱 8-4 练习题 9-1 常用类介绍 9-2 StringBuffer和String Builder类 9-3 Rintime类的使用 9-4 日期类简介 9-5 java程序国际化的实现 9-6 Random类和Math类 9-7 枚举 9-8 练习题 10-1 java异常处理 10-2 认识异常 10-3 使用try和catch捕获异常 10-4 使用throw和throws引发异常 10-5 finally关键字 10-6 getMessage和printStackTrace方法 10-7 异常分类 10-8 自定义异常类 10-9 练习题 11-1 Java集合框架和泛型机制 11-2 Collection接口 11-3 Set接口实现类 11-4 List接口实现类 11-5 Map接口 11-6 Collections类 11-7 泛型概述 11-8 练习题 12-1 多线程 12-2 线程的生命周期 12-3 线程的调度和优先级 12-4 线程的同步 12-5 集合类的同步问题 12-6 用Timer类调度任务 12-7 练习题 13-1 Java IO 13-2 Java IO原理 13-3 流类的结构 13-4 文件流 13-5 缓冲流 13-6 转换流 13-7 数据流 13-8 打印流 13-9 对象流 13-10 随机存取文件流 13-11 zip文件流 13-12 练习题 14-1 图形用户界面设计 14-2 事件处理机制 14-3 AWT常用组件 14-4 swing简介 14-5 可视化开发swing组件 14-6 声音的播放和处理 14-7 2D图形的绘制 14-8 练习题 15-1 反射 15-2 使用Java反射机制 15-3 反射与动态代理 15-4 练习题 16-1 Java标注 16-2 JDK内置的基本标注类型 16-3 自定义标注类型 16-4 对标注进行标注 16-5 利用反射获取标注信息 16-6 练习题 17-1 顶目实战1-单机版五子棋游戏 17-2 总体设计 17-3 代码实现 17-4 程序的运行与发布 17-5 手动生成可执行JAR文件 17-6 练习题 18-1 Java数据库编程 18-2 JDBC类和接口 18-3 JDBC操作SQL 18-4 JDBC基本示例 18-5 JDBC应用示例 18-6 练习题 19-1 。。。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值