5.3 有损服务——放下不必要的坚持

我们的产品必须始终像机械钟表那样精确缜密地运行,覆盖所有的用户使用场景,保证用户在任何时候都能获得最完整的使用体验,否则就有疏离用户的危险。这是许多团队(尤其当创始人具有一定技术背景)正在恪守的准则。但是如果完全这样做,那意味着我们必须为满足大众所有的需求而无差别地堆叠产品特性,这将导致团队无法聚焦在核心用户身上,功能主次不分、定位混乱,七拼八凑成残破丑陋的“弗兰肯斯坦”。

想想微软的Office软件,它长期霸占着全球同类白领工具的用户市场,但复杂的功能、臃肿的界面,究竟有多少是人们日常处理文档时会经常用到的呢?我想不会超过5%。大部分功能对人们而言是弃之不用的鸡肋,同时这也暗示着一大机会:只要能做出一款产品,在这核心的5%功能上更加优雅好用,那么就有可能在文档处理的市场上与Office一争高下,切分出属于自己的一小块市场。不信的话,想想谷歌文档(Google Docs)和苹果电脑上的iWork办公套件,用过他们的人再面对Office时想必很难再表现得从容淡定。

00149.jpeg

微软Word功能繁复的主界面

对于小团队而言,追求核心功能的专精之余,是否必须花力气让其他环节都优化到极致呢?这里让我们引入一个新的概念——有损服务。

有损服务,顾名思义是指刻意输出在品质上存在某些损失的服务,目的是以此牺牲换取其他方面(速度、稳定性、成功执行的几率)的优化。在传统行业与互联网结合的过程中,有损服务这一概念通常是比较难以让人立刻接受的。它意味着产品能力与用户需求之间的平衡与博弈。为了让这个概念更容易理解,不妨让我们举个例子:假如一个人在沙漠中迷了路,那么只要当他还能走动,那应当尽量保持继续前进,直至找到目的地;如果实在走不动了,那就改成爬行;如果最后连爬也爬不动,起码要想尽一切办法保证自己活着。否则,只能面临死亡这一唯一的结果。

这就像我们提供产品服务,在大多数时候,我们为用户呈现的都是完整优雅的使用体验,然而一旦遭遇某些特殊情况,例如服务器遭遇攻击、第三方服务出现异常、用户网络环境不顺畅,抑或其他不可抗力因素时,我们绝不应坐以待毙,而是宁愿在可接受的范围内牺牲掉某些细枝末节的特性,从而换取核心功能不受影响——或者至少在遭遇失败故障时,给出更友好的善后。

很久之前,腾讯曾经推出过一款国民级应用——QQ农场,其空前的火爆导致服务器压力巨大,许多用户在通过QQ空间进入QQ农场时,可能出现图标加载缓慢、列表入口显示不完整乃至无法进入的问题。对开发团队而言,哪怕只是极小的失败率,也意味着招来的是大批用户的投诉。

对此,团队进行了深入分析。对这部分用户而言,正常情况下他们应当在QQ空间看到完整的已安装应用列表,里面包含十几到二十几款不同的在线小游戏,点击进入就能开始玩;但在高峰时候,用户最关心的只是列表中的个别几个项目能不能进入,如基础应用中的日志、游戏应用中的QQ农场等,相比之下其他应用玩不玩得了并没有那么迫切。如果不分场合地一股脑儿全部载入,意味着高峰时段的用户可能面对“Everything or Nothing”的尴尬。

与其什么都做不了,不如给他们一些事情可干。于是团队想到了一招有损的解决方案。如果用户的网络顺畅,那么自然是加载完整的已安装应用列表。而到了高峰时段,如若发现用户的网络情况不容乐观,获取完整应用列表存在极大延迟甚至失败的可能性,那么就返回一个静态的默认列表,这个列表包含了用户常用的基本功能以及QQ农场这样的人气应用。

采用这种方案,哪怕用户以前从没有安装过QQ农场,也有可能在高峰时段看到它的图标入口——在某些追求精准的开发者眼里,这是一个错误。然而对比下来,一个是想玩农场而苦苦找不到入口,致使用户怨声载道甚至流失,一个是没装过农场但发现了值得尝试的新大陆,两个解决方案的优劣高下立判。此方案执行下来,的确让QQ农场服务器延迟的问题得到了大面积的缓解。

同属腾讯旗下,微信团队曾追求所有消息的送达率必须是100%,并且一定要在每个用户的手机上保证消息发送和接收顺序的一致性,比如微信群里的群聊先后顺序。逢年过节,群里你一言我一语消息量巨大时,微信的服务器面临的压力可想而知。后来经过考量,在大多数情况下其实消息的顺序没有那么重要(从用户角度想想也的确如此,群聊里的消息并非每条都值得认真读过去,即使偶然因顺序错误导致难以理解,结合上下文再看一遍通常也能很快搞清楚),于是他们替换成了有损的解决方案,在极端情况下不再强求消息的顺序一致。

小米手机在业界的发布堪称饥饿营销的经典,每次网络抢购几乎都在顷刻之间售罄。跃跃欲试的抢购者们很早就会守候在电脑前,提前刷新页面等待开启的那一刻。在红米Note发布当日,即便负责后台运维的同事做了周密的准备,最终服务器还是被拖垮了。

事后复盘,工作人员发现小米的抢购官网采用的是无损的完美设计,比如每个抢购者都能看到还剩下多少部手机的实时精确数字统计。到底是不是每个人都有看到这个数字的必要呢?其实大可不必,比如当手机库存还剩十几万部时,每个人都能抢到,大家就对这个数字的多少不太在意;而假如只剩下了一百部,抢购者才真正开始关注和紧张(但相应的访问量也会急剧下降)。所以大可在前期显示一个模糊的数字,如“仅剩5万部”,而不是“仅剩48693部”,以此减少后台数据库的实时查询量。

00150.jpeg

小米的每次限量开放抢购总会引发用户的蜂拥排队

手游的平衡性与服务的稳定性对于营收而言同样至关重要。失之毫厘的技术偏差或策划不周,都可能影响几十上百万的用户和实际收入。手游《刀塔传奇》每次发布完整更新包时,由于文件体积通常有几十MB,用户可能担心流量不足而延迟到Wi-Fi环境才下载,这会导致当日的活跃度会减少10%。为了降低更新版本带来的活跃度影响,开发团队想出的应对策略是:每逢大版本更新时,更新包尽量使用“低清版”资源,以减小程序体积。虽然低清版在视觉效果上不够精致细腻,但让玩家尽快先玩起来才更加紧迫。

在实施有损服务的方案时,有两条基本原则:1)发生问题时,优先保证核心功能的运转,非核心功能不可以影响核心功能;2)在条件允许的情况下,牺牲的特性越少越好。

有时候,做个完美主义者其实并不那么轻松,与其如此倒不如抓大放小,舍弃不必要的坚持。