程序员如何锻炼数据思维?(附数据指标记分牌)
作者 沈佳伟 哔哩哔哩会员购架构师
业务是一门生意
程序员们时时刻刻在与业务打交道,良好的数据思维是我们职业成长道路上不可或缺的一项重要技能。
然而「人人并不都是产品经理」,技术赋能首先需要理解自己业务数据,否则一切口号都不过是空谈。业务是一门生意,如何读懂这门生意,就需要对业务所处行业的数据指标及其解读方法有充分的了理解。
本文通过一些浅显易懂的数据指标分析方法,帮助程序员们读懂自己为之赋能的那门「生意」。
无法衡量的东西,也就无法管理
理解自己的「生意」离不开对关键数据指标的跟踪,而不同业务形态(商业模式)的关键数据指标五花八门。如何从不计其数的「有用」数据中挑选能够提供业务价值的「灵感之源」是我们锻炼数据思维的必修课。 数据指标的质量对理解业务至关重要
一、好的数据指标是比较性的。
比如可以比较某业务数据在不同的时间段,用户群体,竞争产品之间的表现。有时产品在评价某个需求的成果时,经常会和我们说,「(这个需求使)本周转化率提升至2%」,乍一听觉得怪怪的,好像并没有什么不对的地方,但如果从更深层次的数据洞察视角出发,「本周转换率比上周高X」会更有意义。
如果你的业务是一门持续增长的「生意」,那么比较性的数据指标会让你更好的衡量自己的成(代)果(码)。
二、好的数据指标是简单易懂的。
如果我们不能很容易地记住或讨论某个指标,那么通过它来改变业务现状是十分困难的。
举个例子,前段时间和运营小伙伴讨论一个「自定义」数据指标算法。过程是需要从一堆数据里求出平均值,然后先这样再那样倒腾出一个我们称之为「间隔」的中间值,然后再那样后这样取出一个最后我们也不知道怎么称呼的「数据指标」。姑且不讨论过程的正确性,光从简单易懂的角度来看就很难为之后的业务行动提供指导依据。
三、好的数据指标是一个比率,比如市盈率,销售利润率等。
比率之所以是最佳数据指标原因包括:
比率的可操作性强,可以做为今后业务行动的向导。以开车为例,里程只是距离信息,而速度(距离/小时)才具有可操作性,它告诉你当前行驶状态以及是否需要调整速度确保准时抵达。 比率是天生的比较性指标。再以开车为例,速度是一个数据指标,可通过将当前速度与最近一小时的平均速度进行比较才能确知是在加速还是在减速。 比率适用于比较各种因素间的相生相克(正关系,负关系)。还是以开车为例,单位时间内行驶的里程/罚单数比率显示了两者的关联性,开的越快行驶里程越多,收到的罚单也越多。
四、好的数据指标指导改变业务行为。
这是极其重要的判定标准,做与不做的准绳,随着指标的变化,业务是否会采取相应的措施?
比如把网站基色调整为粉色可以带来更多营收,那么就应该把它换做粉色。如果半数以上反馈表明用户不会为某功能付费,那么就不应该开发此功能。如果悉心打造的 MVP 不能将订单提高 10%,那么就换其他方法。
程序员们天天面对着五花八门的业务需求,每一个需求都是一次锻炼业务思维的机会:
这个改(需)动(求)会影响到哪个数据指标?这个数据指标是否具有可比性(和谁比,怎么比)?这个数据指标解释起来是不是清晰易懂,是不是和业务的诉求方理解一致?这个数据指标是不是一个比率值?这个数据指标的如果产生变化如何指引下一次迭代? 数据指标的类型对解释业务至关重要
一、定性与量化
这两兄弟就如同产品经理和程序员一样相爱相杀。
定性指标通常为非结构化,经验性的,揭示性的,难以归类的(比如产品视角的定性洞察)。量化指标则涉及很多数值和统计数据,提供可靠的量化结果,但缺乏直观洞察(比如技术视角的定量分析)。
两者本身并没有对错,都是从不同的视角去观察业务。
定量数据排除主观因素,定性数据吸纳主观因。定性回答「为什么」,定量回答「什么」和「多少」(好比人提供灵感,代码负责验证)。程序员们大多乐于量化分析而不善于定性洞察,而优秀的数据思维通常脱胎于定性观察,并通过定量试验加以佐证。
二、虚荣与可付诸行动
虚荣指标通常看上去很「美」,却不能对业务带来丝毫改变,但往往我们又沉迷于此。而可付诸行动的指标则可以指导业务行为(比如作为下一次迭代方案的数据支撑)。
举几个常见虚荣指标的例子:
总注册用户数,这个数字随时间增长单调递增,并不能传达用户信息,什么也指导不了。 如果业务场景可点击的东西很多,CTR(点击通过率)通常会很高,但这好像并不能解释某些问题,也许统计点击人数会更有帮助? 现在有10个PV,但无法探查是1人访问10次,还是10个人访问1次,那么即使PV与业务挂钩(如广告业务)也应该使用访问人数作为数据指标。 UV有时很有用,但只能表示多少人访问应用,并不能告知这些人在页面上做什么,为什么停留,为什么离开。 停留时间与浏览页数并不能替代参与度与活跃度,比如说客户在投诉页面上停留了很久呢? 那么可付诸行动的指标又是什么?比如活跃用户占总用户数的百分比,它通过一个可进行比较的比率值揭示了用户的参与度。如果以此为依据对业务进行迭代并且产生了效果则该指标就应该上升,是一个可指引业务迭代的数据指标。
三、探索性与报告性
探索性指标是推测性的,提供原本不为所知的洞见,帮助业务在竞争中取得先手优势。
报告性指标则用于对日常运营,管理性活动保持信息通畅,步调一致。运营赋能类需求通常可以从报告性指标中获取反馈并加以迭代(比如订单出库率,工单完成率等),增长类需求则需要从探索性数据指标中进行摸索(并需要加以试验) 。
四、先见性与后见性
先见性指标用于预言未来,后见性指标用于解释过去。
先见性指标:比如「销售漏斗」中现有的潜在客户数量,可以预测将来能获得的新客数量,如果潜在的客户很少,那么将来能增加的客户也不会很多。其他常用的先见性指标,如90天用户投诉率:可以预见未来用户流失。启用先见性指标可以使用同期群分析(Cohort Analysis,后文会单独阐述)并比较客户对照组在不同时期的表现。
后见性指标:比如用户流失(某段时间离开产品或服务的客户量)则能解释过去一段时间出现的现象。通常情况下先见性指标的价值更大,要善于发掘业务中的先见指标并反哺业务。
五、相关性与因果性
如果两个指标总是一同变化则表示他们具有相关性,如果其中一个指标可以导致另一个指标变化则说明他们具有因果性。
如果发现能控制的事件(比如播放什么)和希望发生的事(比如营收)具有因果性,那么恭喜你拥有了改变未来的能力。而探寻相关性或因果性时需要保持对「关联数据」的敏感:例如转化率和购买所需时间,又或者病毒传播系数和病毒传播周期。 使用数据的一些准则
相信通过上述对数据指标的基本作用简单描述后,大家会好奇:如何选择合适的数据指标?又有哪些准则或是方法论呢?程序员们对数据是执(痴)着(迷)的,而数据并不是银弹。 客户驱动和数据驱动并不排斥
产(代)品(码)首要目标是服务于客户(业务)。追逐数据前,一定要先自问:这对客户有什么好处?当然通常对客户没有价值的数据对业务也不会有帮助的。 数据只是代表历史
惯性思维驱使我们用过去来解释未来,但历史的情况不一定是今天或明天的情况,现实中是存在黑天鹅事件的。同样产(代)品(码)会不断迭代,历史数据并不能不加修正的直接使用。 数据总是不完整的
通常我们使用数据作出决策时,所拥有的数据并不是唯一可能与决策相关的数据,总有更多数据出现并可以左右决策,同时我们永远不可能拥有所有这一切,拥有的数据可能会描绘一幅画面,但充其量只是一幅印象派画作。 数据是客观的,解释是主观的,任何一组数据都可以支持无数的叙述
围绕数据呈现的任何故事都不是唯一可以讲述的故事。 试验是因果关系的黄金标准
相关性不是因果关系。这是一个常见的误区:「数据指标A增长了,同时数据指标B也增长了,我们只要想办法提升数据指标A就行了」。其实并不是这样的,具有相关性并不表示存在因果性,验证因果性的准绳是进行试验,并保持所有相关变量(尽可能)不变。 观看仪表盘,同时注意挡风玻璃
量化如同开车时看着仪表盘,定性则像车前的挡风玻璃。人在驾驶时会自然地平衡定量(数据)和定性(经验)。 数据随时间衰减其准确性和相关性
大多数数据保质期都很短,如果需要使用数据指标为最近的某项业务需求做数据支撑,那么需要特别关注数据的时效性,已经变(过)质(期)的数据非但不能带来正确的推导,反而很有可能会产生不可预估的错误。
举个最近出现的案例:我们需要统计用户下单数量与用户留存率的拐点并针对接近拐点下游的用户群体进行特定商品的流量扶持。但用于统计订单拐点的数据却包含了多年前的「古老」数据。在产品策略经历了无数变更这些年,这批数据量不小的历史订单又会对统计结果带来多少偏差呢?这是一个典型的无价值数据导致做出错误分析的例子。 数据是现实的客观反映,但需保持健康的怀疑态度
数据宣称代表现实,但充其量只是反映现实,但却容易被扭曲。我们应该时刻保持对数据的敬畏和怀疑,才能保证不被数据本身误导。 数据可视化可以照亮,混淆或分散注意力
我们经常从各种数据报表中寻找业务灵感,但业务数据指标经常被隐藏在各种五花八门的可视化报表之下。优秀的数据报表会照亮具有业务潜力的数据指标,反之则会用「十分精美」的外表分散你的注意力。 注意数据的一些圈套
假设数据没有噪音 一次统计故障导致30%数据无效,而这个数据又神不知鬼不觉都作为了某个需求的业务支撑...
忘记对数据归一化 比如统计热门婚礼目的地列表,可以统计每个城市每年有多少人乘坐飞机来结婚。但如果没有根据游客数量进行数据归一化,那么只会得到一个热门旅游城市列表。
抛开基数谈增长 有一个冷笑话:产品刚上线,你爸爸注册一个账号也可以使你的用户量翻倍。
排除异常点 21 个每天使用产品超过 1000 次的用户可能揭示一些意料之外的事(啊哈,是不是有什么故障)。
包括异常点 21 个每天使用产品超过 1000 次的用户可能造成推荐功能推荐所有人相同商品。
忽视季节性 6 月实习生岗位增长最快(也可能是暑假哦)。
数据表报呕吐 打开数据平台,满屏幕的数据充斥着屏幕。但如果不知道什么数据对你更重要即使再大的数据统计板也没有用啊。
谎报军情指标 阈值过于敏感,导致警报不断,渐渐开始无视各种异常。这个通常出现在业务监控的相关产品中,不知道大家有没有发生过业务阈值从 0.001% 提升到 0.01% 而报警的(没错,100倍啊)。
关注数据噪音 人类与生俱来的模式识别能力,容易让我们认为无规律的事物是有规律的。 武器库:同期群分析(Cohort Analysis)
同期群分析,亦称群组分析。其主要目的是分析相似群体随时间的变化(比如用户的回访)。
比如每个用户都会经历一个生命周期:免费试用=>付费试用=>停止试用。在这期间,可能会对产品甚至商业模式进行调整(比如一次大规模的产品功能迭代)。所以在产品第一个月上线的用户势必与之后才加入的用户有着不一样的体验。
那么用户流失率会有什么影响呢?我们就需要使用同期群分析,通过数据思维为业务发展佐证。
我们首先来看一个虚拟的案例:你负责的某项业务,每月能获取1000位新客户,新客户没人会买一些商品,那么前五个月平均每位客户的营收是多少呢?
1月 2月 3月 4月 5月
客户总数 1000 2000 3000 4000 5000
平均每位客户营收 5元 4.5元 4.33元 4.25元 4.5元
以上表格可能是大多数程序员最直接的数据思维方式了。但有没有发现,表格传达的消息并不多。我们无法利用数据来回答:我们的产品到底是日益红火还是每况愈下?归其原因,我们并没有将新客户和老客户进行区分,所以这里的数据只能告诉你:营收经历了小幅下降后又回升了,而每位客户的营收几乎一致(天啊,真的是这样么?)
同样使用相同的数据,我们这次根据客户首次光顾的时间按月进行区分。
1月 2月 3月 4月 5月
新客户数 1000 1000 1000 1000 1000
总客户数 1000 2000 3000 4000 5000
第1个月 5元 3元 2元 1元 0.5元
第2个月
6元 4元 元 1元
第3个月
元 6元 元
第4个月
元 7元
第5个月
9元 这次,我们可以发现一些重要信息了,在第5个月光顾的客户首月消费有9元,足足是第1个月光顾客户的差不多2倍,我们做的很不错!好强大的数据思维武器。同期群分析不仅如此,还可以根据用户的体验进行划分:
使用第1月 使用第2月 使用第3月 使用第4月 使用第5月
1月 5元 3元 2元 1元 0.5元
2月 6元 4元 2元 1元
3月 7元 6元 5元
4月 8元 7元
5月 9元
平均值 7元 5元 3元 1元 0.5元
这里又可以发现另一些重要信息了,客户消费是如何从首月开始急速衰减的。通过以上2种不同维度的同期群分析,我们可以得出结论:业务正在快速成长,但同时在首月后消费明显递减。有了数据思维武器作为支撑,我们就可以很好地对业务迭代效果进行分析再迭代了。
同期群分析可以观察处于生命周期不同阶段的客户行为模式,同样适用于营收,客户流失率,病毒传播等业务场景,名副其实的数据思维好帮手。 武器库:A/B测试
比较不同群体的同期群试验称之为纵向研究(因为数据维度沿着客户群体的自然生命周期),与之对应的横向研究指同一时间段对不同被试群体提供不同的体验。横向研究听起来很深奥,给大家举个例子:向一半用户展示绿色链接,对另一半用户展示蓝色链接,并比较哪种颜色的点击率更高就是易总典型的横向研究,没错!就是A/B测试。A/B测试看似简单易行,但只有应用流量达到一定规模时才能使用并得到答案。A/B测试通常以平台的形式出现在各厂的基础能力图谱中,其原理大同小异。同时A/B测试是验证因果性的大杀器,在使用时务必保持所有相关变量(尽可能)不变。 附「数据指标记分牌思维导图,欢迎继续关注该系列」
(点击图片可缩放)
求贤(哔哩哔哩专栏求点赞,求关注,求推荐):
「会员购」是哔哩哔哩的二次元电商平台。我们是B站多元化商业收入的重要航道之一,同时也是B站增长最快的潜力业务。我们寻找志同道合的伙伴一起寻找我们的 One Piece。
本文首发于B站专栏: https://www.bilibili.com/read/mobile/6766805
GIAC全球互联网架构大会将于8月14-15日在深圳举行,点击阅读原文查看详细日程。
参考阅读:
- 当你同事工作出色时,如何得体地告知他上司
- 云原生时代,Java还是Go?
- 如何保留优秀的程序员
- 如何低成本的完成一个副业项目
- 哔哩哔哩「会员购」业务网关的研发赋能实践
- 哔哩哔哩「会员购」在流量回放上的探索
技术原创及架构实践文章,欢迎通过公众号菜单「联系我们」进行投稿。