写点什么

Spotify 的大规模实验

  • 2016-12-21
  • 本文字数:2196 字

    阅读完需:约 7 分钟

Spotify 的实验主管 Ben Dressler 认为,要扩大 A/B 测试的规模以便同时进行大量的实验,就需要调整流程和平台,这也可能影响企业文化。使用对照实验进行产品研究有助于审视我们对客户实际使用产品方式的设想,检查这些设想是否真的影响用户行为。

Dressler 说道,绝大多数时候,用户同时参与几个 A/B 测试是没有问题的,因为随机分配会将影响均摊到测试组中。但是,如果我们给用户造成了相互冲突的体验,这就有问题了,例如在一个测试中使用白色字体,而在另一个测试中使用白色背景。

Dressler 在 2016 年 GOTO Berlin 大会上作了关于构建Spotify 的实验文化的发言。InfoQ 对大会进行了报导,并提供了大会相关的问答、内容总结和文章。

InfoQ 在 Dressler 发言后采访了他,讨论了公司应该进行实验的原因、扩展 A/B 测试的方法以及当人们怀疑 A/B 测试时我们能做什么。

InfoQ:公司为什么应该进行实验?

Ben Dressler:多数公司和机构都努力影响某个成果。在像 Spotify 这样的产品驱动的机构中,这些成果通常就是一套业务度量标准,基于大量的发生特定动作的客户,如购买东西或者继续使用产品。通常员工会有一些关于最好实现该目的的方法的创意。收集大量高质量的关于这些顾客的数据是一个很好的方式,它能促进我们理解哪些因素促使这些关键行为更可能发生,哪些使其更不可能发生。但是不进行对照实验,我们不可能知道我们的动作,如发布新特性,是否真的引起这些行为发生改变,也不会知道它是否纯粹是一种相关性,在该特性上投入更多的资源是否有回报。

虽然 A/B 测试被公认为一个纯粹的网站优化工具,但是它本质上是用现实审视我们创意的工具,检查我们的创意是否和我们预期的一样。

InfoQ:怎样扩展 A/B 测试呢?

Dressler: 扩展 A/B 测试的数量依赖于几点:测试执行的速度、受众数量和每个用户的可运行测试数。既然受众数量通常是固定的,我们只能给每个用户运行更多的测试以及让测试执行得快一点。在这个阶段,如果我们没有足够简化流程,通常发生的问题就是团队的技术和流程负担。如果我们有一个应用需要硬编码每一次变更,我们就会遇到应用发布周期的瓶颈。工程师和设计师需要接受不完美测试的事实。一个好的办法是挑几组带头这样做,然后弄清要推广到所有组,我们需要对平台和流程做那些修改。

给每个用户运行更多测试意味着实验会发生潜在的冲突,造成糟糕的用户体验。如果一个组测试将所有字体改成白色,另一组将所有背景改为白色,参与了两组测试的人就没办法使用这个产品了。还有其它不同的解决办法,但是值得指出的是,多数时候一次参与多个测试的用户是可以的。因为用户是随机分配到测试组的,所有测试组中受影响的用户数应该是均匀的。A/B 测试只关注各组的区别,所以如果所有人都受到相同影响,结果不会被扰乱。

InfoQ:你能举一个实验的例子吗?

Dressler:不久前我们在研究中发现了一些规律,让我们意识到我们在 Spotify 浏览导航方面似乎错过了一些机会。我们形成了一个想法,通过简化我们的应用程序导航,我们可能能够让新用户更好地了解他们可以在 Spotify 做什么,从而增加他们留在平台上的机会。

按照传统思维,我们会马上进入设计冲刺,做一些用户测试,然后最终无论我们做出了什么,都会发布出去。然而,我们的设计师事实上确实领导负责了一些早期探索,我们才能迅速投入到第一轮 A/B 测试。一个测试检查改变导航 UI(并且仅仅 UI),而另一个测试改变信息架构(分类标签和结构)。这些经验并不完美,目的也绝不是要将它们推行到更广大的受众。我们关心的是使用它能否真的影响用户行为。如果根本的改变都无法带来更高的点击率,我们很可能不会在该创意上投入更多资源。然而,结果表明我们正在改变一些测试组中用户的行为,这个改变是我们想看到的。以这种方式建立了信心,我们就继续探索小样本用户测试中的不同设计原型,以排除变化,并快速收集大量相关经验。直到这时,我们才进行更传统的 A/B 优化,以达到我们最终向用户发布最好的版本。

InfoQ:你想对怀疑 A/B 测试的人说些什么?

Dressler:首先,我想说对实验怀着敬畏之心是好的。复杂的工程和高级的统计数据掺杂在一起的时候,就很容易犯错误。当构建许多版本和运行统计测试的时候,开发流程和数据收集的不足会被放大。A/B 测试是进行产品研究非常有力的工具之一,它需要专业的知识,可能需要改变流程和文化。在这过程中,我们很可能遇到一些问题。

