技术文章 | 跟许峰老师读数字化好书之《Introduction to DAD》(下)

发布时间:2021-11-20

这里是DOM线上同学会第二季——跟许峰老师一起读数字化好书,本次是许峰老师领读的第7本书,这本书是由Mark Lines和Scott W. Ambler编写的《Introduction to Disciplined Agile Delivery 2nd Edition:A Small Agile Team’s Journey from Scrum to DevOps》,这本书也是PMI Disciplined Agile认证教材之一。在此之前我们已经完成了《独角兽项目》、《EXIN Lean IT Foundation教材》、《Accelerate》、《Better Value Sooner Safer Happier》、《Project to Product》和《IEEE Standard for DevOps》共六本书的领读(如下图所示)。

1.png

基于书籍《Introduction to DAD》和PMI Disciplined Agile官方网站的内容,本文章将DA和DAD的核心内容分享出来,当然关于DA更详细的内容以官方网站为准。

上篇请戳这里:技术文章 | 跟许峰老师读数字化好书之《Introduction to DAD》(上)

3 Disciplined Agile Delivery(DAD)介绍

3.1 DAD 简介

规范敏捷交付(DAD)是一种以人为本、学习导向、用于IT解决方案交付的混合敏捷方法,。它有一个风险-价值交付生命周期,是目标驱动的,是企业意识的,并且是可扩展的。DAD是Discipline DevOps层的一部分,Disciplined DevOps工作流如下图所示:

2.png

以下是你应该考虑采纳DAD的原因:

1) DAD接手了Scrum的工作。DAD描述了如何将所有敏捷技术结合在一起,定义一个完整的敏捷解决方案交付生命周期。与Scrum DAD不同的是,领导、角色和责任以及需求变更管理,DAD它还涉及到软件开发的其他重要方面,如架构、设计、测试、编程、文档、部署等等。

2) DAD是实用主义的。DA工具包提供了选择,而不是处方,使您能够根据团队所处的情况轻松地调整策略。为了有效地做到这一点,你需要了解面向过程的选择以及它们之间的权衡。DAD通过它的过程目标驱动方法明确地做出了这些选择。

3) DAD支持精益和敏捷的工作方式(WoW)。DAD支持多个交付生命周期,包括一个基于scrum的敏捷生命周期,一个基于看板的精益生命周期,两个连续交付生命周期,一个基于精益创业的探索性生命周期,以及一个项目“团队中的团队”生命周期。

4) DAD是基于经验主义的。DAD及DA工具包,调研了数百个组织所采用的经过验证的策略,描述了每个策略的优缺点,并提供了何时和何时不应用它们的指导。

5) DAD为敏捷扩展提供了坚实的基础。DAD以多种方式支持敏捷和精益技术的成功扩展。

6) DAD促进并超越了SAFe。DAD提供了SAFe所缺少的坚实的过程基础,实际上是对SAFe的补充。

7) DAD团队交付的是整体解决方案,而不仅仅是软件。DAD团队提供可消费的解决方案,包括软件、硬件更改、支持文档、改进的业务流程,甚至组织更改。

8) DAD是持续演进的。作为实践者,PMI一直在不断学习,学习和试验新的敏捷和精益策略。这些经验不断被应用于DAD的发展。

3.2 DAD过程目标(Process Goal)

3.2.1 什么过程目标(Process Goal)

规范敏捷(DA)工具包采用目标驱动的方法(有些人喜欢称之为能力驱动的方法,或是向量驱动的方法)。DA的目标驱动方法的目的是,它指导人们做出与过程相关的决策,在给定他们所面临的情况的背景下,定制和扩展敏捷策略,以实现他们想要的结果。

DAD总共包含24个过程目标,其中Inception阶段8个,Construction阶段5个,Transition阶段2个,剩余的9个是适用于整个生命周期的。

3.png

每个过程目标都由过程目标图描述(下图以过程目标“From Team”为例)。一个规范敏捷团队将考虑如何以反映他们所面临的情况的方式来实现每个目标。有时候目标很容易实现,例如,一个已建立的开发团队可能会发现他们不需要做任何其他事情来实现Form team的目标。不同的情况需要不同的方法。

3.jpg

DAD的目标驱动方法使DAD避免成为一种规定,因此比其他敏捷方法更灵活和更容易扩展。例如,Scrum规定了一种价值驱动的产品待办事项列表方法来管理需求,而DAD却说,在构建过程中,您的目标是处理变更的涉众需求。

3.2.2 目标导向方法的好处

