如何寫出受技術(shù)歡迎的需求文檔?
正如我們做出來(lái)的產(chǎn)品都希望受用戶歡迎,開(kāi)發(fā)和測(cè)試是需求文檔的用戶,產(chǎn)品經(jīng)理也應(yīng)該重視他們的想法和要求才能寫得令人滿意。
“寫需求文檔”說(shuō)專業(yè)點(diǎn)是把用戶(或運(yùn)營(yíng)、客服等)的需求轉(zhuǎn)化成技術(shù)部門的話語(yǔ),因此了解技術(shù)術(shù)語(yǔ)是產(chǎn)品經(jīng)理的基本素質(zhì)。要做到需求文檔受歡迎,了解術(shù)語(yǔ)是不夠的。雖然不可能寫得像開(kāi)發(fā)人員寫設(shè)計(jì)文檔的一樣專業(yè),但產(chǎn)品經(jīng)理如果能運(yùn)用技術(shù)人員的思維多做些考慮,就能減少評(píng)審過(guò)程的反復(fù)溝通,那必然能收到大量好評(píng)。
技術(shù)人員的思維同樣是被工作環(huán)境和內(nèi)容訓(xùn)練形成的,編程語(yǔ)言、架構(gòu)設(shè)計(jì)、測(cè)試方法是最主要的因素。其中,開(kāi)發(fā)人員會(huì)有這些思維:
- 組件與模塊;
- 流程與聯(lián)系;
- 條件與時(shí)機(jī);
- 類型與精度。
測(cè)試也會(huì)有獨(dú)特的思維:
- 極端;
- 因果;
- 場(chǎng)景:一系列的組合條件。
另外,用戶體驗(yàn)思維中的“層次分明、重點(diǎn)突出”,也非常有助于優(yōu)化需求文檔的視覺(jué)效果以提高閱讀效率。
我們以每種思維作為章節(jié)來(lái)回答本文的問(wèn)題。
開(kāi)發(fā)思維:組件與模塊
我們寫文章都不是從頭到尾就一段話的,會(huì)分段落、章節(jié),這樣能幫助做到條理清晰。代碼的本質(zhì)也是“文章”,組件和模塊就像是段落和章節(jié),他們會(huì)對(duì)應(yīng)一個(gè)功能、界面或規(guī)則。
為此,需求本身也應(yīng)有拆分:產(chǎn)品有結(jié)構(gòu)、功能有細(xì)分、界面分區(qū)塊等。
產(chǎn)品結(jié)構(gòu)圖就像文章的目錄,在做新項(xiàng)目的時(shí)候應(yīng)該附上。它不僅幫助產(chǎn)品經(jīng)理自己梳理子需求,也讓整個(gè)項(xiàng)目組都清晰知道產(chǎn)品的構(gòu)成,對(duì)開(kāi)發(fā)、測(cè)試、UI設(shè)計(jì)師后續(xù)的工作都有指導(dǎo)作用。現(xiàn)在多數(shù)人會(huì)用思維導(dǎo)圖來(lái)畫,原因就是它的最大作用是理順?biāo)悸贰?/p>
功能細(xì)分可以用“評(píng)論”功能來(lái)舉例,它可分為:
- 前置的登錄注冊(cè)等條件;
- 界面上評(píng)論區(qū)的功能(比如:@他人,回復(fù)某樓層,引用回復(fù),表情輸入等);
- 提交前的限制條件校驗(yàn)(比如:字?jǐn)?shù)、特殊字符);
- 提交評(píng)論的過(guò)程;
- 評(píng)論的內(nèi)容檢驗(yàn)(比如:涉黃、敏感信息);
- 評(píng)論后的展示(比如:引用回復(fù)、互相@);
- 用戶信息里的評(píng)論信息更新。
如何做需求拆解是沒(méi)有固定模式的,跟業(yè)務(wù)有緊密關(guān)系,一般的兩個(gè)思路是流程和規(guī)則。
下圖是界面分區(qū)塊的示例(示例的意思是在原型和文檔上這樣命名,這不是原型圖)
分區(qū)塊并進(jìn)行命名的好處:
- 利于文檔描述,減少說(shuō)明字?jǐn)?shù),加速閱讀。
- 利于溝通。大家只要說(shuō)一個(gè)名字,就知道是說(shuō)哪個(gè)部分,不用對(duì)著界面說(shuō)。如果整個(gè)產(chǎn)品每個(gè)區(qū)域的名字是唯一的,那么報(bào)bug的時(shí)候可能連操作路徑和截圖都不需要了。
- 一般來(lái)說(shuō),開(kāi)發(fā)寫代碼時(shí)也會(huì)用這些命名的(翻譯成英語(yǔ)),他們會(huì)很感激產(chǎn)品經(jīng)理幫他們想好了名字。
開(kāi)發(fā)思維:流程與聯(lián)系
需求是一個(gè)整體,拆分后的各部分必然仍有聯(lián)系,他們的協(xié)作步驟即是流程。產(chǎn)品的交互設(shè)計(jì)在代碼流程上是大致對(duì)應(yīng)的,所以如果產(chǎn)品經(jīng)理能把流程描述詳盡的話,開(kāi)發(fā)的工作差不多等于把這堆“中文”用編程語(yǔ)言翻譯一遍而已。
如果流程足夠復(fù)雜,就需要用圖來(lái)表達(dá)。畫圖是描述復(fù)雜事物的基本技巧,不僅僅是需求文檔的寫作要求了,這里不展開(kāi)講。
那么怎么才算復(fù)雜呢?
一般簡(jiǎn)單的判斷是:以最長(zhǎng)的步驟路徑為基準(zhǔn),如果超過(guò)30%的步驟有分支就應(yīng)該畫流程圖。例如:如果有7個(gè)步驟,有3個(gè)步驟是“是非選擇”或“循環(huán)指向”,那就該畫;只有2個(gè)步驟有分支就不用畫,用文字說(shuō)明白。延伸地講,如果分支太多,需求本身可能就有問(wèn)題了,應(yīng)該從交互設(shè)計(jì)上去簡(jiǎn)化它,不應(yīng)該給用戶這么多可選擇的東西而造成困擾。
一個(gè)實(shí)際的文字描述步驟例子:
- 進(jìn)入“我”頁(yè)面;
- 是否已登錄,是則繼續(xù),否則進(jìn)入“登錄”流程;
- 點(diǎn)擊“評(píng)論”區(qū),進(jìn)入評(píng)論頁(yè);
- 如果評(píng)論數(shù)為空,顯示占位圖,否則顯示評(píng)論列表;
- 點(diǎn)擊評(píng)論列表中的一條,進(jìn)入帖子詳情頁(yè),并且頁(yè)面自動(dòng)滾動(dòng)到那條評(píng)論的位置;
- 用戶點(diǎn)右上角的“關(guān)閉”,跳回第4步,否則按“帖子詳情頁(yè)”的流程繼續(xù)。
在上面的例子里,我們也看到,流程之間會(huì)產(chǎn)生聯(lián)系。一個(gè)流程中的某些步驟可以關(guān)聯(lián)到另一個(gè)流程,這些流程之間的聯(lián)系,在開(kāi)發(fā)設(shè)計(jì)中會(huì)體現(xiàn)為“模塊間的依賴或調(diào)用關(guān)系”。
作為產(chǎn)品經(jīng)理無(wú)需理解前面雙引號(hào)內(nèi)詞語(yǔ)的技術(shù)意義,但有一個(gè)很典型的場(chǎng)景能幫助大家認(rèn)識(shí)它的作用:開(kāi)發(fā)解決了一個(gè)bug后導(dǎo)致了別的bug。更經(jīng)典的是,開(kāi)發(fā)抱怨說(shuō)這是因?yàn)楫a(chǎn)品的新需求沒(méi)考慮到對(duì)原有功能的影響。
無(wú)論最終是否開(kāi)發(fā)的責(zé)任,產(chǎn)品經(jīng)理也應(yīng)該去梳理各個(gè)需求之間的聯(lián)系,包括界面、交互、功能的相互影響。最好是文檔中有獨(dú)立的章節(jié)列出需求間的關(guān)聯(lián),這不僅是幫助開(kāi)發(fā)測(cè)試做好設(shè)計(jì),也是為自己檢查疏漏。
拿一個(gè)普遍的需求“登錄”來(lái)舉例,產(chǎn)品經(jīng)理應(yīng)該列一下所有“不登錄就不能訪問(wèn)的頁(yè)面”。以后改動(dòng)登錄功能的時(shí)候,自己也可以一下子看清所有的影響范圍,這個(gè)習(xí)慣最能防止“狀態(tài)多層次級(jí)聯(lián)”(如:A影響B(tài),B影響C)的情況下考慮不周。
開(kāi)發(fā)思維:條件與時(shí)機(jī)
計(jì)算機(jī)是不會(huì)執(zhí)行沒(méi)描述過(guò)的操作的,即使是火熱的人工智能,也是要經(jīng)過(guò)訓(xùn)練才知道什么條件做什么操作。
所以開(kāi)發(fā)需要在代碼中精確描述:
- 流程的入口場(chǎng)景,即這種“可能性”的觸發(fā)時(shí)機(jī)。
- 流程內(nèi)每個(gè)步驟的執(zhí)行條件。
不同的條件會(huì)導(dǎo)致不同的結(jié)果,這對(duì)用戶使用有重大影響,所以一定把所有的條件和可能性都列出來(lái)。一般來(lái)說(shuō),產(chǎn)品經(jīng)理最大的疏漏是沒(méi)考慮異常情況。
其實(shí)無(wú)論過(guò)程怎樣,最終反映在界面上只有4種結(jié)果:
- 加載中;
- 數(shù)據(jù)正常,正常顯示;
- 無(wú)數(shù)據(jù),數(shù)據(jù)為空;
- 出錯(cuò),包括超時(shí)。
產(chǎn)品經(jīng)理把這4種結(jié)果的界面都定義清楚,就能覆蓋所有中間過(guò)程的情況。當(dāng)然,最好還是能把中間過(guò)程的可能性都考慮周全,并針對(duì)不同的狀況有更精細(xì)化的結(jié)果展示。
開(kāi)發(fā)思維:類型與精度
這是編程語(yǔ)言(更確切來(lái)說(shuō)是CPU計(jì)算原理)帶來(lái)的思維,我們不去深究計(jì)算機(jī)知識(shí),只需知道對(duì)我們的影響:要用數(shù)據(jù)來(lái)描述一個(gè)事物以便計(jì)算機(jī)能理解。
這些數(shù)據(jù)分兩大類型:數(shù)字與文本。
其中數(shù)字還有這些考慮:
- 整數(shù)還是浮點(diǎn)數(shù),即是否帶有小數(shù)部分;
- 浮點(diǎn)數(shù)保留多少位小數(shù)部分;
- 是否可能是負(fù)數(shù);
- 最大絕對(duì)值是多少(數(shù)字越大,可能會(huì)需要更多內(nèi)存和計(jì)算時(shí)間。做適當(dāng)限制有利于提高性能)。
這個(gè)思維(或者說(shuō)限制)會(huì)影響所有需要用戶輸入交互的地方,如果原型圖上不能明顯看出以上的信息,產(chǎn)品經(jīng)理應(yīng)該有意識(shí)地在文檔中補(bǔ)充。
測(cè)試思維:極端
極端的情況下容易出bug,這是最基本的測(cè)試思路。如果界面上有一個(gè)輸入框,以下幾個(gè)測(cè)試用例肯定會(huì)有:
- 輸入非常多的字符,看是否允許、是否合理顯示;
- 輸入不應(yīng)該允許的數(shù)值,比如超出最大最小值,看能否允許、能否繼續(xù)下一步;
- 輸入不應(yīng)該允許的文本類型,比如身份證號(hào)欄填入中文,看是否允許、能否繼續(xù)下一步。
下面幾種測(cè)試手段,都會(huì)用到極端的思維:
- 最低配置的設(shè)備上能否流暢運(yùn)行?
- 在設(shè)備資源緊張(例如內(nèi)存不足)的時(shí)候,程序還能否正常工作?
- 在最老舊的系統(tǒng)、瀏覽器版本上能否正常運(yùn)行?
- 非常頻繁地進(jìn)行操作,程序還能否正常響應(yīng)?
依據(jù)這個(gè)思維,產(chǎn)品經(jīng)理應(yīng)該把這些東西都定義清楚:
- 可交互界面的輸入類型與范圍;
- 目標(biāo)運(yùn)行環(huán)境的最低配置;
- 兼容性:系統(tǒng)版本、瀏覽器品牌與版本;
- 需要支撐多少用戶同時(shí)在線、多少同時(shí)發(fā)生的流量;
- 要能應(yīng)對(duì)什么程度的故障。
測(cè)試思維:因果
開(kāi)發(fā)思維中“條件與時(shí)機(jī)”注重的是“前提”,測(cè)試還會(huì)做反向思考和補(bǔ)充。除了關(guān)心“什么條件導(dǎo)致了這個(gè)結(jié)果”,還要思考“這個(gè)條件會(huì)導(dǎo)致哪些結(jié)果”,這也是開(kāi)發(fā)寫代碼容易疏忽的。
兩個(gè)典型的問(wèn)題是:登錄后可以做什么,界面上有哪些變化?
這種思維在所有崗位都是適用的,也很容易理解,對(duì)產(chǎn)品經(jīng)理的意義就不細(xì)說(shuō)了。
測(cè)試人員不僅用它來(lái)評(píng)審需求,找bug時(shí)要考慮是什么操作、事項(xiàng)、需求導(dǎo)致了bug以及這些東西的關(guān)聯(lián)關(guān)系、影響范圍等,從而進(jìn)一步發(fā)現(xiàn)更多問(wèn)題。
而且作為需求的實(shí)現(xiàn)者,技術(shù)人員都會(huì)有這個(gè)問(wèn)題:為什么要這樣做,做成了會(huì)有什么結(jié)果?
產(chǎn)品經(jīng)理是有責(zé)任回答這個(gè)問(wèn)題的。其中,“為什么要這樣做”要心里有數(shù),在需求評(píng)審時(shí)被問(wèn)到就要能回答。
不能靠想,要有根據(jù):
- 用戶調(diào)研;
- 統(tǒng)計(jì)數(shù)據(jù)分析;
- 市場(chǎng)調(diào)查;
- 競(jìng)品分析;
- 成功經(jīng)驗(yàn)。
還有“做成了的結(jié)果”應(yīng)該把它以“目標(biāo)”為第一章標(biāo)題寫到需求文檔的前面。
目標(biāo)示例:
- 解決用戶購(gòu)物流程中的不便;
- 給占比有27%的喜歡xxx用戶增加一種選擇,可以對(duì)xxx進(jìn)行操作;
- 轉(zhuǎn)化率至少有12%;
- 提升月活躍度10%(或到30%);
- 提高廣告月收入至300萬(wàn)。
產(chǎn)品經(jīng)理做需求時(shí),應(yīng)該先想好這些目標(biāo),需求是圍繞這些目標(biāo)來(lái)制定的。大家理解這個(gè)目標(biāo)后,還能幫助產(chǎn)品經(jīng)理想出更多更好的方案來(lái)達(dá)成。
測(cè)試思維:場(chǎng)景
“場(chǎng)景”在本文中意為多個(gè)條件共同作用的情況。下表表示的是兩個(gè)條件(行為、身份)下的結(jié)果(權(quán)限)。
設(shè)想增加一個(gè)情況:已綁定微信的會(huì)員可以查看“朋友積分榜”,這就需要一個(gè)“行為-身份-微信綁定-權(quán)限表”。如果有更多條件,就不是一個(gè)表格能說(shuō)明的了。合格的測(cè)試人員會(huì)把這些條件的所有交叉情況都測(cè)一遍,甚至在需求評(píng)審后就要做用例設(shè)計(jì),把需求文檔沒(méi)覆蓋的情況立刻指出來(lái)。
場(chǎng)景的本質(zhì)是條件的排列組合,可以用數(shù)學(xué)公式計(jì)算出有多少可能性。產(chǎn)品經(jīng)理不應(yīng)該把這些情況推托給技術(shù)人員去想,因?yàn)樽顦O端的情況是可能會(huì)發(fā)現(xiàn)某些場(chǎng)景無(wú)解,以致要推翻整個(gè)需求。到評(píng)審?fù)瓴虐l(fā)現(xiàn)這些問(wèn)題就晚了,耽誤了太多人的時(shí)間。
當(dāng)場(chǎng)景過(guò)于復(fù)雜,除了要說(shuō)清楚規(guī)則外,還應(yīng)該寫出示例來(lái)幫助理解。
用戶體驗(yàn)思維:層次分明、重點(diǎn)突出
產(chǎn)品經(jīng)理或設(shè)計(jì)師做網(wǎng)頁(yè)設(shè)計(jì)時(shí)通常會(huì)有這些原則:
- 方便從上到下閱讀,頁(yè)面不會(huì)產(chǎn)生橫向滾動(dòng)條。
- 描述一個(gè)宏觀事物的圖不會(huì)跨越兩屏才看完整。
- 層次分明:標(biāo)題比正文的顏色更深、字號(hào)更大、字形更粗。
- 段落內(nèi)部的重點(diǎn)詞句(一般是超鏈接)要使用更顯眼的顏色,字形可以使用粗體、斜體、下劃線等。
- 無(wú)論需求文檔是寫Word還是用Axure導(dǎo)出網(wǎng)頁(yè)給技術(shù)同事看,以上原則都是適用的:幫助提升閱讀效率。
還有一個(gè)問(wèn)題是表格的運(yùn)用,表格能讓人一下看到哪里有填東西哪里是空白,但并不方便人仔細(xì)閱讀所有的內(nèi)容。什么時(shí)候用表格或列表,這里總結(jié)兩個(gè)簡(jiǎn)單規(guī)則:
- 表格除表頭外至少有3行3列,否則用列表。
- 如果表格寫不出精確的表頭來(lái),也就是每行是不同意義的,用列表。
最后就是,寫需求用Word還是Axure或兩者結(jié)合,都無(wú)所謂,關(guān)鍵是要把事項(xiàng)描述清楚并且方便查閱。
思維應(yīng)用
上述思維的運(yùn)用,最終是為了提高需求的完善程度,避免需求本身有bug。產(chǎn)品經(jīng)理要去學(xué)習(xí)技術(shù)知識(shí)的話,應(yīng)該是要總結(jié)出更多的思維,而不是真的要會(huì)寫代碼。以下按照界面和交互來(lái)總結(jié)一下技術(shù)思維的關(guān)注點(diǎn)。
界面組件上的應(yīng)用:
(1)文本框
- 過(guò)長(zhǎng)如何顯示:換行、顯示省略號(hào);
- 如果換行和省略號(hào)都不要,就要確定文案最大字?jǐn)?shù);
- 數(shù)字保留多少位小數(shù),四舍五入還是去尾或進(jìn)1;
- 數(shù)字的顯示格式,例如:加逗號(hào)或加單位;
- 時(shí)間的顯示格式,例如:是否顯示分秒,日期間用中文還是橫線連接。
(2)輸入框
- 默認(rèn)值;
- 占位符;
- 按下回車的行為;
- 自動(dòng)補(bǔ)全的規(guī)則;
- 可輸入類型:純數(shù)字、文本(中文、外文、特殊字符),是否密碼;
- 輸入限制:文本長(zhǎng)度、小數(shù)位數(shù)、取值范圍、最大最小值、是否必填。
(3)選擇框
- 默認(rèn)狀態(tài);
- 單選還是多選。
(3)下拉列表
- 默認(rèn)值;
- 實(shí)際值與顯示值的對(duì)應(yīng)關(guān)系:例如界面上顯示100+,實(shí)際值是135。
(4)按鈕:點(diǎn)擊后的行為
(5)彈框
- 位置:屏幕中間或中下;
- 顯隱動(dòng)畫:時(shí)長(zhǎng)、方式。
(6)表格:排序規(guī)則。
(7)開(kāi)關(guān):默認(rèn)狀態(tài)。
(8)輪播
- 是否自動(dòng)換頁(yè),間隔時(shí)間;
- 是否顯示分頁(yè)器(“點(diǎn)點(diǎn)”或頁(yè)碼),是否可點(diǎn)擊分頁(yè)器來(lái)?yè)Q頁(yè);
- 是否可循環(huán);
- 是否顯示進(jìn)度條;
- 是否增加每頁(yè)邊距,邊距是多少。
(9)圖片
- 縮放規(guī)則,例如:固定寬度、高度隨原比例;
- 層級(jí):誰(shuí)可以遮蓋誰(shuí)。
交互上的應(yīng)用:
點(diǎn)擊:反饋形式(例如變色)。
手勢(shì)(例如右滑后退):
- 距離;
- 速度;
- 方向。
界面切換:
- 動(dòng)效:時(shí)長(zhǎng);
- 窗口、屏幕改變大?。M豎屏切換)的布局規(guī)則;
- 已輸入的數(shù)據(jù)是否保留;
- 關(guān)聯(lián)關(guān)系。例如選中后會(huì)立刻改變其它控件的狀態(tài)。
本文由 @hursing 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載
題圖來(lái)自Unsplash,基于CC0協(xié)議
感謝??
文章的標(biāo)題和內(nèi)容全錯(cuò)了,文章說(shuō)的這些事情,是交互設(shè)計(jì)師負(fù)責(zé)的,不是產(chǎn)品經(jīng)理負(fù)責(zé)的
也可以這么說(shuō)吧。隨著各種事務(wù)標(biāo)準(zhǔn)化,確實(shí)不少東西在后來(lái)交給交互設(shè)計(jì)師負(fù)責(zé)了。時(shí)代背景不同。不過(guò)后浪懂的東西是越來(lái)越細(xì)了,反而大局觀強(qiáng)的人更少了。
小公司沒(méi)交互設(shè)計(jì) 不活了嗎
看懂的都是有功底的產(chǎn)品狗
文章的標(biāo)題和內(nèi)容全錯(cuò)了,這些事情,是交互設(shè)計(jì)師負(fù)責(zé)的,不是產(chǎn)品經(jīng)理負(fù)責(zé)的
寫文檔的思路一下就清晰了!謝謝作者,學(xué)習(xí)了
謝謝,收獲良多
嗚嗚嗚(┯_┯)早點(diǎn)看到這個(gè)就好了~
我的id就是微信號(hào),歡迎交流
感謝,最近也在寫,完全不知道從何入手,看完了感覺(jué)思路清晰了
最近正在寫 可以
受益匪淺,感謝
作者寫的內(nèi)容很好,分析很透徹。不過(guò)個(gè)人覺(jué)得,你文中說(shuō)的應(yīng)該是 開(kāi)發(fā)文檔或者說(shuō)是 產(chǎn)品文檔吧。按我個(gè)人的理解,需求文檔側(cè)重的業(yè)務(wù)流或者說(shuō)把需要的實(shí)現(xiàn)的功能描述清楚就ok了。請(qǐng)指正
每個(gè)公司的制度不一樣吧,有些產(chǎn)品經(jīng)理還要兼職項(xiàng)目經(jīng)理角色,這些特殊情況都說(shuō)不清的。這里說(shuō)的肯定不是開(kāi)發(fā)文檔,是說(shuō)產(chǎn)品寫給技術(shù)看的文檔,算產(chǎn)品文檔還是需求文檔都沒(méi)關(guān)系。要寫得多好其實(shí)是沒(méi)標(biāo)準(zhǔn)的,只要目標(biāo)達(dá)成,不在乎它的過(guò)程。
嗯,有理
現(xiàn)在都往全站上取走了哪有 真正的一個(gè)蘿卜一個(gè)坑