庖丁解牛:如何做產(chǎn)品需求分析

4 評(píng)論 21283 瀏覽 207 收藏 17 分鐘

當(dāng)我們?cè)诿鎸?duì)一頭?!獜?fù)雜的業(yè)務(wù)需求時(shí),如果不得其構(gòu)造,不明其法,是不能夠很好的拆解的。只有對(duì)需求深入了解,按照其本來(lái)的構(gòu)造,在筋骨的縫隙處下刀,才能拆出不錯(cuò)的用戶故事。今天在這里,就給大家介紹一些解牛之法。

在莊子的《南華經(jīng)》中有一則寓言。說(shuō)是有位叫丁的廚師,替梁惠王殺牛,其技法之?huà)故?,有行云流水一般的順暢感?;萃蹙蛦?wèn)他為什么有如此高超的技術(shù)。他回答說(shuō):“臣所喜好的是『道』,早就超越所謂的技術(shù)了。最初臣?xì)⑴5臅r(shí)候,眼里看到的都是『完整的?!?;三年之后眼中就再看不到『完整的?!?。到了現(xiàn)在,臣以精神接觸,而不用眼睛看牛,視覺(jué)感官停止了而精神在活動(dòng)。按天然的道理,擊入牛筋骨的縫隙,順著筋骨的空洞進(jìn)刀,依照它本來(lái)的構(gòu)造,牛的筋骨接合的地方,臣都未以刀刃碰到過(guò),而何況是大骨頭呢!”

同樣的道理。當(dāng)我們?cè)诿鎸?duì)一頭?!獜?fù)雜的業(yè)務(wù)需求時(shí),如果不得其構(gòu)造,不明其法,是不能夠很好的拆解的。只有對(duì)需求深入了解,按照其本來(lái)的構(gòu)造,在筋骨的縫隙處下刀,才能拆出不錯(cuò)的用戶故事。今天在這里,就給大家介紹一些解牛之法。非『道』,唯術(shù)爾。

工作流系統(tǒng)

我們平時(shí)經(jīng)常會(huì)接觸到工作流類的系統(tǒng)。所謂工作流,就是我在完成一件工作的過(guò)程中,需要經(jīng)過(guò)多個(gè)步驟,可能還會(huì)有多個(gè)不同的角色參與。對(duì)于這種系統(tǒng),我們一般有兩種方式 —— 橫切和縱切。

1、橫切

所謂橫切,就是先切分出工作流中核心且輕薄的一層,然后再去實(shí)現(xiàn)各個(gè)步驟中的細(xì)節(jié)部分。這對(duì)于那些核心業(yè)務(wù)邏輯比較簡(jiǎn)單、但每個(gè)步驟的附屬功能多且復(fù)雜的工作流系統(tǒng)來(lái)說(shuō)比較適用。

(橫切示例)

舉個(gè)例子:

假如現(xiàn)在我們需要做一個(gè)商旅訂票系統(tǒng),其簡(jiǎn)化的訂票流程如下圖所示:

(攜程商旅的工作流案例)

在這個(gè)流程中,每個(gè)步驟都包含了很多個(gè)功能。比如“會(huì)員查找需要預(yù)定的航班”這一步,會(huì)員的需求可能會(huì)包含:

  • 根據(jù)起始城市搜索航班
  • 根據(jù)選擇的城市,找出最近的機(jī)場(chǎng)所在城市
  • 使用GPS定位所在城市
  • 翻轉(zhuǎn)起止城市
  • 根據(jù)航班號(hào)選擇航班

如果采用橫切的話,我們僅會(huì)選取讓本流程可以工作的最小故事集,如:根據(jù)起始城市搜索航班。

甚至,在本故事中,我們可以設(shè)置會(huì)員僅能通過(guò)精確輸入起落地城市名稱的方式,來(lái)進(jìn)行航班搜索,在不影響本步驟走通的情況下,來(lái)最小化這個(gè)步驟的工作量。其它的流程也使用同樣的策略,來(lái)加速打通整個(gè)業(yè)務(wù)流程。

橫切的優(yōu)勢(shì)在于可以快速實(shí)現(xiàn)核心邏輯,并快速上線,驗(yàn)證假設(shè)并收集反饋,可以根據(jù)反饋的結(jié)果來(lái)決定每個(gè)步驟中的功能應(yīng)該如何設(shè)計(jì)、優(yōu)先級(jí)是什么,來(lái)避免一些可能出現(xiàn)的浪費(fèi)。缺點(diǎn)在于整個(gè)工作流設(shè)計(jì)會(huì)采用短平快的原則,用戶體驗(yàn)較差。

2、縱切

