作為一個產(chǎn)品經(jīng)理斥难,對待產(chǎn)品的心情與態(tài)度好比是什么呢座享?做個最形象的比喻就是將產(chǎn)品當(dāng)做自己的親身骨肉一樣看待俄烁。 從產(chǎn)品的創(chuàng)意開始苞也,一直到產(chǎn)品上線實際運營當(dāng)中的每個細節(jié)都要無微不至的照顧到,負責(zé)到底。
對于一個產(chǎn)品最終出來纵穿,會不會有先天缺陷畸形下隧,會不會很難帶大成人。其中重要的一環(huán)谓媒,就是在產(chǎn)品開發(fā)之前的策劃淆院。工作內(nèi)容的合理分解與計劃。這一步做好了句惯,團隊就有了為之奮斗的目標(biāo)土辩。整體像一臺精密的設(shè)備一樣,按部就班的抢野,運轉(zhuǎn)良好拷淘。如果沒做好,就會引來團隊內(nèi)部人員的相互扯皮指孤,埋怨启涯。最終導(dǎo)致產(chǎn)品胎死腹中。
今天來談一談類似攜程網(wǎng)這樣的工作流產(chǎn)品恃轩,產(chǎn)品經(jīng)理在開發(fā)之前需要做到如何的拆解工作逝嚎,才能發(fā)揮團隊的最大效益。當(dāng)我們面對一個復(fù)雜的業(yè)務(wù)需求時详恼,如果不得其構(gòu)造补君,不明其法,是不能夠很好的拆解的昧互。
工作流系統(tǒng)
我們平時經(jīng)常會接觸到工作流類的系統(tǒng)挽铁。所謂工作流,就是我在完成一件工作的過程中敞掘,需要經(jīng)過多個步驟叽掘,可能還會有多個不同的角色參與。對于這種系統(tǒng)玖雁,我們一般有兩種方式 —— 橫切和縱切更扁。
1、橫切
所謂橫切赫冬,就是先切分出工作流中核心且輕薄的一層浓镜,然后再去實現(xiàn)各個步驟中的細節(jié)部分。這對于那些核心業(yè)務(wù)邏輯比較簡單劲厌、但每個步驟的附屬功能多且復(fù)雜的工作流系統(tǒng)來說比較適用膛薛。
(橫切示例)
舉個例子:
假如現(xiàn)在我們需要做一個商旅訂票系統(tǒng),其簡化的訂票流程如下圖所示:
(攜程商旅的工作流案例)
在這個流程中补鼻,每個步驟都包含了很多個功能哄啄。比如“會員查找需要預(yù)定的航班”這一步雅任,會員的需求可能會包含:
? 根據(jù)起始城市搜索航班
? 根據(jù)選擇的城市,找出最近的機場所在城市
? 使用GPS定位所在城市
? 翻轉(zhuǎn)起止城市
? 根據(jù)航班號選擇航班
如果采用橫切的話咨跌,我們僅會選取讓本流程可以工作的最小故事集沪么,如
? 根據(jù)起始城市搜索航班
甚至,在本故事中锌半,我們可以設(shè)置會員僅能通過精確輸入起落地城市名稱的方式成玫,來進行航班搜索,在不影響本步驟走通的情況下拳喻,來最小化這個步驟的工作量。其它的流程也使用同樣的策略猪腕,來加速打通整個業(yè)務(wù)流程冗澈。
橫切的優(yōu)勢在于可以快速實現(xiàn)核心邏輯,并快速上線陋葡,驗證假設(shè)并收集反饋亚亲,可以根據(jù)反饋的結(jié)果來決定每個步驟中的功能應(yīng)該如何設(shè)計、優(yōu)先級是什么腐缤,來避免一些可能出現(xiàn)的浪費捌归。缺點在于整個工作流設(shè)計會采用短平快的原則,用戶體驗較差岭粤。
2惜索、縱切
另一種方式是縱切√杲剑縱切就是按照工作流中的每一個步驟進行切分巾兆,這樣可以使每一個步驟都具有相對完善的功能,這在某些需要關(guān)注終端用戶交互體驗的產(chǎn)品中應(yīng)用較多虎囚。注意角塑,這里有個技巧:如果在整個工作流中,需要跟終端用戶進行交互的功能僅出現(xiàn)在某幾步中淘讥,如第一步和最后一步圃伶,而中間的N-2步都是后臺流程,在開發(fā)中蒲列,我們可以先實現(xiàn)第一步和最后一步的功能窒朋,而中間的流程處理環(huán)節(jié),仍然采用逐步線上化的方式蝗岖,這樣可以使整個工作流系統(tǒng)最快的上線炼邀,同時能平衡用戶的交互體驗。
(縱切)
比如上面攜程商旅訂票系統(tǒng)的例子剪侮,我們可以把涉及終端用戶操作的步驟:
? 會員查找航班
? 會員發(fā)起訂票申請
? 公司審批人審批訂票申請
? 會員收到訂票成功通知
把這幾個步驟拆出來優(yōu)先實現(xiàn)拭宁,及早上線洛退;而中間的跟票務(wù)相關(guān)的步驟,仍然采用線下的形式杰标。比如工作人員在攜程商旅后臺兵怯,把訂單導(dǎo)出到excel表中,人肉打電話給票代腔剂,再把票代確定的訂票信息填入系統(tǒng)媒区,然后手動通知會員。這種方式對于一些流程復(fù)雜但用戶量較小的初創(chuàng)公司比較適用掸犬,可以在保證用戶體驗的情況下袜漩,大大提升產(chǎn)品上線速度,并降低試錯成本湾碎。
在這里要注意的是宙攻,不管是橫切還是縱切,工作流中的每一個步驟都會遵循80/20法則介褥,也就是20%的功能決定了這個步驟的核心價值座掘,而80%的功能僅僅是錦上添花的,所以我們需要更深刻地研究客戶的真正需求是什么柔滔,提煉出這20%的業(yè)務(wù)價值到底在哪里溢陪,從而進行更加合理的拆分。
功能模塊拆分
對于已經(jīng)拆出的功能模塊睛廊,仍然可以根據(jù)一些方法進行進一步的拆分形真,這里介紹三個方法。
1超全、按業(yè)務(wù)規(guī)則拆分
同樣的流程和操作没酣,由于輸入的數(shù)據(jù)業(yè)務(wù)規(guī)則不同,因此進行數(shù)據(jù)處理時采用的方式也不同卵迂。對于這樣的情況裕便,我們可以把功能按照業(yè)務(wù)規(guī)則來進行拆分。
典型的例子是搜索引擎见咒,比如Google偿衰。在Google中,輸入框只有一個改览,但Google會根據(jù)你所輸入的數(shù)據(jù)規(guī)則的不同下翎,來進行不同的處理操作”Φ保看下面幾種情況:
? 在Google搜索框中輸入一個關(guān)鍵字视事,得到這個關(guān)鍵字相關(guān)的搜索結(jié)果
? 在Google搜索框中輸入一個算式,如“ 1+1=”庆揩,得到算式的結(jié)果
? 在Google搜索礦中輸入“ThoughtWorks site:www.example.com”俐东,得到在http://www.example.com這個站點中出現(xiàn)ThoughtWorks的頁面
? …
對于這樣的情況跌穗,我們可以把每一個業(yè)務(wù)規(guī)則都單獨拆分成一個用戶故事。當(dāng)然虏辫,雖然這些用戶故事看起來很相似蚌吸,但是大部分情況下,這些規(guī)則的優(yōu)先級是截然不同的砌庄「耄總會有一簇最高優(yōu)先級的用戶故事以及圍繞在外圍的用戶故事。比如在這個例子中娄昆,對于Google來說佩微,支持關(guān)鍵字搜索一定是最高優(yōu)先級的,需要在產(chǎn)品設(shè)計的一開始就要實現(xiàn)萌焰,而能夠計算算式的哺眯,可能很多年之后,才開始考慮加這樣一個功能杆怕。
2、1+N模式
第二種情況壳贪,是對同樣一個流程陵珍,在終端接不同的網(wǎng)關(guān)或渠道。最典型的例子是在線支付违施。比如互纯,我在京東上買了一盒磁力橡皮泥,提交訂單進入支付流程磕蒲,在支付頁面可以選擇微信支付留潦、京東支付、銀行卡支付等等辣往。
第一次實現(xiàn)支付的功能兔院,可能會比較復(fù)雜,但后面如果從一種擴充到多種支付方式站削,就相對比較簡單坊萝。而且最先需要支持什么樣的支付方式,你可能在一開始也拿不定主意许起。這個時候十偶,我們不妨將支付功能拆成2張卡,形如
? 會員可以使用微信支付/京東支付/網(wǎng)銀支付中的一種進行支付
? 會員可以使用微信支付/京東支付/網(wǎng)銀支付三種渠道進行支付
使用這種拆分方法园细,可以延遲決策-我們需要最先支持哪種支付方式惦积,同時合理的評估項目的工作量。
3猛频、復(fù)雜的業(yè)務(wù)模型拆分
對于有的系統(tǒng)狮崩,業(yè)務(wù)模型可能會非常復(fù)雜蛛勉,比如一個房產(chǎn)交易平臺中的房產(chǎn)信息,可能包含戶型信息厉亏、中介信息董习、地理位置信息、價格及購買相關(guān)的稅率信息爱只、展示圖皿淋、效果動畫等等,當(dāng)我們需要在系統(tǒng)中引入這樣一個業(yè)務(wù)模型時恬试,如果一上來就要考慮清楚這個業(yè)務(wù)模型的方方面面窝趣,是個性價比很低的事情——做了很多功課,但沒有給客戶帶來真正的業(yè)務(wù)價值训柴。
這個時候哑舒,我們需要將業(yè)務(wù)模型,按照我們實際需要提供的功能進行拆分幻馁。比如洗鸵,我們要做一個中介搜索系統(tǒng),可以僅取出模型中的中介信息仗嗦,而不需要處理其它部分膘滨。即使我們需要整個業(yè)務(wù)模型去做一些事情,也可以把其拆成一個個子模型稀拐,根據(jù)子模型的業(yè)務(wù)價值及優(yōu)先級去設(shè)計相應(yīng)的功能火邓。
比如在這個例子中,我們需要對房產(chǎn)的信息做展示
? 對于戶型信息德撬,需要有戶型圖铲咨,戶型相關(guān)的文案展示
? 對于中介信息,可以看到中介人的頭像蜓洪、聯(lián)系方式纤勒,可以使用多種方式在線聯(lián)系中介代理
? 對于地理信息,我可以在Google Map上查看其地理位置隆檀,并能夠從我的位置導(dǎo)航過去
? 對于展示的圖片和動畫踊东,我需要像幻燈片一樣,可以在頁面上播放
? ……
那么刚操,如果我們一開始就著手于解析這個房產(chǎn)業(yè)務(wù)模型闸翅,那可能浪費了很多時間,而沒有交付對用戶有價值的業(yè)務(wù)功能菊霜。這個時候坚冀,我們需要區(qū)分哪些信息是核心信息,是對用戶來說最有價值的鉴逞,把這些信息從業(yè)務(wù)模型中提取出來记某,而后設(shè)計相應(yīng)的更小的業(yè)務(wù)功能司训,切忌一蹴而就。
需求拆分是否有一套完美的方法液南?
需求拆分是沒有銀彈的壳猜,要根據(jù)具體的場景、限制來選擇合適的拆分方法滑凉。在遇到使用某個拆分方法统扳,不能滿足當(dāng)前業(yè)務(wù)需求時,看看是不是可以換個思路畅姊,換個方法咒钟。
當(dāng)然,在選擇拆分方法時若未,也有一些技巧朱嘴,如
? 基于80/20法則,選擇那些可以拆出低優(yōu)先級卡片(或者可以被扔掉的卡片)的拆卡法粗合。
? 選擇可以把卡片拆的大小差不多的方法萍嬉,未來在發(fā)布計劃中更容易做需求置換
? 選擇開發(fā)團隊更容易理解和實現(xiàn)的方式
當(dāng)然,這一定不全面隙疚,每個人在不同的場景壤追、限制條件下,都會有不同的技巧甚淡。相信你自己的拆分方法大诸,多與團隊成員溝通才是不變的法門捅厂。
以終為始-故事驗收方法
Bill Wake提出了一個好用戶故事的驗收標(biāo)準(zhǔn)——INVEST模型贯卦,它由六個單詞的首字母組成,分別是
? Independent:每個用戶故事應(yīng)該是獨立的焙贷,不會和其他用戶故事產(chǎn)生耦合
? Negotiable:并不會非常明確的闡述功能撵割,細節(jié)應(yīng)帶到開發(fā)階段跟程序員、客戶來共同商議
? Valuable:每一個用戶故事的交付都要能夠給用戶帶來用戶價值
? Estimable:不需要能夠準(zhǔn)確的估計辙芍,但需要能輔助客戶排定優(yōu)先級
? Small:要小一點啡彬,但不是越小越好,要大小合適故硅,可以更容易的圈定故事范圍
? Testable:需要能夠進行驗收測試庶灿,最好能把Test Case提前加進去
這不僅僅是故事的驗收原則,更是在進行需求拆分的時候所需要考慮的拆分原則吃衅。當(dāng)然往踢,凡事有例外。在需求拆分中徘层,有時會拆出一些實在不能滿足INVEST原則的故事卡片峻呕,也不要太糾結(jié)利职,我們追求完美,但也總要接受現(xiàn)實的不完美瘦癌。這個時候猪贪,跟開發(fā)團隊多交流,開拓思路讯私,協(xié)調(diào)一個比較好的拆分方式热押,比自己一個人憋大招要好的多。
最后
再介紹幾個反模式妄帘。
? 按照技術(shù)架構(gòu)分層進行拆分楞黄,常見的會按照持久層、應(yīng)用層抡驼、展示層進行拆分鬼廓。這種拆分方式拆出來的用戶故事,會明顯破壞INVEST中的Valuable的原則致盟,而且各個故事卡由于各方面的原因碎税,如開發(fā)進度不統(tǒng)一,無法靈活的集成上線馏锡。
? 拆分時雷蹂,把復(fù)雜的UI交互算在故事卡片中。大部分情況下杯道,比較fancy的UI交互都不是核心的業(yè)務(wù)功能匪煌,這部分功能可以作為用戶體驗優(yōu)化的卡片,獨立拆出來党巾。
? 拆分時萎庭,過早考慮性能問題。在性能基本達標(biāo)齿拂、不出現(xiàn)大問題的情況下驳规,提升性能很多情況下也屬于用戶體驗的一部分,可以單獨拆出來署海,左右優(yōu)化卡片吗购。
? 拆出一些管理類的卡片。比如管理產(chǎn)品砸狞,實際上可能包含很多產(chǎn)品相關(guān)的操作捻勉,如導(dǎo)入、編輯刀森、同步信息踱启、改變狀態(tài)、上架、下架等禽捆,所以應(yīng)該根據(jù)具體的功能笙什,拆分成更為準(zhǔn)確和大小合適的故事卡片。
最后胚想,
對新手來說琐凭,對于如上的方法,看似繁瑣復(fù)雜浊服。但是當(dāng)你親手操作了兩個項目之后统屈,有些步驟已經(jīng)內(nèi)化成了你的潛意識。上手之后就知道第一步要做什么牙躺,第二步要做什么愁憔。需求拆分多了,并沒有什么高深的學(xué)問孽拷,拆的次數(shù)多了吨掌,也便有了那份手熟。