第五章 功能選擇
第一節(jié) 半個(gè)產(chǎn)品,不是半成品
不要在應(yīng)用開(kāi)發(fā)中嘗試把所有功能都添加進(jìn)去。將所有可能的想法都添加進(jìn)去,結(jié)果是你的產(chǎn)品將是一個(gè)半成品。
專(zhuān)注于真正的關(guān)鍵點(diǎn)。好想法可以暫時(shí)擱置。找到產(chǎn)品必須具備的功能,然后將這個(gè)功能減半,逐漸減少功能,直到留下最關(guān)鍵的部分。然后不斷重復(fù)這個(gè)過(guò)程。
對(duì)于 Basecamp ,一開(kāi)始我們只做消息模塊。我們知道這是應(yīng)用的核心部分,我們暫時(shí)忽略了里程碑、待辦列表和其它的事項(xiàng)。這讓我們能夠?qū)⑽磥?lái)的決策建立于實(shí)際的使用情況,而不是猜測(cè)。
從一個(gè)精益、智能的應(yīng)用開(kāi)始,讓他獲得牽引力。之后你可以在這個(gè)堅(jiān)實(shí)的基礎(chǔ)上添加內(nèi)容。
第二節(jié) 這根本不重要
只考慮必需品
“你為什么沒(méi)有做這個(gè)?為什么做了那個(gè)?”,對(duì)于這類(lèi)問(wèn)題,我們最喜歡的答案是:“因?yàn)檫@無(wú)關(guān)緊要?!边@句話(huà)道出了一個(gè)優(yōu)秀產(chǎn)品的關(guān)鍵。找出最重要的,把其他的放一邊。
當(dāng)我們發(fā)布 Campfire 時(shí),我們從第一次接觸產(chǎn)品的用戶(hù)那里聽(tīng)到了這些問(wèn)題:
“為什么每隔5分鐘才有一個(gè)時(shí)間戳?為什么不在每條聊天記錄后都添加時(shí)間戳?”答案是:這無(wú)關(guān)緊要。你需要每分每秒確認(rèn)對(duì)話(huà)時(shí)間的概率有多高?95%的情況下都不會(huì)。5分鐘就足夠了,因?yàn)楸戎_的時(shí)間沒(méi)意義。
“為什么你不在聊天中允許粗體、斜體或有顏色的字體?”答案是:這無(wú)關(guān)緊要。如果你要表示強(qiáng)調(diào),使用大寫(xiě)就可以了,或者添加星標(biāo)之類(lèi)的。這些方案無(wú)需額外的軟件、技術(shù)支持,處理能力或?qū)W習(xí)曲線(xiàn)。此外,在純文本聊天環(huán)境下的格式選項(xiàng)真的不重要。
“為什么不顯示同時(shí)在線(xiàn)的總?cè)藬?shù)?”答案是:這無(wú)關(guān)緊要。每個(gè)人的名字都顯示在列表上,你可以知道誰(shuí)在線(xiàn),知道現(xiàn)在有12人或16人在線(xiàn),有什么區(qū)別呢?如果這不會(huì)改變你的行為,那它就無(wú)關(guān)緊要。
擁有這些功能是好事嗎?是的。但他們是必需的嗎?你真的在意嗎?不!這就是為什么我們把它們排除在外。最好的設(shè)計(jì)師和最好的程序員并不是因?yàn)樗麄儞碛凶詈玫募夹g(shù),最靈活的手指,能夠玩轉(zhuǎn) Photoshop ,或者他們選擇的環(huán)境,而是因?yàn)樗麄冇心芰^(qū)分哪些事是無(wú)關(guān)緊要的。那才是真正的收獲。
你把大部分的時(shí)間都浪費(fèi)在無(wú)關(guān)緊要的事情上。如果你能夠刪除剔除這些無(wú)關(guān)緊要的事,你將獲得難以置信的生產(chǎn)力。
第三節(jié) 從“說(shuō)不”開(kāi)始
不要輕易實(shí)現(xiàn)功能
每次你對(duì)一個(gè)功能說(shuō) yes ,你就又領(lǐng)養(yǎng)了一個(gè)孩子。你要帶著他走過(guò)所有的流程(例如,設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試等)。一旦功能存在了,你就被它困住了。如果你嘗試把一個(gè)已經(jīng)發(fā)布的功能取消,你的用戶(hù)會(huì)暴跳如雷的。
不做好好先生
讓每一個(gè)功能的實(shí)現(xiàn)都充滿(mǎn)困難。讓每個(gè)功能都證明自己是幸存者。就像“搏擊俱樂(lè)部”。你只考慮那些愿意在門(mén)口等上三天的功能。
這就是為什么要從說(shuō)不開(kāi)始。面對(duì)所有新功能的要求都應(yīng)該說(shuō)不。我們傾聽(tīng)但不行動(dòng)。最初的回應(yīng)是“現(xiàn)在還不是時(shí)候?!比绻粋€(gè)需求再次出現(xiàn),那么這次我們就要仔細(xì)看看了。只有在這個(gè)時(shí)候,我們才開(kāi)始考慮這個(gè)功能是否有實(shí)現(xiàn)的必要。
當(dāng)人們抱怨你拒絕了他的功能要求時(shí),如何回應(yīng)呢?提醒他們,你們起初是為何喜歡這個(gè)應(yīng)用的?“你喜歡它是因?yàn)槲覀冊(cè)陂_(kāi)發(fā)的過(guò)程中說(shuō)不了,你喜歡它是因?yàn)樗3謱?zhuān)一,不做其它的事,你喜歡它是因?yàn)樗鼜牟粐L試取悅于所有人?!?/p>
“我們不想要一千個(gè)功能”
Steve Jobs 曾給一些獨(dú)立唱片從業(yè)者介紹過(guò) iTunes Music Store 。我最喜歡的部分是:當(dāng)時(shí)不斷地有人舉手提問(wèn),“有這個(gè)功能嗎?”,“你準(zhǔn)備添加這個(gè)功能嗎?”。最終,Jobs 說(shuō),“等一等,等一等,把你的手放下,聽(tīng)著:我知道你有一千個(gè)好點(diǎn)子可以添加進(jìn) iTunes ,我們也一樣。但是我們不想要一千個(gè)功能。那太丑陋了。創(chuàng)新不是對(duì)任何事情說(shuō) yes,而是對(duì)核心功能以外的東西說(shuō)不?!?/p>
—— Derek Sivers,CD Baby 和 HostBaby 的主席和程序員(from 默認(rèn)說(shuō)不)
第四節(jié) 隱藏成本
揭露新功能的成本
即使一個(gè)功能通過(guò)了說(shuō)“不”的階段,你還需要將其隱藏成本暴露出來(lái)。
例如:留意功能循環(huán)(一個(gè)功能產(chǎn)生更多的功能)。我們?cè)?jīng)有一個(gè)需求是給 Basecamp 添加會(huì)議頁(yè)面。在仔細(xì)研究前,你以為這很簡(jiǎn)單。想象一個(gè)會(huì)議頁(yè)面所要包含的不同的內(nèi)容:位置、時(shí)間、房間、人員、郵件邀請(qǐng)、日歷整合、支持文檔等。更別提我們還得修改促銷(xiāo)截圖,導(dǎo)航頁(yè)面,faq 和幫助頁(yè)面,服務(wù)條款,等。在你發(fā)現(xiàn)之前,一個(gè)簡(jiǎn)單的想法已經(jīng)變成一個(gè)頭疼的大問(wèn)題,像滾雪球一樣。
你應(yīng)該用以下步驟對(duì)待每個(gè)新功能:
- 說(shuō)不
- 逼迫功能證實(shí)自己的價(jià)值
- 如果再次說(shuō)不,那就到此為止。如果是 yes ,那就繼續(xù)
- 畫(huà)出屏幕和UI的草圖
- 設(shè)計(jì)屏幕和UI
- 敲代碼
7-15. 測(cè)試,調(diào)整,測(cè)試,調(diào)整,測(cè)試,調(diào)整... - 確認(rèn)幫助文字是否需要修改
- 更新產(chǎn)品導(dǎo)航(如果需要的話(huà))。
- 更新?tīng)I(yíng)銷(xiāo)文案(如果需要的話(huà))。
- 更新服務(wù)條款(如果需要的話(huà))。
- 查看是否有某些承諾被打破了
- 查看是否影響了價(jià)格結(jié)構(gòu)。
- 發(fā)布。
- 秉住呼吸。
第五節(jié) 你能搞定它嗎?
做你能掌控的事
如果你啟動(dòng)了一項(xiàng)營(yíng)銷(xiāo)計(jì)劃,你是否有相應(yīng)的系統(tǒng)來(lái)處理賬單和支出?
你能否免費(fèi)提供 1GB 的空間,只是以為 Google 提供了這樣的服務(wù)?也許你應(yīng)該從 100MB 開(kāi)始,或只對(duì)付費(fèi)帳號(hào)提供空間。
關(guān)鍵:在你能掌控的范圍內(nèi)提供你的產(chǎn)品和服務(wù)。承諾容易,維持難。確保你所做的一切都是可持續(xù)的,無(wú)論組織、戰(zhàn)略還是財(cái)務(wù)。
第六節(jié) 用戶(hù)解決方案
構(gòu)建通用性的軟件,讓用戶(hù)創(chuàng)造他們自己的用法
不要將習(xí)慣強(qiáng)加于用戶(hù)。讓你的軟件具備普遍性,這樣每個(gè)人都能找到他們自己的用法。給予用戶(hù)足夠的自由來(lái)解決他們的問(wèn)題。之后就放手讓它去吧。
當(dāng)我們開(kāi)發(fā) Ta-da List 的時(shí)候,我們故意省略了許多內(nèi)容。無(wú)法將待辦事項(xiàng)分配給其他人,無(wú)法設(shè)定截至日期,無(wú)法給項(xiàng)目分類(lèi),等等。
我們使這個(gè)工具保持簡(jiǎn)單、整潔,讓用戶(hù)產(chǎn)生創(chuàng)意。用戶(hù)能夠找出他們自己的使用方法。如果用戶(hù)想給一個(gè)項(xiàng)目添加日期,只要在項(xiàng)目名稱(chēng)前加上截至日期就行了。如果他們想添加一個(gè)分類(lèi),他們可以同樣地在項(xiàng)目前寫(xiě)上「書(shū)籍」兩個(gè)字。并不完美,但絕對(duì)靈活。
如果我們對(duì)每一個(gè)使用場(chǎng)景都創(chuàng)建了具體的應(yīng)對(duì)方法,那么他們針對(duì)所有場(chǎng)景的有效性就降低了。
盡你所能解決根本問(wèn)題,之后就靠邊站。在你設(shè)定的通用框架內(nèi),用戶(hù)會(huì)找到符合他們使用習(xí)慣的解決方法。
第七節(jié) 忘掉功能需求
讓用戶(hù)提醒你什么是重要的
用戶(hù)什么都想要,他們會(huì)用各種需求把你淹沒(méi)。看看我們的產(chǎn)品論壇,功能要求版塊里的內(nèi)容要遠(yuǎn)多于其它版塊。
我們會(huì)聽(tīng)到“這只是個(gè)小功能”或“這并不難實(shí)現(xiàn)”或者“添加這個(gè)不是很容易嗎?”或者“只需幾秒就能添加這個(gè)功能”或者“我愿意付兩倍的價(jià)錢(qián)給這個(gè)功能”,等等。
當(dāng)然,用戶(hù)提要求并沒(méi)有錯(cuò)。我們鼓勵(lì)用戶(hù)提要求并樂(lè)于傾聽(tīng)。我們給產(chǎn)品添加的所有功能都來(lái)源于客戶(hù)的需求。但是,如前所述,你的第一反應(yīng)應(yīng)該是說(shuō)不。那你如何應(yīng)對(duì)這些涌入的需求呢?將其存放于何處呢?如何管理他們?不,看過(guò)之后就扔了吧。
沒(méi)錯(cuò),看一眼,扔掉他們,然后忘記他們。這聽(tīng)起來(lái)太傲慢了,但是,重要的東西總會(huì)自動(dòng)涌現(xiàn)出來(lái),這些才是你應(yīng)該記住的。這些才是真正重要的。不用費(fèi)心跟蹤、保存這些需求。讓用戶(hù)成為你的內(nèi)存。如果真值得記住,他們會(huì)不斷提醒你直到你無(wú)法忘記。
我們?nèi)绾蔚贸鲞@個(gè)結(jié)論?當(dāng)我們剛發(fā)布 Basecamp 時(shí),我們?cè)诖k事項(xiàng)上跟蹤了每個(gè)主要功能需求。每當(dāng)有一個(gè)需求重復(fù)出現(xiàn)過(guò),我們就更新這個(gè)列表并標(biāo)記次數(shù)。我們決定將來(lái)依照要求次數(shù)來(lái)逐條實(shí)現(xiàn)這些功能。
但事實(shí)是,我們?cè)僖矝](méi)有查看過(guò)這個(gè)列表。我們已經(jīng)知道接下來(lái)要做什么,因?yàn)橛脩?hù)不斷地作出相同的需求來(lái)提醒我們。不需要列表和分析,因?yàn)檫@些都是實(shí)時(shí)發(fā)生的。你每天都被提醒著,你就無(wú)法忘記。
另外:有 N 個(gè)用戶(hù)提出這個(gè)要求,不代表你要添加這個(gè)功能。有時(shí),你需要說(shuō)不,并保持你自己對(duì)產(chǎn)品的愿景。
第八節(jié) 握住蛋黃醬
問(wèn)問(wèn)用戶(hù)他們不想要什么
大部分的軟件調(diào)查問(wèn)卷和研究問(wèn)題都集中于用戶(hù)需要什么?!澳阏J(rèn)為缺少了什么功能?”,“你想添加什么?”,“這個(gè)產(chǎn)品怎樣才能對(duì)你更有用?”
何不嘗試另外一面?為何不問(wèn)問(wèn)人們他們不想要什么?“如果要移除一個(gè)功能,你會(huì)選哪個(gè)?”,“哪個(gè)功能是你不用的?”,“哪個(gè)功能最影響你的使用?”
更多并不是答案。有時(shí),你對(duì)用戶(hù)最大的恩惠就是把一些功能去掉。
創(chuàng)新來(lái)自于說(shuō)不
創(chuàng)新來(lái)源于對(duì) 1000 件事情說(shuō)不,這能確保我們不誤入歧途或想做的太多。我們永遠(yuǎn)都在考慮可以進(jìn)入的新市場(chǎng),但只有說(shuō)不才能讓你專(zhuān)注于真正重要的事情。
——Steve Jobs, CEO, Apple (from 蘋(píng)果創(chuàng)新的種子)