HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

Skyscanner 数据文化的改进之道

作者:Ramsay Ashby, Laz Allen

  • 2023-05-22
    北京
  • 本文字数:4671 字

    阅读完需:约 15 分钟

Skyscanner 数据文化的改进之道

目前团队度量标准正流行:有很多公司提供工具来支持我们的敏捷实践,并且不乏支持各种度量标准组合价值的书籍,这些组合将引导我们的团队成为交付明星。在这篇文章中,我们将分享我们的旅程,从意识到这可以增强我们的竞争优势和表明需要改变的迹象开始。我们解释了为什么我们不只是选择部署了一个工具,而是将其视为改变我们工程管理的文化,以使其重视并利用这些指标来推动大规模的改进。


我们将解释我们在整个探索过程中对所需内容的理解是如何演变的,以及我们如何与团队一起进行试验以更好地理解这一点。我们还将分享我们对最重要指标的解释、我们受到的启发、以及我们期望如何增强这些指标。然后,我们将探讨我们在采用过程中发现的挑战、我们预测的挑战、以及我们如何改变计划以适应这些挑战。最后,这篇文章将审查我们为评估各种工具提供者而创建的价值,以找到我们认为能够帮助我们团队的价值。更重要的是,它可以加强文化变革,这是本次活动的基本目标。


在撰写本文时,Skyscanner 正在指导 85 个团队(约 700 名工程师)完成这一变革,我们已经看到了良好的采用率和洞察力,并创建了跨组织的实践社区来支持这一变革并将其纳入长期应用。我们将会讨论我们用来推动这一采用的原则。

探索指标


Skyscanner 是一个不断努力改进的组织,并且我们知道,随着周围机会的变化,我们需要不断适应。为此,我们需要不断加强我们的方法,以确保在各个层面上不断改进。我们已经使用数据来为我们的战略和日常产品开发决策提供信息,因此我们通过更深入地思考后者来实现前者是有意义的。随着 Accelerate、Agile Management 和 Project to Product 等工作的开展,这个领域已经成熟很久了,因此我们决定探索如何在整个组织中应用这些概念和实践。


追溯到大约十年前,Skyscanner 采用每六周发布一次的发布序列,并且对其整个单体代码库进行更新。通过这一序列,我们能很容易地了解在给定的时间段内我们能够发布多少“价值”,也能很容易德了解代码和工程组织的整体健康状况,因为它能很容易地比较一个版本和下一个版本的内容,以及预计发布的内容。


但是,在一个团队每天都可能多次部署变更的世界中,我们对构建新特性所需的时间并没有相同的隐式看法,因为每次部署通常只包含重要工作的一小部分。我们认识到,我们的 CI 和 CD 实践已经成熟到需要明确寻找一些曾经非常明显的信息的地步了。


我们知道,帮助我们的团队了解正确的度量标准将使他们能够识别并采取行动,对他们的合作方式进行最具影响力的改进。我们还认识到,在某些情况下,我们可以汇总这些指标,以确定组织范围内的改进。

选择指标


我们的出发点有两个。DORA指标已经作为一个概念在我们的工程组织中得到了很好的理解,因此我们有兴趣在我们的 85 个团队中探索如何更可持续、更一致地使用它们。这些指标得到合理的理解,有助于改进 DevOps 实践。也就是说,我们知道作为 DevOps 实践,我们需要的不仅仅是这些;集成和部署只占整个价值流的一小部分。此外,它们也是流程中最自动化的部分,并且通常需要在与其他价值流隔离的情况下进行优化。


因此,我们开始研究 Mik Kirsten 在《Project to Product》 一书中描述的流指标。这些指标引起了我们强烈的共鸣,这本书所描述的旅程也很合适我们。它们被称为流动时间、流动负荷、流动分布、流动效率和流动速度。