书中提到,采用目标驱动的方法来描述DA工具包有几个基本的优点,如下:

1) 提供直接的过程改进指导。过程目标图使如何做出智能的过程决策变得非常清楚。过程目标图通过使您需要考虑的过程因素变得明确来实现这一点,它们指示了考虑处理每个因素的潜在策略/实践。

2) 提高回顾的效率。在回顾过程中,您的团队可能会发现它需要改进探索需求的方法,或者与其他团队协调,或者改进他们工作的质量。

3) 实现有效的战术扩展。DA为从战术上扩展敏捷方法提供了基础。敏捷伸缩的一个重要部分是调整您的策略,以反映您所面临的伸缩因素的现实情况。

4) 使您的过程选项非常清楚。过程目标图非常清楚地表明,在调整工作方式(WoW)以满足团队所面临的情况的独特需求时,您需要考虑什么。

5) 从扩展敏捷方法中去掉了猜测。目标图清楚地表明,您有一系列可用的选项,而规范敏捷浏览器提供了上下文敏感的建议来支持这些图。

6) 明确你所承担的风险。通过使您的流程决策选项清晰,并描述与这些选项相关的权衡,DA清楚地说明了您所承担的风险。

7)促进过程评估。许多团队都对回答“我们做得怎么样?”这个问题很感兴趣。过程目标图提供了简单和全面的“查找图”,团队可以据此评估它的工作情况。


3.2.3 关于过程目标图的重要概念

在使用过程目标图的适合,由几个重要概念需要特别注意:

1) 还有更多的选择。尽管目标图为您提供了可用选项的良好表示,但每天总是有更多的策略和实践被确定。DA工具包会随着时间的推移而发展,正如您所期望的那样。

2) 每种选择都有利弊。没有所谓的最佳实践。每一种做法都有优点和缺点。每一种实践在某些情况下都很有效,而在另一些情况下则非常糟糕。

3) 有些选择通常比其他的好。当选项列表的左边有一个箭头时,它表明从敏捷的角度来看,列表顶部的选项通常比底部的选项更有效。通过包含一系列选项,DA工具包不仅帮助团队理解他们有选择,而且还帮助团队理解他们可能有比当前选择的更好的可用策略。

4)潜在的起始点用粗体显示。我们认识到最初的目标图可能会有点让人不知所措。为了帮助解决这个问题,我们指出了面向那些发现自己处于相当直接的情况下的团队的潜在起点。

3.2.4 如何阅读过程目标图(Process Diagram)

4.png


如上图所示,每个过程目标图都包含过程目标(Process Goal)、决策点(Decision Point)、选项(Option)、默认选项(Default Option)、有序的选项列表(Ordered option list)和无序的选项列表(Unordered option lists)。

1) 过程目标(Process Goal):过程目标在图表左侧使用圆角矩形表示。

2) 决策点(Decision Point):决策点表示为一个正方形矩形,每个过程目标有两个或多个决策点。决策点是您需要考虑处理的意图。您可以选择不处理某些决策点,但至少应该考虑它们。

3) 选项(Option):一个选项是一种方法,如实践或策略。每个决策点都有几个潜在的选项,这些选项显示在决策点的右侧。

4) 默认选项(Default Option):“默认选项”用粗体斜体表示。对于处理相对简单的领域问题的团队来说,这些是建议的起点。如果这不是您的情况,那么默认选项可能不适合您。

5) 有序的选项列表(Ordered option list):这些选项列表由列表左侧的向上箭头指示。这表明,从敏捷和精益思想的角度来看,出现在列表顶部的选项更可取,而不那么可取的选项则位于列表底部。有序选项列表为给定决策点提供了清晰的改进选项。

6)无序的选项列表(Unordered option lists):一个左侧没有箭头的选项列表。虽然每种选择都有其优点和缺点,但我们不能说某些选择通常比其他选择更有效。从无序列表中选择几个选项是很常见的。

3.3 DAD团队角色

DAD工具包为敏捷解决方案交付提供了一组角色。角色分为两大类:主要角色(Primary Roles)和支持角色(Supporting Roles)。

5.png

1) 主要角色(Primary roles):无论团队所面临的规模如何,这些角色在DAD团队中很常见。

a) 利益相关着(Stackholder):利益相关者是那些受到解决方案结果实质性影响的人。相关利益者可以是直接的用户,间接的用户,用户的经理,高级经理,运营员工成员,资助项目的赞助人和审计员等。

b) 团队成员(Team Member):团队成员的角色着重于为涉众产生实际的解决方案。