另一種方式是縱切??v切就是按照工作流中的每一個(gè)步驟進(jìn)行切分,這樣可以使每一個(gè)步驟都具有相對(duì)完善的功能,這在某些需要關(guān)注終端用戶交互體驗(yàn)的產(chǎn)品中應(yīng)用較多。注意,這里有個(gè)技巧:如果在整個(gè)工作流中,需要跟終端用戶進(jìn)行交互的功能僅出現(xiàn)在某幾步中,如第一步和最后一步,而中間的N-2步都是后臺(tái)流程,在開(kāi)發(fā)中,我們可以先實(shí)現(xiàn)第一步和最后一步的功能,而中間的流程處理環(huán)節(jié),仍然采用逐步線上化的方式,這樣可以使整個(gè)工作流系統(tǒng)最快的上線,同時(shí)能平衡用戶的交互體驗(yàn)。

(縱切)

比如上面攜程商旅訂票系統(tǒng)的例子,我們可以把涉及終端用戶操作的步驟:

  • 會(huì)員查找航班
  • 會(huì)員發(fā)起訂票申請(qǐng)
  • 公司審批人審批訂票申請(qǐng)
  • 會(huì)員收到訂票成功通知

把這幾個(gè)步驟拆出來(lái)優(yōu)先實(shí)現(xiàn),及早上線;而中間的跟票務(wù)相關(guān)的步驟,仍然采用線下的形式。比如工作人員在攜程商旅后臺(tái),把訂單導(dǎo)出到excel表中,人肉打電話給票代,再把票代確定的訂票信息填入系統(tǒng),然后手動(dòng)通知會(huì)員。這種方式對(duì)于一些流程復(fù)雜但用戶量較小的初創(chuàng)公司比較適用,可以在保證用戶體驗(yàn)的情況下,大大提升產(chǎn)品上線速度,并降低試錯(cuò)成本。

在這里要注意的是,不管是橫切還是縱切,工作流中的每一個(gè)步驟都會(huì)遵循80/20法則,也就是20%的功能決定了這個(gè)步驟的核心價(jià)值,而80%的功能僅僅是錦上添花的,所以我們需要更深刻地研究客戶的真正需求是什么,提煉出這20%的業(yè)務(wù)價(jià)值到底在哪里,從而進(jìn)行更加合理的拆分。

功能模塊拆分

對(duì)于已經(jīng)拆出的功能模塊,仍然可以根據(jù)一些方法進(jìn)行進(jìn)一步的拆分,這里介紹三個(gè)方法。

1、按業(yè)務(wù)規(guī)則拆分

同樣的流程和操作,由于輸入的數(shù)據(jù)業(yè)務(wù)規(guī)則不同,因此進(jìn)行數(shù)據(jù)處理時(shí)采用的方式也不同。對(duì)于這樣的情況,我們可以把功能按照業(yè)務(wù)規(guī)則來(lái)進(jìn)行拆分。

典型的例子是搜索引擎,比如Google。在Google中,輸入框只有一個(gè),但Google會(huì)根據(jù)你所輸入的數(shù)據(jù)規(guī)則的不同,來(lái)進(jìn)行不同的處理操作。看下面幾種情況:

  • 在Google搜索框中輸入一個(gè)關(guān)鍵字,得到這個(gè)關(guān)鍵字相關(guān)的搜索結(jié)果
  • 在Google搜索框中輸入一個(gè)算式,如“ 1+1=”,得到算式的結(jié)果
  • 在Google搜索礦中輸入“ThoughtWorks site:www.example.com”,得到在www.example.com這個(gè)站點(diǎn)中出現(xiàn)ThoughtWorks的頁(yè)面

對(duì)于這樣的情況,我們可以把每一個(gè)業(yè)務(wù)規(guī)則都單獨(dú)拆分成一個(gè)用戶故事。當(dāng)然,雖然這些用戶故事看起來(lái)很相似,但是大部分情況下,這些規(guī)則的優(yōu)先級(jí)是截然不同的。總會(huì)有一簇最高優(yōu)先級(jí)的用戶故事以及圍繞在外圍的用戶故事。比如在這個(gè)例子中,對(duì)于Google來(lái)說(shuō),支持關(guān)鍵字搜索一定是最高優(yōu)先級(jí)的,需要在產(chǎn)品設(shè)計(jì)的一開(kāi)始就要實(shí)現(xiàn),而能夠計(jì)算算式的,可能很多年之后,才開(kāi)始考慮加這樣一個(gè)功能。

2、1+N模式

第二種情況,是對(duì)同樣一個(gè)流程,在終端接不同的網(wǎng)關(guān)或渠道。最典型的例子是在線支付。比如,我在京東上買(mǎi)了一盒磁力橡皮泥,提交訂單進(jìn)入支付流程,在支付頁(yè)面可以選擇微信支付、京東支付、銀行卡支付等等。