但当我们开始与试验组讨论这些指标时,我们发现新的新词汇增加了混乱,阻碍了采用。在软件行业中,“周期时间”和“进行中的工作”等术语已经广为人知,所以我们选择了坚持使用它们,以便对 Kersten 在书中使用的词汇进行更温和的学习。


我们采用的核心指标集是:

  • 史诗和故事的周期时间——端到端(包括所有计划、开发、测试、部署等)需要多长时间才能让一项工作投入到生产中

  • 进行中的工作——在任何给定的时间里,有多少并发工作项在团队的面板上处于任何“进行中”状态(即不是“要做”或“已完成”)

  • 等待时间——工作开始后,一项工作处于空闲状态的时间。等待代码审查所花的时间是该指标的最重要贡献因素之一

  • 工作分布(跨不同类别)——将每个工作项标记为“缺陷”、“债务”、“特性”或“风险”之一,并跟踪这些类别的总体分布(期望每个类别的健康组合)


我们最初的试验包括两个小组,让他们在 Excel 中手动获取这些指标,并在回顾中定期讨论这些指标。这使我们能够非常快速地证明我们可以推动团队交付进行有意义的改进。我们发现,仅通过限制进行中的工作和对团队工作方式的一些小调整,比如更好地确定代码审查的优先级,就可以史诗般地将周期时间缩短 37%以上,这远远超出了我们的预期。

评估工具


我们的出发点是,我们希望将所有的价值流和生产力指标放在同一个地方。在 Skyscanner,我们有很多工具,因此只引入一种新工具而不是多种非常重要。这也能使推广和沟通更加容易。


从那时起,我们开始审查可用的工具,并与构建这些工具的团队交流;一些关键的决定因素逐渐变得清晰了起来。


通过研究这些工具的基本理念,我们发现,有些工具是针对管理者、部门负责人和首席技术官的,而另一些工具则是对团队自身最有用的。这两种方式产生了截然不同的用户体验;产品看起来就不一样,通过外观你可以知道它们的主要目标受众。我们非常有把握地预测,一个没有被团队首先使用的工具也不会被我们的小组使用,而且一个没有被我们小组使用的工具也不会对其他人产生有意义的数据。因此,这个用例成为了我们的主要关注点。


我们还研究了工具对团队工作方式的“固执己见”程度。其中一些工具要求团队以定义的方式工作,以便产生有意义的数据,而其他工具则更能适应不同的工作方式。在 Skyscanner,我们鼓励团队调整并完善他们的工作方式以最好地满足他们的需求,因此我们不想引入一种强制执行某种约定的工具,即使数据最终会导致团队对其工作方式做出一些改变。


在经历了这个过程并试用了一些工具之后,我们决定使用 Plandek 来实际收集度量指标,并向我们的团队展示数据和洞察力。Plandek 的团队一直很出色,始终与我们合作,他们了解我们的需求,并为我们提供了相关建议,并且在某些情况下,还对产品进行了补充来帮助我们实现目标。

改变文化


这可能是我们投入最多精力的部分,因为我们认识到,任何失误都可能被误解为是我们站在别人的肩膀上瞭望,甚至更糟的是,使用这些旨在表明改进机会的指标是在衡量个人绩效。这两种情况中的任何一种都会对我们在 Skyscanner 中的工作方式造成强烈反抗,并会阻止项目的进展,甚至可能对项目的声誉造成不可逆转的损害。为此,我们制定了一个计划,重点是在引入工具之前与我们的工程负责人探讨,深入理解意图。


该计划侧重于一种基于军团领队的自下而上的推广方法。每个军团被设计为大约 6 或 7 名领队,由来自不同组、不同办公室和不同经验水平的人组成,涵盖我们所有的团队。小团体会增加责任感,因为在小团体中更难推脱,也会创造一个安全的地方,让人们可以分享他们的想法、经验和关注。我们还努力确保每个队中至少有一个人是我们所期望的团队度量的坚定拥护者,并且不超过一个人是我们所期望的后期采纳者或诋毁者。这意味着,每一个军团通常都会有强烈的积极前景,而集体建立负面情绪的风险微乎其微。