c) 团队领导(Team Lead):自组织团队的一个重要方面是,团队领导促进或指导团队执行技术管理活动。团队领导是团队的仆人式领导,创造并维持团队成功的条件。

d) 产品负责人(Product Owner):产品负责人是团队中代表“客户之声”的人。他或她代表了涉众社区对敏捷交付团队的需求和愿望。

e) 架构负责人(Architecture Owner):架构师负责人是为团队拥有体系结构决策并促进整体解决方案设计的创建和发展的人。

2) 支持角色(Supporting roles):这些角色通常是临时填补的,以解决可伸缩性问题。

a) 专家(Specialist):尽管大多数敏捷团队成员都是泛化专家,但有时,特别是在规模较大的情况下,专家还是需要的。比如,在大型团队或复杂领域中,可能会有一名或多名敏捷业务分析师加入团队,帮助您探索正在构建的内容的需求。

b) 领域专家(Domain Expert):产品负责人有时会引入领域专家与团队一起工作,例如,一位税务专家来解释需求的细节,或者是发起人执行人员来解释项目的远景。

c) 技术专家(Technical Expert):技术专家根据需要临时加入,以帮助团队克服困难的问题,并将他们的技能转移给团队中的一个或多个开发人员。

d) 独立测试人员(Independent Tester):这个独立的测试团队通常需要在复杂领域、使用复杂技术或解决法规遵从性问题的大规模情况下实现敏捷性。

e)整合者(Integrator):整合者经常与独立的测试团队紧密合作(如果有的话),在整个项目中定期执行系统集成测试。这种整合者角色通常只在复杂的技术解决方案中大规模使用。

3.4 DAD生命周期(Delivery Lifecycles)

DAD的重点是交付,尽管也讨论了系统生命周期的其他方面如何影响交付生命周期。正如你在下图中所看到的,一个完整的系统/产品生命周期从产品的最初想法到产品,经过了交付,运维和支持,并且在交付生命周期通常有许多迭代。

6.png

上图指出了DAD项目团队(DAD产品团队通常不分阶段工作)关注的三个阶段,以及Disciplined DevOps关注的阶段。DAD部分包含三个阶段:Inception、Construction和Transition。

DAD,因为它不是规定性的,并且努力尽可能地反映现实,DAD提供了支持交付生命周期的6个版本。

1)The Agile life cycle:这个项目的生命周期是基于Scrum的,但经过了扩展,以便提供一个端到端的流线型的策略。

7.png

2)The Lean life cycle:这个项目生命周期是基于看板的。

8.png

3)The Continuous Delivery: Agile lifecycle:这是基于Scrum的现代敏捷、稳定的团队生命周期。这与“Agile lifecycle”的关键区别在于,持续交付生命周期的结果是在每次迭代结束时发布新功能,而不是在一组迭代之后。

9.png

4)The Continuous Delivery: Lean life cycle:这是基于看板的现代敏捷、稳定的团队生命周期。

10.png

5)The Exploratory/Lean Startup life cycle:这个生命周期是基于精益创业战略。

11.png

6)Program life cycle:这个生命周期是一个团队的团队。

12.png

3.5 持续改进方法(GCI)

敏捷的基本哲学是团队应该拥有自己的过程,或者,就像我们喜欢在DA中说的那样,团队应该选择自己的工作方式(WoW)。说起来容易做起来难。挑战在于,每个团队都是独一无二的,面对的是独一无二的情况——换句话说,环境很重要。此外,没有“最佳实践”,相反,每个实践都有权衡,在某些情况下很好,在其他情况下很差。更糟糕的是,在您实际在环境中试用它之前,您真的不知道该技术对您是否有效。为此,DA提供了一个方法 Guided Continuous Improvement (GCI)的持续改进方法。

13.png

GCI基于一个经过验证的精益战略,团队通过对他们的WoW进行小的改变来随着时间的推移而改进。这个策略有不同的版本,包括Gemba Kaizen和Plan-Do-Study-Act (PDSA)。

以上是基于《Introduction to DAD》书籍,结合PMI DA官网整理出来的DA和DAD框架的相关内容,希望对各位有所帮助。由于时间和个人经验原因,如有翻译或描述不准确的请以PMI DA官方材料为准。

许峰老师介绍

许峰

中国首位EXIN授权的全体系数字化转型官

历任世界500强技术及管理职务

前文思海辉 副总裁

香港大学中国商学院(ICB)客座讲师

威尔士大学 计算机科学 硕士

Copyright © 2020 All Rights Reseverd Designed by 5thspace.net      备案号:沪ICP备15017019号-1