小产品跟大产品都可以通用的决策系统:Randomized AB Test

疫苗在台湾第一次吵得沸沸扬扬时,我也被各种有孔没笋的消息搞得莫名其妙,为了跟人争辩时不要说错话,闲人如我就去看了莫德纳申请美国 EUA 时的影片(有公开在美国食药署网站),那时很意外的一点是,哇,这跟我们工作也太像了吧。难怪我以前去西雅图的资料科学部门见习的时候,那边大部分的所谓「资料科学家」都是从生物背景转行来的。做的事情简直跟疫苗测试一模一样,差别只在於实验人数会差好几万倍。就是随机给一群人新功能,另一群人不给,然後在不提醒也不告诉他们的情况下,让他们自由使用一两个礼拜後,再来看结果有什麽差。新功能要确定有有意义的改善,才能上线,不然就像联亚一样打回去重做或修改。

在我做的三个产品:作业系统、搜寻引擎、我自己的聊天软件。我都用过不同的实验系统来做决定。Windows 时,刚好是要开始采用实验系统的导入期,一边跟 bing 借监,一边从最基本的 metrics 开始定义,万丈高楼平地起。但是作业系统的本质还是离线为主,而且事关很多人的工作效率,做真正的随机测试是非常困难的。後来我到 bing 组,看到线上服务的实验系统才大开眼界。

搜寻引擎的产品就是资料,产品决策都是要透过实验决定,这件事不是秘密。很有名的一个例子是 Google 光是要决定一个按键要「哪一种蓝」就同时试了二、三十种蓝色。用户开始使用後,使用数据会被计算成上千种 metrics 。一个 metrics 代表一种考虑的维度。通常会有一个计算 trade off 的标准公式,要利大於弊才能上线功能,真的是每一个步骤都尽可能想办法排除人的偏见。

但这些数字当然也都是有人设计出来的。甚至可能都是一个人或一组人花好几个月研究然後严谨地定义,然後再花好几个月实作出来的。我的朋友有次抱怨脸书一个新功能难用,说要怎麽跟系统表态,我开玩笑说就是快速按上一页,在一定的时间内回去的话,系统会把你这次算成按错,如果刚好很多人这样干,可能那个工程师就不能上线这个功能,不然至少要做个投影片,画几张煞有其事的图,猜猜发生什麽事。

大家以为进大公司可以做大事,但其实就是因为我们那麽多人,每个人做的东西想当然就是变成系统的小螺丝钉。常言道:面试造火箭,入职拧螺丝。如果有人想出一个新的 metrics 成为这上千个数字的一份子,让工程师准确量测某个指标,那就已经是一个超级值得大书特书的贡献了。因为一个小小小小的「有效」改变,乘上巨大的用户基数,影响是非常大的,虽然通常本人的感受可能不强烈,但其实就是左右很多钱的「大事」。

所有作线上服务的大公司,应该都有一组是专门在开发为产品量身订做的随机实验系统,因为开发产品的人跟使用产品的人,一定是几乎没交集的两群人。再怎麽会共感的 PM,也是有极限。而且就算他的共感或直觉是对的,也很难说服总是意见很多的一群人,这时候有个谈判讨论的准则就是很省口水跟时间。我们两个在上班都习惯这种流程也认同这个价值,我们自己独立做副业的时候,也很自然地找了工具帮助我们做产品判断,尽量遵守没通过实验就不能加功能这个规范,虽然常常做好了还丢掉很可惜,但是硬加进去没用的东西也只是把产品越搞越烂。

我们用现成的 firebase 来做 AB Test,这东西我们用到现在都还没付半毛钱,想到小团队根本不可能花时间自己去维护这系统,虽然 data 被 Google 看光光,但还是觉得佛心,毕竟如果他要我付钱,我好像也已经跑不了了。

最新文章会分享在脸书:https://www.facebook.com/gigi.wuwu/
欢迎留言讨论


<<:  铁人赛 Day2 -- SQL到底是什麽东西?讲中文好不好

>>:  LeetCode解题 Day02

Day 13. 是时候来规划个专案了,先来个小调查

我的小夥伴推荐我做贪吃蛇但吃的是我,於是就有了以下两种: 不是很完整的想法,希望大家可以从我的文字叙...

02 | WordPress 编辑器的进化起源,认识「传统编辑器」

传统编辑器的作用,就是把 HTML 转换为我们所见的网页的过度性产品 Classic Editor...

Flutter体验 Day 6-Widget State

Widget状态管理 Widget 类别的原始码上有标注 @immutable,这个标注的意思是不可...

Day11 vue.js实现简单的登入功能

延续昨日 今天来把登入的功能搞定吧! 记得我们day7学到的东西吗? :class="pr...

30天学会C语言: Day 5-来比大小啊!

比较/关系 运算 用来比较两个数值大小关系的运算,运算的结果是一个布林值,当两者的大小关系成立时结果...