第一次實(shí)現(xiàn)支付的功能,可能會(huì)比較復(fù)雜,但后面如果從一種擴(kuò)充到多種支付方式,就相對(duì)比較簡(jiǎn)單。而且最先需要支持什么樣的支付方式,你可能在一開(kāi)始也拿不定主意。這個(gè)時(shí)候,我們不妨將支付功能拆成2張卡,形如

  • 會(huì)員可以使用微信支付/京東支付/網(wǎng)銀支付中的一種進(jìn)行支付
  • 會(huì)員可以使用微信支付/京東支付/網(wǎng)銀支付三種渠道進(jìn)行支付

使用這種拆分方法,可以延遲決策-我們需要最先支持哪種支付方式,同時(shí)合理的評(píng)估項(xiàng)目的工作量。

3、復(fù)雜的業(yè)務(wù)模型拆分

對(duì)于有的系統(tǒng),業(yè)務(wù)模型可能會(huì)非常復(fù)雜,比如一個(gè)房產(chǎn)交易平臺(tái)中的房產(chǎn)信息,可能包含戶型信息、中介信息、地理位置信息、價(jià)格及購(gòu)買(mǎi)相關(guān)的稅率信息、展示圖、效果動(dòng)畫(huà)等等,當(dāng)我們需要在系統(tǒng)中引入這樣一個(gè)業(yè)務(wù)模型時(shí),如果一上來(lái)就要考慮清楚這個(gè)業(yè)務(wù)模型的方方面面,是個(gè)性價(jià)比很低的事情——做了很多功課,但沒(méi)有給客戶帶來(lái)真正的業(yè)務(wù)價(jià)值。

這個(gè)時(shí)候,我們需要將業(yè)務(wù)模型,按照我們實(shí)際需要提供的功能進(jìn)行拆分。比如,我們要做一個(gè)中介搜索系統(tǒng),可以僅取出模型中的中介信息,而不需要處理其它部分。即使我們需要整個(gè)業(yè)務(wù)模型去做一些事情,也可以把其拆成一個(gè)個(gè)子模型,根據(jù)子模型的業(yè)務(wù)價(jià)值及優(yōu)先級(jí)去設(shè)計(jì)相應(yīng)的功能。

比如在這個(gè)例子中,我們需要對(duì)房產(chǎn)的信息做展示

  • 對(duì)于戶型信息,需要有戶型圖,戶型相關(guān)的文案展示
  • 對(duì)于中介信息,可以看到中介人的頭像、聯(lián)系方式,可以使用多種方式在線聯(lián)系中介代理
  • 對(duì)于地理信息,我可以在Google Map上查看其地理位置,并能夠從我的位置導(dǎo)航過(guò)去
  • 對(duì)于展示的圖片和動(dòng)畫(huà),我需要像幻燈片一樣,可以在頁(yè)面上播放
  • ……

那么,如果我們一開(kāi)始就著手于解析這個(gè)房產(chǎn)業(yè)務(wù)模型,那可能浪費(fèi)了很多時(shí)間,而沒(méi)有交付對(duì)用戶有價(jià)值的業(yè)務(wù)功能。這個(gè)時(shí)候,我們需要區(qū)分哪些信息是核心信息,是對(duì)用戶來(lái)說(shuō)最有價(jià)值的,把這些信息從業(yè)務(wù)模型中提取出來(lái),而后設(shè)計(jì)相應(yīng)的更小的業(yè)務(wù)功能,切忌一蹴而就。

需求拆分是否有一套完美的方法?

需求拆分是沒(méi)有銀彈的,要根據(jù)具體的場(chǎng)景、限制來(lái)選擇合適的拆分方法。在遇到使用某個(gè)拆分方法,不能滿足當(dāng)前業(yè)務(wù)需求時(shí),看看是不是可以換個(gè)思路,換個(gè)方法。

當(dāng)然,在選擇拆分方法時(shí),也有一些技巧,如

  • 基于80/20法則,選擇那些可以拆出低優(yōu)先級(jí)卡片(或者可以被扔掉的卡片)的拆卡法。
  • 選擇可以把卡片拆的大小差不多的方法,未來(lái)在發(fā)布計(jì)劃中更容易做需求置換
  • 選擇開(kāi)發(fā)團(tuán)隊(duì)更容易理解和實(shí)現(xiàn)的方式

當(dāng)然,這一定不全面,每個(gè)人在不同的場(chǎng)景、限制條件下,都會(huì)有不同的技巧。相信你自己的拆分方法,多與團(tuán)隊(duì)成員溝通才是不變的法門(mén)。