军团成员每 2-4 周会见面一次,在那里我们会带他们进行一些结构化学习——可能会解释某一特定指标的含义和为什么它是有用的,以及一些改进它的技巧——然后进行大量的讨论和知识分享。在会议期间,我们会鼓励人们尝试,将数据带回团队进行回顾讨论,等等,然后再将任何见解带回到下一次军团会议中。


虽然事后看来,我们对某些军团的确切组成做了一些小调整,其中一些支持者可能没有我们预期的那么强大,但总体而言,这种方法对我们来说非常有效,我们打算在未来的类似推广中仍遵循这种模式。随着我们在 2023 年第一季度(Q1)的进展,我们将重新平衡军团,以反映人们的不同理解水平,并使我们能够聘用新的管理人员。

成果


我们对大多数工程负责人的敬业度感到非常满意。Plandek 与我们分享的使用数据显示,大多数管理人员在一个季度中至少登录过一次,他们的定期参与程度很高。我们最敬业的团队成员设定了一个非常高的标准,每个季度可能会有几十个会话,这表明这样的团队数据是多么的吸引人。


有了这个,我们看到了组织各级对进行中的工作和周期时间的认识有所提高,并且获得了我们期望的结果;团队感到压力更小了,对工作量有了更多的控制,而且所有其他事情也做的非常棒。这些好处还没有完全渗透到对更广泛的交付图景的可见影响中,但这些事情需要时间,而且相对来说也很容易理解,所以我们很乐意耐心等待!


我们的一位领队指出:“清楚地了解周期时间还能让团队更加了解我们拆分工单的方式,并且工单的类型属于峰值型”。这是一个很好的例子,说明了对数据的了解自然会导致正确的(敏捷)改变,而无需对人们进行相关教育。


这一举措也有助于提高这些指标的知名度,使人们在不同的环境中自然而然地谈论它们,而无需任何提示。当团队在系统设计评审中要权衡选项时,将史诗般的周期时间视为一个考虑因素,这会很好。同样,我们的高管和高级领导团队也已经开始采用相同的词汇了,这既是一个好兆头,也进一步加快了采用速度。在此之前,这些只是概念;现在,它们是实实在在的措施,人们能够更好地理解它们,并且理解之后就会采取行动。

采用挑战


当然,这并非都是完美或容易的。两个最大的挑战是争夺人们的时间,以及人们的参与度是可变的。


首先,每个人都认为自己“很忙”;有些人,正如俗话所说,“忙得无暇改善”。这意味着将其定位为相对轻量级的东西,可以帮助他们腾出更多的空间来进行快速思考,这是当务之急。为此,我们通过削减仪表板来实现这一点,我们要求人们将指标降至我们认为是有用的绝对最小值。Plandek 有 30 多个不同的指标,但我们会及时了解更多。当人们开始探索我们开始研究的子集时,他们自然会开始尝试提供的其他见解。


其次,当我们与军团一起前进时,并非每个军团中的每个人都以相同的速度前进,这有时会导致不连贯的对话。如上所述,根据 2023 年第 1 季度的进展,我们将重新平衡军团,以使人们重新获得他们最受益的支持水平。我们仍然认为,从高度混合的军团开始是正确的做法,这样符合与监督无关的信息;现在,这已经得到了一定程度的证明,我们可以思考如何继续前进了。

收获


毫无疑问,我们最大的收获就是底层文化的提升是那么重要。从一开始,我们就意识到并明确表示,我们不想“推出一个工具”,而是围绕团队度量的“思考过程”。但只有在我们第一次验证了概念之后,我们才意识到,我们需要更深入地挖掘并关注基础,并将交付指标的概念构建到我们的文化中,就像我们在服务和产品指标方面所做的那样。


