2022年5月31日

指导团队进行多技能开发

创建敏捷组织

第七篇博客,是关于即将出版的书的系列博客:创建敏捷组织——一种系统方法,塞萨尔里奥·拉莫斯和伊利亚·帕夫利琴科。

个人及团队表现

Scrum团队是多学科的,包含为用户提供价值的一整套技能和能力。在复杂的环境中,单一专业的工作负载通常是不均衡的,因此这样的团队非常容易受到瓶颈的影响。在不同的迭代中,特定专业的峰值负载可能有所不同。例如,在迭代N中,团队可能有业务分析技能的峰值工作负载,在Sprint N + 1中,它可能是测试。

约束理论意味着系统的性能将受到瓶颈的限制。如果没有对瓶颈进行更改,系统将不会得到改进。当瓶颈受到影响时,系统将发生变化(McKey, Zoe。系统思考:战略规划的艺术,有效解决问题)

注意,瓶颈决定了系统的吞吐量,花时间优化非瓶颈不会带来显著的好处。图1显示了如果每个人都配备了单独的性能策略,那么在迭代结束时典型的团队董事会可能是什么样子。

图1可视化流中的瓶颈

如您所见,此时的瓶颈是在测试中,因为最大的队列正好在它之前。如果这样的画面在团队中不断重复,那么测试就被认为是一个系统瓶颈。当团队的其他成员继续做更多的分析和编码任务时,这将使瓶颈更加过载。如果我们想优化系统性能,这是无意义的(次优化)。

换句话说,团队成员可以以牺牲团队绩效为代价,在他们孤立的专业知识上提高生产力。因此,在团队环境中使用最大化个人技能利用的策略并不是最优的。相反,创建一个团队,让其成员可以从事多种任务;一个由多技能人员组成的团队。

你能做些什么来帮助这些团队?

以下是一些对我们有用的指导方针:

  1. 可视化工作流程

可视化对于任何敏捷组织都是至关重要的,因为它可以展开队列并帮助优化工作流程。与装配线相比,在服务型企业中,库存是看不见的。它存储在硬件磁盘上,在办公室里走一走并不能让你了解到底产生了多少垃圾。

图2大量的半成品(在制品)

如果我们在指导一个团队的时候只可以做一件事,我们会将工作的流程可视化。作为示例,请参见图2。通过可视化工作流程,人们可以看到瓶颈并产生意识。

  1. 介绍一个StarMap

一个starmap是一个简单的能力矩阵,它可视化了特定团队的交叉功能。它揭示了知识的空白,揭示了潜在的瓶颈。表的行只是团队成员的列表,列包含交付价值所需的能力和技能(参见图3)。

图3例子StarMap

理想情况下,我们希望在每一列中看到两个或更多的星星。因为这样团队就会变得真正灵活,能够应对峰值负载。开始和点的组合也是一个很好的。如果我们发现没有星星的专栏,这是一个警钟。团队需要教练和协助;否则,他们在该技能的工作中可能会出现质量问题。但最成问题的那几列(除了书籍)没有指定名称,表明了对外部专业知识的依赖。依赖剥夺了团队的自主权,并阻止了价值的交付。依赖性阻碍了工作,显著增加了前置时间,从而降低了组织的灵活性。在我们的书中,我们介绍了一个初始化StarMap的研讨会,以及关于如何使用该工具的其他技巧。

  1. 使用三种开发模式

我们确信,在敏捷团队中,没有更好的方法来加强跨功能并同时减少在制品(WIP),而不是像图4所示并在下面的列表中描述的那样,持续地在三种模式中工作。

图1.6三种发展模式

  • 结对编程:成对并行地开发一个或多个特性。
  • 群集:一次只做一个功能(WIP = 1),没有结构,团队自我组织他们的工作。他们可以以几对或三合或任何其他方式工作。
  • Mob编程:在一个特性上连续工作,这是近年来越来越流行的一种技术。该团队正在使用一台电脑和一个大屏幕/投影仪一次完成一个功能。

Mobbing是一种单一的流程活动,从流程效率的角度来看,如果团队能够将交易成本降低到从开始到完成状态都能够在经济上可行的程度,那么这便是最有效的开发方式。

三种工作模式有很多优点。我们列出了其中的一些:

  • 这是在团队中实现多功能学习的最佳方式之一。
  • 不需要或很少需要额外的代码审查。
  • 信任增加,团队被迫学会协商和倾听不同的观点,以达成共识。
  • 没有信息转移或丢失。
  • 集体代码所有权。
  • 高质量的决策,每个人都知道发生了什么。
  • 完美的流程,团队一次只做一个功能——一件件流程(WIP = 1)。

这三种模式是如此违反直觉,需要大量的耐心和训练才能开始。为了确保你使用这三种模式的方法是成功的,我们在书中有一些指导方针。

  1. 引入松弛时间

充分利用不会带来更好的系统性能。在充分利用的情况下,没有空间吸收工作中的变化。让我们假设Sprint中出现了一个紧急bug;如果一个团队满负荷运转,他们就没有能力处理这个bug。在压力下,为了按时完成工作,团队可能会忽视编写测试,避免重构或创建任何其他形式的技术债务。

因此,我们推荐使用极限编程中描述的Slack Time实践。它是一个时间缓冲器,团队明确地在迭代中关联到意外工作和多功能学习。

一个松弛的任务是:

  • 帮助团队更有效地工作的有价值的任务
  • 一个任务可以立即推迟迭代而不会造成持久的损害。

Slack Time有多种形式,可以用于:

  • 读书俱乐部
  • 自主发现和探索时间
  • 向遗留代码添加测试
  • 偿还技术债务
  • 建筑设计
  • 参与实践社区(CoP)

总结

解决具有相互依赖任务的复杂问题(例如,一个特性)的工作很少在跨职能团队的人员中平均分配。解决方案是一个由多技能专家组成的团队。一个由多人才组成的团队遇到的瓶颈更少,因为他们可以帮助超负荷的团队成员,从而减少解决复杂的端到端问题的时间。该团队通过在三种首选模式下工作来培养多技能成员:结对、群体编程和持续群集。其他一些技术包括:StarMap,可视化工作流程,以及Slack Time。

在接下来的两篇博文中,我们将概述:

  • 大规模过渡到产品负责人
  • 紧急Framework-coaching方法
博客评论