<audio id="audio" title="11 | 案例：产品发布之前出了乱子，如何权衡取舍？" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/bf/81/bfefe08b6bc5ce5be0af5d687d554381.mp3"></audio>

上一次程序员和产品经理的战争中，说得最多的是：产品经理每天就知道加功能蹂躏程序员。

但实际上，**作为一个产品经理，我每天做得最多的事情就是砍功能：一是，删减产品需求文档上的功能，只保留最重要的功能；二是，已经决定了要加功能，但出现了突发情况，需要临时决定到底要不要砍功能。**

第一种情况下，砍掉产品的哪些功能主要考虑每个功能对总体指标的贡献有多大，以及工程难度有多大；而第二种砍产品功能的情况往往出现在产品发布之前，还可能会涉及到和其他组合作的情况，需要考虑各个方面的因素，操作起来比较复杂。

平时在Facebook的工作中，我最常说的一句话是“这个是不是launch blocking？”，即没有这个功能会不会影响产品发布。我经常在以下两种情况下说这句话：

- 第一是，我们的产品刚刚开始内测，一般会让公司内部所有员工使用进行测试，然后再开放给一部分用户使用。如果我们收到用户反馈说某个功能哪里哪里不好用，那我们就会讨论到底要不要把产品发布时间推后，先把这个功能修复好再发布产品。
- 第二是，我们的产品需要和其他组合作完成，但其他组出现了突发情况，以至于产品的某个功能无法按时完成。比如，我所在的视频组要和搜索组合作，完成允许用户通过关键词搜索视频的功能，但搜索组突然出现了问题，无法按照预定的发布时间实现“自动推荐关键词”，我们现在就会讨论到底是先砍掉这个功能直接发布产品，还是等到搜索组的问题解决后再发布这个产品。

往往第二种问题会比较复杂，处理起来需要考虑的因素也非常多。所以接下来，我以一个实际产品为例给你分享一下，涉及到和不同的产品团队合作时，应该怎么处理产品发布前出现的突发情况。为了保护隐私，我稍微改动了一下产品细节，但并不会影响我要分享的要点。 

## 功能发布背景介绍

我们产品要发布的新功能： 帮助一类明星用户宣传自己，让这些明星用户们获得更多普通用户的关注，从而提升明星用户的点击量。明星用户需要先完成一些任务，才可以得到宣传机会。所以这个新功能主要包括两部分：一是，普通用户的部分；二是，明星用户完成任务后开启这个新功能得到平台的宣传，并且可以查看因此增加的点击量。

要和我们的产品同时发布的还有其他几个针对明星用户的产品，这些产品对应的明星用户是一样的。

经历了一段时间的开发，第二部分明星用户的功能已经开发完毕，第一部分的功能也接近尾声了。突然，负责我们产品普通用户部分开发的iOS工程师说：“大事不好，我刚刚发现了一个Bug，也就是说这个功能上线后，只有5%的iOS普通用户能看到，而剩下的95%的iOS用户都看不到，我也不知道原因是什么”。

那么问题就来了，iOS一周才会发布一次新版本，新版本给到APP Store还要经过一周的审核，因此如果这个问题解决不了，那么这个新功能的上线就要延迟2周的时间。但是，这个功能在安卓平台已经测试完，并且参加测试的明星用户好评如潮。

所以，我们需要做出决定：是先解决iOS平台部分的问题，然后两个平台同时上线，那么上线时间就要延后两周；还是先在安卓平台发布新功能。

## 思考方式

现在这个问题其实涉及到普通用户和明星用户：对普通用户来说，iOS有没有这个功能并没什么影响，因为这次的新功能只是增加了一个可以让他们看推荐的明星用户的版块；而对明星用户来说，我们需要显示这个新功能给他们增加了多少点击量，来保证他们有足够的动力完成预设的任务。

因为要同时发布的这几个产品对应的明星用户是一致的，所以如果我们产品的这个新功能在所有平台都晚发布两周，那么其他几个产品的功能就会不完整。但是，现在公关方案已经接洽好了，如果把这几个产品全部延后两周发布，那必然损失惨重。这是把安卓端和iOS端全部延后发布的风险。