那就是说,实验也很强大,拥有无限潜力,而不仅仅是消除几次点击。如果我们处理得当,运行一些灵活的实验,我们就能避免在错误的主意上浪费大量资源,尽早收集关键信息消除大型工程的风险,或者通过测试许多小主意,激励行之有效的主意进行自下而上的创新。至于速度,只需要想想这个:如果方向跑错了,200 英里每小时也快不到哪去。

我想鼓励所有人尝试实验。在几百年的处理错误实验和不完美测量的过程中,科学给了我们一些良好的应对机制:重新运行测试,检查结果是否能重现,成立互相检查的社区,在实践和底层工具的基础上不断迭代。最重要的是,要注意没有绝对的确定性。 基于不完全信息做出决策将始终是产品经理的工作,实验不过是有助于这项工作的有力工具。

查看英文原文: Large Scale Experimentation at Spotify


感谢薛命灯对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-12-21 18:001296
用户头像

发布了 33 篇内容, 共 11.3 次阅读, 收获喜欢 10 次。

关注

评论

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

PyQt5 实现可空值的 QDateTimeEdit

一代咩神

Python PyQt QDateTimeEdit

灵魂拷问:后端业务开发要会用 K8s 到什么程度?

阿里巴巴云原生

容器 运维 云原生 k8s 存储

Flink+Clickhouse构建实时数仓的最佳实践

Wping

大数据 flink 实时数仓 Clickhouse

百信银行基于 Apache Hudi 实时数据湖演进方案

Apache Flink

大数据 flink

test1

靠谱哥

音视频实战(6)- RTSP媒体协议流的录制方案及其覆盖策略详解

liuzhen007

音视频 5月日更 签约计划第二季

KubeVela + KEDA:为应用带来“与生俱来”的弹性伸缩能力

阿里巴巴云原生

容器 开发者 云原生 监控 中间件

抱歉,“行业毒瘤”这个锅,低/无代码不背

陈思

低代码 无代码 低代码平台 无代码平台

这个好用的分布式应用配置中心,我们把它开源了

百度Geek说

分布式 大前端 服务器

iOS 面试策略之语言工具-Xcode使用

iOSer

ios xcode 语言 & 开发

华为云官网负责人明哥:我们是如何做到门面不倒,8个月挑战业界翘楚?

华为云开发者联盟

JavaScript node.js Serverless 云原生 大前端

SpringBoot技术专题—来看看异步处理返回方案

洛神灬殇

Java WebAsyncTask 5月日更 AsyncContext DeferredResult

微服务转型系列4:理念指导实践,厘清微服务建设的主要内容和顺序

BoCloud博云

微服务

单片机I/O控制方式(UART中断和DMA中断的区别)

不脱发的程序猿

嵌入式 单片机 GPIO的原理、特性 单片机I/O设备的控制方式

【死磕JVM】用Arthas排查JVM内存 真爽!我从小用到大

牧小农

JVM

Java开发5年,我为什么选择从蚂蚁金服离职?浅谈经历和经验!

Java架构追梦

Java 架构 面试 蚂蚁金服 经历分享

音视频在智能手表上的应用

anyRTC开发者

音视频 WebRTC IoT RTC

Fluid 进入 CNCF Sandbox,加速大数据和 AI 应用拥抱云原生

阿里巴巴云原生

人工智能 容器 云原生 调度 弹性计算

真实的DevOps落地,应该是这样的 ↓

BoCloud博云

DevOps 敏捷开发

双非渣硕,是如何拿到苏宁、阿里的offer的?(分享学习心得)

Java 程序员 架构 面试

SecSolar:为代码“捉虫”,让你能更专心写代码

华为云开发者联盟

代码 华为云 CloudIDE 代码安全检测 SecSolar

Nginx性能分析之gpreftools

运维研习社

nginx 性能分析 5月日更

华为中国生态大会2021举行在即,GaussDB将重磅发布5大解决方案

华为云开发者联盟

数据库 opengauss 华为云 GaussDB 云数据库

聊聊人像抠图背后的算法技术

华为云开发者联盟

hilens 抠图 工程 抠图算法 baseline

参照STM32时钟树配置STM32CubeMX Clock Configuration(STM32L011G4U6为例)

不脱发的程序猿

单片机 STM32微控制器 时钟树 STM32CubeMX STM32时钟配置

python str模块

若尘

Python编程 str 5月日更

GitHub开源:狗屁不通文章生成器

不脱发的程序猿

GitHub 开源 狗屁不通文章生成器

Golang command source code

escray

学习 极客时间 Go 语言 5月日更

雀食蟀!Java Netty实战入门

北游学Java

Java Netty 网络 框架

51CTO熊平:HarmonyOS是大势所趋

科技汇

🕋【Redis干货领域】彻底走进主从架构的世界(入门篇)

洛神灬殇

主从同步 Redis 核心技术与实战 5月日更 Redis系列专题 原理篇

Spotify的大规模实验_文化 & 方法_Ben Linders_InfoQ精选文章