【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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:003120

评论

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

百度交易中台之商品推广流程构建以及实现

百度Geek说

中台 软件架构 电商 交易

华为云薛浩:媒体业务进入全面云化时代,云原生成为必然选择

华为云开发者联盟

云原生 媒体 音视频 华为云

在数据库中如何查询表的创建时间?

华为云开发者联盟

数据库 日志 视图 GaussDB(DWS) 查找对象

DataWorks赋能企业一站式数据开发治理能力

阿里云大数据AI技术

腾讯二面:Linux操作系统里一个进程最多可以创建多少个线程?

白亦杨

我删库跑路失败了

程序员鱼皮

Java c++ Python Linux 服务器

底层技术支撑智慧出行,汽车智能化发展下区块链大放异彩

旺链科技

区块链产业

吹水、面试、进阶齐飞!Github霸榜的阿里分布式设计实录也太香了

Java架构师迁哥

【工作感悟】2021最值得加入的互联网公司有哪些

欢喜学安卓

android 程序员 面试 移动开发

一位年薪 180 万的蚂蚁金服大佬扔给我的笔记,建议看完

Java架构师迁哥

KDD CUP 2021首届图神经网络大赛放榜,百度飞桨PGL获得2金1银

百度大脑

神经网络 百度

RTC为何这么火?

anyRTC开发者

音视频 WebRTC RTC 实时通讯

【工作感悟】Android大厂高级面试题灵魂100问

欢喜学安卓

android 程序员 面试 移动开发

永续合约交易所开发,虚拟币合约交易系统源码

GitHub星标70K阿里大佬手写的Spring Boot实战手册

Java架构师迁哥

如何利用极狐GitLab CI提高生产力?

极狐GitLab

ci

Python 绑定:从 Python 调用 C 或 C++

华为云开发者联盟

c c++ Python 函数 Python 绑定

网安行业这几个熟悉又陌生的名词,啥帽子都清楚啦?

郑州埃文科技

并发王者课-铂金9:互通有无-Exchanger如何完成线程间的数据交换

MetaThoughts

Java 多线程 并发

统一缓存帝国 - 实战 Spring Cache

悟空聊架构

缓存 passjava 悟空聊架构 7月日更 Spring Cache

使用tar 命令进行文件的归档和压缩

学神来啦

云计算 Linux 运维 linux运维

什么?C语言也能try...catch!

实力程序员

HashMap从入门到精通,原创好文,值得收藏!

wljslmz

Java hashmap java8 HashMap底层原理

打造中国数字军人 数军科技携黑科技亮相军博会

科技热闻

拖延背后的故事

卢卡多多

拖延症 7月日更

4轮技术面+1轮HR面,成功拿到腾讯40k*16的Offer ,详解面试流程和真题解析

Java 程序员 架构 面试

金九银十面试必备,“全新”突击真题宝典,阿里腾讯字节都稳了

Java 编程 程序员 架构 面试

替换 Spring Cloud,使用基于 Cloud Native 的服务治理

火山引擎开发者社区

云原生 后端 Service Mesh 服务网格

银行业智能运维的探索与实践

云智慧AIOps社区

银行数字化转型 智能运维

Go 学习笔记之 数组

架构精进之路

Go 语言 7月日更

我还是没有忍住,于是乎我开通了lua语言学习专栏!

李阿柯

lua 专栏

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