以終為始-故事驗(yàn)收方法

Bill Wake提出了一個(gè)好用戶故事的驗(yàn)收標(biāo)準(zhǔn)——INVEST模型,它由六個(gè)單詞的首字母組成,分別是

  • Independent:每個(gè)用戶故事應(yīng)該是獨(dú)立的,不會(huì)和其他用戶故事產(chǎn)生耦合
  • Negotiable:并不會(huì)非常明確的闡述功能,細(xì)節(jié)應(yīng)帶到開(kāi)發(fā)階段跟程序員、客戶來(lái)共同商議
  • Valuable:每一個(gè)用戶故事的交付都要能夠給用戶帶來(lái)用戶價(jià)值
  • Estimable:不需要能夠準(zhǔn)確的估計(jì),但需要能輔助客戶排定優(yōu)先級(jí)
  • Small:要小一點(diǎn),但不是越小越好,要大小合適,可以更容易的圈定故事范圍
  • Testable:需要能夠進(jìn)行驗(yàn)收測(cè)試,最好能把Test Case提前加進(jìn)去

這不僅僅是故事的驗(yàn)收原則,更是在進(jìn)行需求拆分的時(shí)候所需要考慮的拆分原則。當(dāng)然,凡事有例外。在需求拆分中,有時(shí)會(huì)拆出一些實(shí)在不能滿足INVEST原則的故事卡片,也不要太糾結(jié),我們追求完美,但也總要接受現(xiàn)實(shí)的不完美。這個(gè)時(shí)候,跟開(kāi)發(fā)團(tuán)隊(duì)多交流,開(kāi)拓思路,協(xié)調(diào)一個(gè)比較好的拆分方式,比自己一個(gè)人憋大招要好的多。

最后

再介紹幾個(gè)反模式。

  • 按照技術(shù)架構(gòu)分層進(jìn)行拆分,常見(jiàn)的會(huì)按照持久層、應(yīng)用層、展示層進(jìn)行拆分。這種拆分方式拆出來(lái)的用戶故事,會(huì)明顯破壞INVEST中的Valuable的原則,而且各個(gè)故事卡由于各方面的原因,如開(kāi)發(fā)進(jìn)度不統(tǒng)一,無(wú)法靈活的集成上線。
  • 拆分時(shí),把復(fù)雜的UI交互算在故事卡片中。大部分情況下,比較fancy的UI交互都不是核心的業(yè)務(wù)功能,這部分功能可以作為用戶體驗(yàn)優(yōu)化的卡片,獨(dú)立拆出來(lái)。
  • 拆分時(shí),過(guò)早考慮性能問(wèn)題。在性能基本達(dá)標(biāo)、不出現(xiàn)大問(wèn)題的情況下,提升性能很多情況下也屬于用戶體驗(yàn)的一部分,可以單獨(dú)拆出來(lái),左右優(yōu)化卡片。
  • 拆出一些管理類的卡片。比如管理產(chǎn)品,實(shí)際上可能包含很多產(chǎn)品相關(guān)的操作,如導(dǎo)入、編輯、同步信息、改變狀態(tài)、上架、下架等,所以應(yīng)該根據(jù)具體的功能,拆分成更為準(zhǔn)確和大小合適的故事卡片。

歐陽(yáng)修在《賣(mài)油翁》中,提到一個(gè)老翁,在倒油時(shí)能通過(guò)銅錢(qián)中心的方孔,卻不灑一滴油,大家都很驚嘆,他只說(shuō)了一句話——“無(wú)他,但手熟爾”。需求拆分也一樣,并沒(méi)有什么高深的學(xué)問(wèn),拆的次數(shù)多了,也便有了那份手熟。

 

作者:張久坤,ThoughtWorks 高級(jí)咨詢師。程序員出身,參與過(guò)多個(gè)國(guó)內(nèi)外大型項(xiàng)目的交付工作,對(duì)敏捷有深入的理解,目前專注于敏捷項(xiàng)目的業(yè)務(wù)分析和項(xiàng)目管理的工作。

本文由 @張久坤 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 博主“根據(jù)選擇的城市,找出最近的機(jī)場(chǎng)所在城市”,這句話是不是寫(xiě)錯(cuò)了,應(yīng)該為“根據(jù)選擇的城市,找出所在城市最近的機(jī)場(chǎng)”??

    來(lái)自上海 回復(fù)
  2. 從1+N那里開(kāi)始就沒(méi)看明白……

    來(lái)自上海 回復(fù)
  3. 沒(méi)看懂

    來(lái)自北京 回復(fù)
  4. 沙發(fā),支持下

    來(lái)自廣東 回復(fù)