我们主要是通过明确我们所称之的措施(即不是“Plandek 推出”),然后在开始使用工具之前,先在军团会议上进行理论和探索性讨论。小而频繁的军团让人们对这些概念感到舒适。如果我们将其作为一种工具推出而不是作为文化变革来处理,我们本可以很容易地进行几次大型的一次性培训课程来“让人们开始使用工具”。


从那时起,这一切所花费的时间和精力都比我们想象的要多。让事情变得简单是有价值的;这并不是说要有很多指标和许多先进的使用方法,而是要让聪明的人理解其中的原因、价值,并为他们提供易于使用的工具,让他们有足够的理解来开始,然后支持他们,让他们分享他们的成功。


原文链接:

https://www.infoq.com/articles/Skyscanner-metrics-culture-improvement/


相关阅读:

迁移至云端:真的像看上去那样让人望而生畏吗?

InfoQ 2023 年趋势报告:事件驱动架构、深度学习和人工智能、云原生架构和容器化技术

平台工程的失败模式及如何避免,来自一线的宝贵经验


2023-05-22 08:003432

评论

发布
暂无评论
发现更多内容

小程序页面介绍

小恺

7月月更

leetcode 932. Beautiful Array 漂亮数组(中等)

okokabcd

LeetCode 分治 算法与数据结构

想要治好水,龙王也要拜拜这朵云

脑极体

Binder驱动

北洋

Andriod 7月月更

Qt | 定时器的使用 QTimer

YOLO.

定时器 qt 7月月更

【C#】System.Linq,万能的查询语句

萧然🐳

C# 7月月更 Linq

5G NR RRC协议总体介绍

柒号华仔

5G 7月月更

【C语言深度剖析】详解strlen与sizeof的区别及用法

Albert Edison

7月月更

怎样的工作要辞职呢?

KEY.L

7月月更

电商微服务

intelamd

Python Asyncio 初探:基本概念和模式

宇宙之一粟

Python asyncio 7月月更

Ark UI中的问题汇总【系列1】

坚果

Open HarmonyOS OpenHarmony Open Harmony 7月月更

初始Envoy项目

阿泽🧸

envoy 7月月更

OKALEIDO:我们为何如此看好多媒体NFT板块?

西柚子

如果设计业务微服务架构 - 作业

阿拉阿拉幽幽

【Python技能树共建】python selectolax 模块 & Python爬虫模拟登录

梦想橡皮擦

Python 爬虫 7月月更

浅尝了一下TypeScript,上头了!

为自己带盐

typescript 7月月更

应用上容器云的准入条件和最佳实践

穿过生命散发芬芳

7月月更 应用上云

模块六作业 - 拆分电商系统为微服务

Elvis FAN

Python 入门指南之输入和输出

海拥(haiyong.site)

7月月更

闭包

Jason199

js 闭包要点 闭包函数 7月月更

图解网络:什么是DHCP动态主机配置协议?

wljslmz

网络协议 DHCP 网络技术 7月月更

计算机操作系统之进程与线程

未见花闻

7月月更

拆分电商系统为微服务

joak

康威定律如何解释微服务的合理性

源字节1号

程序员 软件开发

Spring IOC

武师叔

7月月更

【愚公系列】2022年07月 Java教学课程 02-Java语言JRE和JDK

愚公搬代码

7月月更

spring篇之属性注入

邱学喆

spring 属性注入 @Autowired注入原理 @Resource注入原理 @Qualifier

《MySQL入门很轻松》第4章:数据表的创建修改删除

乌龟哥哥

7月月更

IoT物联网安全架构设计方案

明亮安全观

网络安全 IoT IoT安全

【问道】计算机er要掌握的计算机思维

小明Java问道之路

计算机体系结构 编译原理 计算机组成原理 汇编语言 7月月更

Skyscanner 数据文化的改进之道_软件工程_InfoQ精选文章