第五章 功能选择
第一节 半个产品,不是半成品
不要在应用开发中尝试把所有功能都添加进去。将所有可能的想法都添加进去,结果是你的产品将是一个半成品。
专注于真正的关键点。好想法可以暂时搁置。找到产品必须具备的功能,然后将这个功能减半,逐渐减少功能,直到留下最关键的部分。然后不断重复这个过程。
对于 Basecamp ,一开始我们只做消息模块。我们知道这是应用的核心部分,我们暂时忽略了里程碑、待办列表和其它的事项。这让我们能够将未来的决策建立于实际的使用情况,而不是猜测。
从一个精益、智能的应用开始,让他获得牵引力。之后你可以在这个坚实的基础上添加内容。
第二节 这根本不重要
只考虑必需品
“你为什么没有做这个?为什么做了那个?”,对于这类问题,我们最喜欢的答案是:“因为这无关紧要。”这句话道出了一个优秀产品的关键。找出最重要的,把其他的放一边。
当我们发布 Campfire 时,我们从第一次接触产品的用户那里听到了这些问题:
“为什么每隔5分钟才有一个时间戳?为什么不在每条聊天记录后都添加时间戳?”答案是:这无关紧要。你需要每分每秒确认对话时间的概率有多高?95%的情况下都不会。5分钟就足够了,因为比之更精确的时间没意义。
“为什么你不在聊天中允许粗体、斜体或有颜色的字体?”答案是:这无关紧要。如果你要表示强调,使用大写就可以了,或者添加星标之类的。这些方案无需额外的软件、技术支持,处理能力或学习曲线。此外,在纯文本聊天环境下的格式选项真的不重要。
“为什么不显示同时在线的总人数?”答案是:这无关紧要。每个人的名字都显示在列表上,你可以知道谁在线,知道现在有12人或16人在线,有什么区别呢?如果这不会改变你的行为,那它就无关紧要。
拥有这些功能是好事吗?是的。但他们是必需的吗?你真的在意吗?不!这就是为什么我们把它们排除在外。最好的设计师和最好的程序员并不是因为他们拥有最好的技术,最灵活的手指,能够玩转 Photoshop ,或者他们选择的环境,而是因为他们有能力区分哪些事是无关紧要的。那才是真正的收获。
你把大部分的时间都浪费在无关紧要的事情上。如果你能够删除剔除这些无关紧要的事,你将获得难以置信的生产力。
第三节 从“说不”开始
不要轻易实现功能
每次你对一个功能说 yes ,你就又领养了一个孩子。你要带着他走过所有的流程(例如,设计、实现、测试等)。一旦功能存在了,你就被它困住了。如果你尝试把一个已经发布的功能取消,你的用户会暴跳如雷的。
不做好好先生
让每一个功能的实现都充满困难。让每个功能都证明自己是幸存者。就像“搏击俱乐部”。你只考虑那些愿意在门口等上三天的功能。
这就是为什么要从说不开始。面对所有新功能的要求都应该说不。我们倾听但不行动。最初的回应是“现在还不是时候。”如果一个需求再次出现,那么这次我们就要仔细看看了。只有在这个时候,我们才开始考虑这个功能是否有实现的必要。
当人们抱怨你拒绝了他的功能要求时,如何回应呢?提醒他们,你们起初是为何喜欢这个应用的?“你喜欢它是因为我们在开发的过程中说不了,你喜欢它是因为它保持专一,不做其它的事,你喜欢它是因为它从不尝试取悦于所有人。”
“我们不想要一千个功能”
Steve Jobs 曾给一些独立唱片从业者介绍过 iTunes Music Store 。我最喜欢的部分是:当时不断地有人举手提问,“有这个功能吗?”,“你准备添加这个功能吗?”。最终,Jobs 说,“等一等,等一等,把你的手放下,听着:我知道你有一千个好点子可以添加进 iTunes ,我们也一样。但是我们不想要一千个功能。那太丑陋了。创新不是对任何事情说 yes,而是对核心功能以外的东西说不。”
—— Derek Sivers,CD Baby 和 HostBaby 的主席和程序员(from 默认说不)
第四节 隐藏成本
揭露新功能的成本
即使一个功能通过了说“不”的阶段,你还需要将其隐藏成本暴露出来。
例如:留意功能循环(一个功能产生更多的功能)。我们曾经有一个需求是给 Basecamp 添加会议页面。在仔细研究前,你以为这很简单。想象一个会议页面所要包含的不同的内容:位置、时间、房间、人员、邮件邀请、日历整合、支持文档等。更别提我们还得修改促销截图,导航页面,faq 和帮助页面,服务条款,等。在你发现之前,一个简单的想法已经变成一个头疼的大问题,像滚雪球一样。
你应该用以下步骤对待每个新功能:
- 说不
- 逼迫功能证实自己的价值
- 如果再次说不,那就到此为止。如果是 yes ,那就继续
- 画出屏幕和UI的草图
- 设计屏幕和UI
- 敲代码
7-15. 测试,调整,测试,调整,测试,调整... - 确认帮助文字是否需要修改
- 更新产品导航(如果需要的话)。
- 更新营销文案(如果需要的话)。
- 更新服务条款(如果需要的话)。
- 查看是否有某些承诺被打破了
- 查看是否影响了价格结构。
- 发布。
- 秉住呼吸。
第五节 你能搞定它吗?
做你能掌控的事
如果你启动了一项营销计划,你是否有相应的系统来处理账单和支出?
你能否免费提供 1GB 的空间,只是以为 Google 提供了这样的服务?也许你应该从 100MB 开始,或只对付费帐号提供空间。
关键:在你能掌控的范围内提供你的产品和服务。承诺容易,维持难。确保你所做的一切都是可持续的,无论组织、战略还是财务。
第六节 用户解决方案
构建通用性的软件,让用户创造他们自己的用法
不要将习惯强加于用户。让你的软件具备普遍性,这样每个人都能找到他们自己的用法。给予用户足够的自由来解决他们的问题。之后就放手让它去吧。
当我们开发 Ta-da List 的时候,我们故意省略了许多内容。无法将待办事项分配给其他人,无法设定截至日期,无法给项目分类,等等。
我们使这个工具保持简单、整洁,让用户产生创意。用户能够找出他们自己的使用方法。如果用户想给一个项目添加日期,只要在项目名称前加上截至日期就行了。如果他们想添加一个分类,他们可以同样地在项目前写上「书籍」两个字。并不完美,但绝对灵活。
如果我们对每一个使用场景都创建了具体的应对方法,那么他们针对所有场景的有效性就降低了。
尽你所能解决根本问题,之后就靠边站。在你设定的通用框架内,用户会找到符合他们使用习惯的解决方法。
第七节 忘掉功能需求
让用户提醒你什么是重要的
用户什么都想要,他们会用各种需求把你淹没。看看我们的产品论坛,功能要求版块里的内容要远多于其它版块。
我们会听到“这只是个小功能”或“这并不难实现”或者“添加这个不是很容易吗?”或者“只需几秒就能添加这个功能”或者“我愿意付两倍的价钱给这个功能”,等等。
当然,用户提要求并没有错。我们鼓励用户提要求并乐于倾听。我们给产品添加的所有功能都来源于客户的需求。但是,如前所述,你的第一反应应该是说不。那你如何应对这些涌入的需求呢?将其存放于何处呢?如何管理他们?不,看过之后就扔了吧。
没错,看一眼,扔掉他们,然后忘记他们。这听起来太傲慢了,但是,重要的东西总会自动涌现出来,这些才是你应该记住的。这些才是真正重要的。不用费心跟踪、保存这些需求。让用户成为你的内存。如果真值得记住,他们会不断提醒你直到你无法忘记。
我们如何得出这个结论?当我们刚发布 Basecamp 时,我们在待办事项上跟踪了每个主要功能需求。每当有一个需求重复出现过,我们就更新这个列表并标记次数。我们决定将来依照要求次数来逐条实现这些功能。
但事实是,我们再也没有查看过这个列表。我们已经知道接下来要做什么,因为用户不断地作出相同的需求来提醒我们。不需要列表和分析,因为这些都是实时发生的。你每天都被提醒着,你就无法忘记。
另外:有 N 个用户提出这个要求,不代表你要添加这个功能。有时,你需要说不,并保持你自己对产品的愿景。
第八节 握住蛋黄酱
问问用户他们不想要什么
大部分的软件调查问卷和研究问题都集中于用户需要什么。“你认为缺少了什么功能?”,“你想添加什么?”,“这个产品怎样才能对你更有用?”
何不尝试另外一面?为何不问问人们他们不想要什么?“如果要移除一个功能,你会选哪个?”,“哪个功能是你不用的?”,“哪个功能最影响你的使用?”
更多并不是答案。有时,你对用户最大的恩惠就是把一些功能去掉。
创新来自于说不
创新来源于对 1000 件事情说不,这能确保我们不误入歧途或想做的太多。我们永远都在考虑可以进入的新市场,但只有说不才能让你专注于真正重要的事情。
——Steve Jobs, CEO, Apple (from 苹果创新的种子)