如果只有安卓端的用户可以看到推荐并点击，那这个明星用户的总体点击量会因为iOS端的用户无法看到并点击而降低，而最先发布的两周时间里用户点击量的增加量，是明星用户评价这个功能好坏的关键。所以，如果这些明星用户看到点击量并没有因为这个新功能增加多少的话， 他们就会觉得这个功能不实用，以后也就不会用这个产品了，更不用说持续完成任务了。这就是提前给安卓普通用户发布这个功能的风险。

针对我们产品现在的情况，以及上面考虑到的风险，我们讨论出了三个方案：

- 方案一： 我们产品的普通用户部分的功能，先在安卓平台发布，而iOS平台晚两周再发布，明星用户部分的功能发布日当天全部发布；其他几个产品正常发布。如果采用这种方案，我们需要考虑两个问题：<br>第一个问题是，要和明星用户解释一下，普通用户部分的功能现在只有安卓平台发布了，iOS平台两周后才会发布，所以两周后的数据才是最有说服力的；<br>第二个问题是，这个方案是有风险的，虽然我们已经跟明星用户做了解释，但毕竟数据不好看， 明星用户依然会对我们的产品丧失信心。
- 方案二: 先发布其他几个针对明星用户的产品，而我们产品在安卓端和iOS端的发布全部推后两周。这个方案的风险是，因为我们产品延后发布，导致其他几个产品缺乏完整性、用户体验不连贯。
- 方案三： 所有的产品全部推后两周调试完美后再发布。这样做的风险是，全部计划包括公关计划都会受影响，损失惨重，其他的组不会同意。

其实，上面三个方案都不理想，我们需要思考一些更好的方法。所以，我们换了一个思考问题的角度：iOS平台的普通用户点击量对整体点击量的影响有多大？

针对这个问题，我们专门做了用户调研。用户调研结果显示：有些明星用户高达80%的访问量来自iOS平台，而有些明星用户的很多粉丝都在用安卓系统。

于是，我们针对调研结果，把明星用户根据大部分访问量的来源分成了两类，并提出了两个比较“聪明”的方案：

<li>第一个方案是：我们产品普通用户部分的功能先在安卓平台发布，而明星用户部分功能，选择先发布给大部分点击量来自安卓平台的部分明星用户；其他几个针对明星用户的产品，也先发布给安卓粉丝量占比较大的明星用户。这样一来， 对外的新闻搞，可以把“今日发布给所有人”改成“今日开始发布”。
两周后，我们把iOS端的问题解决了，再做如下操作：在iOS平台开放我们产品普通用户部分的功能，同时把其他几个针对明星用户的产品开放给全部的明星用户。</li>
- 第二个方案是： 其他几个针对明星用户的产品，以及我们产品的明星用户部分的功能，正常发布；我们产品的普通用户部分功能先在安卓平台发布，但是等两周后iOS平台发布这部分功能后，再向明星用户显示点击量提升的数据。

这样，明星用户可以先在这个两周的时间里做任务，毕竟做任务也需要时间，等所有的平台都发布完成之后，再给他们显示包含了所有iOS和安卓用户的数据，“好看”的数据可以激励他们更好地完成任务。

因此，先让明星用户形成使用习惯，再用数据激励他们继续使用，也不失为一个好方法。

这两种方式，我们产品的团队成员都可以接受，但是因为涉及到要和其他几个产品同时发布的问题，需要选择一个最优方案。其他产品的产品经理，希望他们的功能一步到位， 同时发布给所有的明星用户。

经过各种讨论、思考，最终我们愉快地决定， 选择更灵活的第二种方式：除了我们产品在iOS平台推迟两周发布普通用户部分的功能、并且在两周后才向明星用户显示增长的用户点击量外，其他产品照常发布。

## 总结

我通过一个具体的案例，跟你分享了如何权衡取舍，以及在产品发布之前部分功能出现问题时如何统筹。

通过这个具体的案例，我要表达的内容包括以下四个方面。

第一是，要明确功能造成问题的风险以及受影响的人群，这个案例里涉及到了三类人群：使用我们产品新功能的普通用户、使用我们产品新功能的明星用户、使用其他产品的明星用户。

第二是，要列清楚所有可行的选项， 以及对每个群体的影响。

第三是，分析各个选项之间的风险。

第四是，要有大局观，选择最合适的方案。在这个案例里，我们最终考虑了其他产品想要完整体验、准时发布的要求，选择了最灵活、代价最小的处理方式。

## 思考题

针对本文案例的情景， 你还有什么其他的解决方案？欢迎你给我留言。


