内 容 简 介
本书作者从事软件开发多年,善于吸取敏捷和精益这两种开发方法的精髓,对看板的理解和应用具有实用而丰富的经验。他在本书中依托精益开发中的主流工具,介绍了看板的概念、遵循的基本原则、看板的适用范围和具体使用等。
精益软件开发是当下软件开发项目的主流。看板可以使得精益理念落实并贯穿于整个开发流程,从而提高应变能力、减少无谓的资源及时间浪费、完全发挥团队的开发效能。本书适合所有软件从业人员(从项目经理到工程师)阅读,可以帮助他们从容应对千变万化的客户需求。
前 言
精益软件开发不同于一般的敏捷开发方法,它是属于文化层面的改革,它没有特定的方法或流程,有的只是产品开发的概念及原则,非常适合主管层级的敏捷开发思想。精益软件开发没有具体的开发方法,它只有指导原则,乍看之下很像励志的书籍,但它的影响却远远胜过所有的开发方法,因为它将直接影响企业的文化,这一点就比其他开发方法的影响要深远多了。无需讶异它的威力,因为它来自丰田产品系统 TPS(Toyota Production System)。
“精益软件开发”没有规定实务性的做法,而是描述了更重要的实际流程定义、原则及价值观。原因是它一直认为很难有一种方法能够完全做到“敏捷”,而“原则”则具有较高的普遍性,因此一直到波彭迪克夫妇(Mary 和 Tom Poppendieck)的《精益软件开发工具》(Lean Software Development:An Agile Toolkit)一书出版,才有了比较明确的七大原则,就是我们所熟悉的消除浪费、增强学习、尽量延迟决策、尽快交付、授权团队、嵌入完整性、着眼整体等精益软件开发的七原则。
本书要描述的是在精益软件开发里独树一格的“广告牌方法”(Kanban Method),它是 2005 年由安德森(David J. Anderson)所创的一种渐进式的流程控制方法,它所依据的正是这七大精益原则。我把精益软件原则的说明放在开始的第一章,是希望读者能“由头到尾”体验在真实的情境下,如何依据这七个原则来做决定,让它成为你实施精益软件开发时的宗旨,而不至于失去敏捷的初衷。
真正引起我想写这本书的原因是,因为 Scrum 在迭代的任务板(Task board)上描述得太少了,实施 Scrum 的团队往往没有把任务板上的字段跟实际开发时的工作流程做正确的对照,以至于常常有各说各话的现象,也就是说任务板没有反应出正确的状况。当第一次看到广告牌方法的时候,我就立刻在自己所教的 Scrum 课程中将实施广告牌的方法隐含进来。说真的,这两个理论真是契合,我常常在课程中完全不提到广告牌方法,只是采用它绘制价值流程及半成品限额的理论,就成功地让广告牌方法运用在 Scrum 的开发流程中,学员们可能从头到尾都没有意识到我们正在实行广告牌方法。这一点果然如安德森所言,它是一种渐进式的改革方法没错!而且,实行广告牌方法所受到的阻力要比实施其他敏捷方法少很多,而且成效更佳,如果你怀疑的话,欢迎你继续往后看。
李智桦
目 录第1章 精益软件开发 11-1 精益的由来 21-2 精益软件开发 31-3 精益软件开发七大原则 51-3-1 消除浪费(Eliminate waste) 51-3-2 增强学习(Amplify learning) 111-3-3 尽量延迟决策(Decide as late as possible) 141-3-4 尽快交付(Deliver as fast as possible) 171-3-5 授权团队(Empower the team) 201-3-6 嵌入完整性(Build integrity in) 221-3-7 着眼整体(See the whole) 251-4 结论 27第2章 看板方法 292-1 看板的由来 302-2 何为“看板方法” 302-3 看板方法四大基本原则(Foundational Principles) 322-3-1 原则1:从既有的流程开始 322-3-2 原则2:同意持续增量、渐进的变化 342-3-3 原则3:尊重当前的流程、角色、职责和头衔 362-3-4 原则4:鼓励在各个层级上发挥务实性领导行为 372-3-5 四大基本原则的意义 382-4 为何要使用看板方法 392-5 哪些地方可以运用看板方法 452-6 结论 48第3章 看板方法的六大核心实践 493-1 可视化目前的工作流程 503-2 限制半成品(WIP)数量 583-2-1 利特尔法则 593-2-2 多任务是不好的?看板方法如何处理多任务 613-2-3 怎么样的数值才会让人满意呢 633-2-4 根据请求的多寡分配产能 643-3 管理工作流程 653-4 让规则明确 693-5 落实反馈循环 713-6 由协作改善,经实验演进 723-7 结论 75第4章 如何实施看板方法 794-1 看板墙的设计 804-1-1 三个基本元素 804-1-2 顺序处理状态 VS. 并行处理状态 814-1-3 工作项目的属性 844-1-4 加入 WIP 限额 864-2 Scrum 运作模式的看板墙设计 914-2-1 将看板方法融入 Scrum 的开发过程 914-2-2 在 Scrum 中运用看板 924-3 看板一日游 944-3-1 看板一日游 1/12 说明 944-3-2 看板一日游 2/12 说明 964-3-3 看板一日游 3/12 说明 984-3-4 看板一日游 4/12 说明 994-3-5 看板一日游 5/12 说明 994-3-6 看板一日游 6/12 说明 1004-3-7 看板一日游 7/12 说明 1014-3-8 看板一日游 8/12 说明 1024-3-9 看板一日游 9/12 说明 1034-3-10 看板一日游 10/12 说明 1034-3-11 看板一日游 11/12 说明 1044-3-12 看板一日游 12/12 说明 1054-4 运行看板方法的简单规范 1064-5 结论 111第5章 个人看板:类项目管理 1135-1 个人看板 1145-2 制作第一个个人看板 1155-2-1 可视化 1165-2-2 设定 WIP 限额 1195-2-3 看板管理:开始运行拉动系统 1205-3 个人看板与软件开发:类项目管理 1245-3-1 项目的范围 1245-3-2 建立个人看板 1255-3-3 个人看板一日游 1275-3-4 另类的个人看板 1375-4 结论 140第6章 个人看板与生活:让生活与工作相得益彰 1436-1 开始使用看板 1446-2 生活与效能 1486-2-1 消除浪费 1496-2-2 梦想与目标 1506-3 个人看板进阶 1566-4 结论 157第7章 预测未来:减少变异性,增加可预测度 1617-1 系统思考 1637-2 内部变异 1677-3 外部变异 1747-4 结论 177第8章 持续改进 1798-1 看板方法的问题管理 1818-2 运用看板方法自然形成简单的团体规范 1838-3 没有银弹(No Silver Bullet) 186附录 189附录A 精益咖啡 190附录B Scrum But 和 Kanban But 194附录C 用户故事图谱:对付需求模糊的好帮手 199附录D 敏捷开发需要哪些文件 203