都是寫需求,高手和菜鳥為何差別這么大?
無論是互聯網產品還是產品項目,所有這一切的開端都始于需求分析,一份好的需求文檔往往是項目成功的先決條件,對一個產品經理或項目經理來說就顯得尤為重要。但是,同樣是寫需求,不同的人寫出來效果卻截然不同。相比產品菜鳥,高手究竟在哪些方面表現得更為突出呢?
- 同樣是寫需求,為什么有的人能一次過,而有的人改了又改,甚至還要推倒重來?
- 同樣是寫需求,為什么有的人考慮全面,而有的人丟三落四,直到評審的時候被懟得體無完膚?
- 同樣是寫需求,為什么有的人簡單易懂,而有的人長篇大論,大家卻看不懂?
這種情況在我們工作中經常會看到,優秀的需求文檔和拙劣的需求文檔,就像產品經理的臉面。
那么,怎么才能寫出一份漂亮的需求文檔,結合這幾年的工作總結,和大家聊一聊
一、準確理解需求,才能有的放矢
寫需求的大忌之一,就是自嗨。
很多自嗨型選手,自傲型的,會覺得自己的理解才是最完美的,用戶提的需求或者場景,都是欠考慮的。
他們不屑去找用戶求證,也不會使用簡單的方案先驗證需求,而是完美主義的妄想一步到位,他們信奉喬幫主的一句話:用戶并不知道自己需要的是什么,直到我們拿出自己的產品,他們就發現這是我想要的。
自卑型的,他們不愿意找用戶,害怕找用戶求證。因為擔心自己沒有理解用戶的需求,會被其他人看不起,懷疑自己的能力。
所以即使不理解,也不愿意找用戶求證,但是又要交差,最后就只能按照自己的理解硬著頭皮上。
不能準確理解業務場景,就敢寫需求的,最后都會成為烈士。理解了需求是1,后面所有的文檔,開發和測試都建立在這個1上,沒有1,后面再多的0也白搭。
準確理解需求,其實就是要理解需求背后的使用場景,可以使用常用的5W1H框架。
- what:用戶的問題和需求是什么?
- when:用戶什么時候會遇到這樣的問題?
- why:用戶為什么會遇到這樣的問題?
- where:用戶一般在什么地方遇到這樣的問題:
- who:遇到這個問題的用戶是誰?用戶群體有什么特征?
- how:用戶當前是怎么解決這個問題的?
比如我最近負責的產品,有一個預警的需求,主要是針對平臺的異常數據進行預警。
預警一般就分為三步:預警的數據從哪來?預警的規則如何設置?產生預警后以怎樣的形式發送給誰?
前兩步我跟用戶(公司的業務方)都對的比較清楚。而在第三步通知上,我就犯了理所當然的錯誤,陷入了自己的想象中。
我的想法是,產生預警的消息通知因為需要根據模板來配置的,這就有點類似于微信消息通知,都有固定的模板。
所以我想當然的認為,我們也只能通過設置幾個固定的模板,然后根據產生預警的內容往模板里面填充信息。
但實際用戶的需求并不是這樣,固定的模板不能滿足用戶的需求,用戶不僅需要預警消息,還需要自定義通知哪些信息給哪些用戶。
所以最終的后果就是定好的開發計劃需要重新制定,需求需要重新評審。好在還沒有進入開發,只是耽誤了2天的時間。如果是在驗收的時候發現這個問題,那簡直就是災難了。
磨刀不誤砍柴工,前期需求確認越準確,需求的不確定就越小,后期修改和返工的概率就越小。
二、學會制造和使用工具
確認好需求以后,就可以著手開始寫文檔了。
需求文檔本質上是將我們腦子里對需求功能的構想,準確的傳達給設計師、開發和測試同事。
那么,有哪些方法能提高信息的傳達率呢?總結起來,大概有三種方法:
第一,換位思考,站在開發的角度思考問題
既然我們主要是寫給開發同學看的,那么就應該用他們熟悉的思考方式來撰寫需求文檔。
什么是開發的思維方式呢?答案是函數思維。所有的函數都由三部分組成:輸入—方法—輸出。針對某一功能,用戶的輸入是什么?經過什么樣的方法或流程?最終輸出是什么?
例如,登錄功能,用戶輸入賬號和密碼,點擊登錄按鈕,這過程經過了哪些?
- 輸入:用戶的賬號、密碼;
- 方法或流程:請求后臺用戶賬號表,校驗用戶賬號和密碼;
- 輸出:返回登錄結果,登錄成功跳轉到首頁,登錄失敗則返回失敗的原因。
因此,功能的詳細需求描述,應該包括:
- 要寫清楚功能的輸入是什么?輸入的參數有哪些?是否是必填,參數的字段類型是怎樣的?
- 調用什么樣的方法或流程
- 輸出是什么
- 異常情況有哪些,如何處理?
其中,調用的方法或流程,我們可以使用流程圖來對功能的數據在各個系統之間的流轉做出精確的刻畫。如果涉及到多個角色或系統,可以使用泳道圖來進行描述。
異常情況的梳理,后面會具體講到。
第二,學會使用動態面板
字不如表,表不如圖。將我們腦子里對需求和功能的構思用原型圖的方式展示出來,這是最直觀的方式。
對語言的理解,由于各自的理解水平、閱歷經驗等不同,一千個讀者就有一千個哈姆雷特。
用原型圖畫出來的保真圖,能夠清晰的告訴大家,我們最終想要實現的效果,頁面自己的跳轉是怎樣的?同時在我們繪制原型圖時,也是我們對需求的進一步梳理。
第三,搭建專屬的高保真組件庫
寫需求的顏值和效率如何兼顧?怎樣又快又美觀的完成需求文檔?答案是高保真組件庫。
這里的組件庫,不是市面上流傳的那些通用的組件庫,而是專屬于我們所負責產品的組件庫。
通用組件庫因為是通用的,所以每次我們使用這些組件庫時,都還需要對這些組件進行一些個性化改造。
所以為了進一步提高我們的效率,可以在這些通用組件庫的基礎上,進一步個性化為自己所負責產品的組件庫。
組件庫搭建成功以后,寫需求就真的是搭積木一樣了,不僅美觀而且效率很高。
通用組件庫可以在antidesign上下載一份。當然,如果你有一位交互設計大佬,也可以求她幫你做一份,就看你的本事了~
如果是自己來設計組件庫,可以參考制作PPT的一些基本設計原則,這些都是相通的。
這里簡單介紹下美國著名設計師Roibin Williams提出了四個關于設計的基本原則:
- 重復,作品中的一些元素可以在整個設計中重復出現,可能是某種圖案、顏色、文字、空間關系等,重復促成統一;例如一些重復組件的樣式和設計,彈窗、提示、輸入框等
- 對齊,任何元素都不能在頁面上隨意安排,每一項都應當與頁面上的內容存在某種聯系。頁面上的組件都應該才有某種方式對齊,組件與組件見的間距也要一樣。
- 對比是為作品增加視覺效果的最有效途徑之一,同時也能清晰地起到區分作用。例如:標題、正文、說明注釋等字體的大小應該有層次感,相同類型的文字格式,包括字體大小,加粗/傾斜,顏色等都應該保持一致
- 親密性原則是指,將相關項組織在一起而使他們之間產生凝聚力,因為物理位置的接近意味著存在關聯。文字建議使用冷色調,文字顏色和背景色要對比明顯,例如黑底白字,藍底白字,白底黑子等。只有一些特殊的信息使用鮮艷的提示,例如報警、注意、異常情況等
三、增刪查改顯算傳,盡量做到MECE
我們寫需求的時候總是會遇到考慮不周全的情況。
首先要說明的是,切忌不要完美主義,沒有人總是一次就能把所有因素都考慮在內。
關于需求的完整度,我們盡力即可,而且這其實是非常吃經驗的事,我們可以在工作過程中多總結。
MECE雖然做起來很難,但是做得好的話,它其實是一件令人上癮的事情。那種算盡一切的感覺真的很棒。
尤其是在需求評審,研發、測試等同學問什么問題,你都能回答出來的時候,不僅會給人一種專業的感覺,而且自己也會獲得一種極大的成就感。
給大家分享一些寫需求時,可以提高需求完整度的“7字真言”:增刪查改顯算傳。
增就是新增,刪就是刪除,查就是查詢,改就是修改,增刪查改是形影不離的四兄弟。
所以在設計功能的時候,有其中之一,你就要考慮其他三個有沒有漏掉。
當然,還是要根據業務實事求是。例如有的系統對刪除比較敏感,有的低權限的用戶只能新增,不能刪除,也是有可能的。
顯就是顯示,以怎樣的形式呈現給用戶。列表,還是圖形,彈窗還是新的頁面,文字展示不完怎么辦?數據太多是否需要翻頁?數值數據使用哪種格式?最終,還是要根據具體的業務來。
算就是計算,常見的就是功能的某些字段的值是如何計算得來的?最常見的就是數據埋點,數據的來源,指標的計算方式等
傳就是傳值,該功能前后端的數據交互是怎樣的,中間的數據流轉涉及到哪些系統。例如支付功能,就至少涉及用戶賬號系統,錢包系統,第三方支付系統等。
除了這些,還有寫需求經常會犯的一個錯誤,就是只考慮正常流程,不考慮異常流程。
其實對于異常流程考慮得是否完整,才是對一個PM的專業度的考驗。
常見的一些異常,供大家參考:
- 當功能有限制時,就需要考慮兩頭的極端情況,例如活動是有時間限制的,就需要考慮用戶在參加活動時,剛好超過時間限制,此時該如何處理?
- 輸入框,支持哪些字符,中文,英文,數字。如果支持特殊符號,具體支持哪些符號,這些都需要提前定義好。輸入框的長度限制,最大最小支持多少字符,輸入時超過最大長度怎么辦?字段字符太長展示不完怎么辦?
- 批量導入文件,文件支持哪些格式?文件大小有哪些限制?是否一次性支持多個文件導入?如果支持多個文件導入,有個別文件格式不正確或大小超出限制怎么辦?文件的內容不符合要求怎么辦?
- 有權限限制,正常情況下操作權限范圍內的功能沒問題,但是在操作過程中,如果沒有權限了,此時該怎么處理?如果對同一個頁面,有多個用戶擁有編輯權限,那么同時編輯的時候,如何處理?
- 定時任務型功能,例如預警任務,預警任務的運行頻次是怎樣的?是否允許重復發送預警?預警消息發送失敗了怎么辦?定時任務啟動失敗怎么辦?
- 頁面沒數據時該怎么展示?這個是比較容易被遺忘的點,很多頁面的缺省頁都是需要設計師設計的,因為放一個空白頁面太不友好了,不知道是正在加載,還是沒網,還是出bug了。
- 網絡異常如何處理?網絡弱的情況如何處理?(APP比較常見)
異常情況,其實可以多跟測試同學聊聊,他們才是真正的專家~
如果能把以上7字真言和常見的異常情況都考慮清楚,可以說就是一個合格的需求文檔了,更進一步,就需要從整體上進行設計,當前的設計要為后續的迭代和完善做好鋪墊。
這個比較吃經驗,我們在工作的過程中可以多總結,針對一些常見的功能復盤他們的迭代路徑。
這樣積累下去,以后一看到類似的需求,就能做到胸有成竹了。
四、追根溯源,舉一反三
如果是新需求,要舉一反三。簡單來說,就是在細化需求的時候,要把和這個需求相關的其他功能點都考慮在內。
我做這個需求會影響到哪些功能模塊,需要哪些功能模塊配合?
舉個我做過的APP的例子來說,為方便理解,先交代下背景:
我們的APP里有代駕和打車兩項技能,打車已有,代駕需要新增。
打車和代駕都是屬于先享受服務,然后再支付的類型。那么,為了防止白嫖,我們采取的是先凍結部分用戶在APP賬戶內的金額。
原來只有打車的話,那么凍結金額就只有打車的,現在增加了代駕,也需要凍結金額。
那么,在寫代駕訂單邏輯的時候,就需要考慮到這部分凍結金額的邏輯,該如何處理,才能不影響打車。
凍結金額就需要從原來的只有打車,變成需要區分為打車和代駕。其實不止這些,代駕還涉及到訂單后臺,賬單系統和錢包系統的修改,都要考慮到。
如果你沒考慮到打車這個已有功能,就會讓別人對你的專業能力產生質疑,三番幾次就會失去開發的信任。
所以,我們在完善需求的時候,不僅要關注當前的需求,還要抬頭看看四周,與這個需求有關的還有哪些其他的系統,這些系統要相應做哪些修改,都要考慮周全。
如果是功能優化,那么不僅需要考慮與其他功能的關系,還要考慮與自身的關系。
簡單來說,就是要考慮以前數據,功能和交互的兼容性。我在做后臺的時候,吃了很多次虧。
還是舉個我自己的例子。
最近我們對賬單進行了升級,原來的賬單數據非常簡單,就是對賬單數據的簡單羅列,沒有篩選功能。
在賬單升級后,數據結構發生了改變,增加了可按照業務類型(打車和代駕),支付時間和支付方式三個維度進行篩選。
當時我做的時候,沒有考慮到一個重要的因素,就是要對以前的賬單數據做兼容,導致賬單升級以后,只能看到升級以后的數據。
這樣就只能后面再補需求進行處理。雖然這沒有造成很大的影響,但是如果是后續處理不了了,那就是真的大麻煩了。
所以,我們在迭代需求的時候,一定要考慮這個需求的來龍去脈,注意對這個需求以前的數據,交互方式等進行兼容。
五、注意考慮相關方,尤其是B端
相關方,簡單來說就是跟你做這個項目或者需求有任意聯系的人。比如說你負責的是某業務后臺的搭建項目,那么相關的人就至少有:
你的領導,該業務負責人,該業務核心人員(實際使用你后臺干活的),開發人員,測試人員,設計人員。
如何識別這些相關方呢?可以從是否參與項目與所受影響兩個維度來區分。也可以按照相關方類型來區分。
比如:上游供應商,下游客戶,中間有老板,領導,開發團隊,測試團隊,設計團隊,運營團隊,業務團隊等。
將相關方識別出來之后,我們就知道哪些相關方是需要我們重點關注,哪些相關方是無關緊要的。
畢竟我們的精力是有限的,我們必須把80%的精力用在關鍵的20%的人身上,才能保證效率最大化。否則面面俱到只會把自己累死,吃力且不討好。
最后,雖然我們總說不要成為功能或者需求經理,但是過硬的寫需求的能力,是決定我們底線的關鍵,只有基礎夯實,才能建起高樓大廈~
本文由 @Jarvan 原創發布于人人都是產品經理。未經許可,禁止轉載
題圖來自Unsplash,基于CC0協議
很受用 學習了
感謝作者,文章對于B端產品新手幫助很大,可能產品原型這方面不同公司策略不同吧,迭代周期快的公司可能只需要盡量保真的原型就好了確實好用但是耗時嘞
有幫助就好,原型不需要強求,哈哈哈,主要是業務邏輯,流程和異常情況的考慮
文章寫的很好,感覺很有幫助,動態面板我也經常用,但是確實存在出現需求改動時,改起來會比較麻煩,不過可能就是習慣吧,從交互的演示上動態面板我覺著還是很好的
動態面板尤其要注意命名,不然設置動效或者修改的時候,就更痛苦了
看大家在說動態面板,這種感覺還是要看公司看業務看項目。如果是快速迭代的功能型需求,思維導圖/流程圖可能更適合;如果是像要新建一個App產品,這時候原型動態面板可能比較合適。樓主寫的挺好的,每個人習慣也不一樣,贊一個。
是的,看公司業務和團隊習慣吧,我現在的團隊文檔用的是石墨,就不太需要動態面板了~
對于新手而言干貨挺多的,很受教。可是為什么有些人就喜歡針對某個詞挑刺呢?說話冷嘲熱諷的,很不解。。。
有幫助就好,無需在意,哈哈哈~
下面那些說不用動態面板的多半是些混日子的low品經理
樓主不用太在意,搞不好他們連動態面板怎么用都不會 ??
習慣不一樣吧~
心態好點不行么,別人寫個文章作為同行取其精華去其糟粕,為何就得跳出來杠,有自己的看法也可以自己寫幾篇然后發表出來讓大家共同學習一下,這種心態平時是怎么和開發友好溝通的。
感謝您的理解~
我也是看到要用動態面板那塊就震驚了,作者做沒做過產品啊….首先不光說需求量給不給你時間去做動態面板,而是看得人根本不去點擊你做的交互,還得跟他解釋,一般技術都喜歡直接看不帶交互的原型,而且動態面板一旦要大改就會非常麻煩,耽誤時間效率奇低…..
我來稍微解(狡)釋(辯)一下,第一,我做過產品,3年經驗吧,可能跟您比還是菜鳥;第二,沒有時間做動態面板我覺得這個不是理由吧,寫需求文檔也要花很多時間啊,這個看產品的個人習慣,以及和團隊的磨合吧;第三,別人根本不去點擊,你就不做嗎?那需求文檔開發也不看的啊,那咱們也不寫了嗎?動態面板不是給開發去點的,我覺得主要作用是方便我們自己梳理需求之間的邏輯,以及我們在需求評審的時候比較方便演示和大家的理解;我覺得主要還是看個人習慣和團隊的磨合吧,文章里也主要是我自己的習慣了,看看就好~
其實最終還是看團隊跟公司。干了7年多產品也就最初一年多的公司寫過文檔,其他的公司技術直接說不要寫文檔,我們不看,所以直接原型后上禪道,效率還高,所以并不是通過文章上面幾個簡單的點來區分菜鳥跟高手,產品其實不分高不高手,實用效率才是王道,最后還是看公司財力及業務,產品做的再完美再敬業,沒財力沒業務一切都是空談…… ??
動態面板這些適合給老板和客戶演示demo,實際給技術的需求文檔我覺側重點應該在業務流程、邏輯、狀態、異常這些 ??
您說得對~
贊一個加油
謝謝~
菜鳥文 反面教材案例
跟大佬您沒得比啦
產品經驗6年,看到這個動態面板就沒有興趣往下看了,實際用戶量大,需求多的做不完,你還要高保真???????
確實不太適合大佬看
比如說預警功能,先搞明白的絕對應該是什么是預警,為什么要預警,預警的目的,一切需求都要圍繞目的去拆分拆解
所謂預警,預見而發出警告,用戶是遇見了什么問題需要預警,預警需要什么內容(舉一反三,產品需要有拓展思維),最后再考慮預警用什么方式輸出,搞明白的絕對應該是什么是預警,為什么要預警,預警的目的,一切需求都要圍繞目的去拆分拆解
一切的需求都是為了解決具體的問題,有了問題就有了目標,就方便后邊去分解目標,拆解需求。
抽點碎片化時間看看碎片化知識,哈哈哈哈
b端比較多的是公司內容人員,建議將操作崗、管理崗分開,分離財務查看需求和業務查看需求。這樣會減少需求沖突,同時為實現操作、流程的自動化做鋪墊;
這些主要還是看公司的具體業務情況,有的公司財務和業務的系統是分開的,有的公司是一個系統,是通過角色來控制功能和數據權限
只能說不建議這樣實現,這樣實現的缺點在于未來的拓展能力會很弱而且后端系統的終極目標就是自動化處理,業務與財務角色在管理職能和訴求上是有差異的。如果在一個系統靠角色來處理的,公司小就算了,但凡上了規模,這方案一定會被推倒。
不通過分角色分配功能的話要怎么分配?
方法很多,不要局限于現有的方案。比如:可以通過工作臺直接定義,誰可以操作工作臺這個就繞開了角色權限的劃分,關于數據權限的控制,可以在控制臺的設計上做統一處理,然后支持單個用戶自行隱藏不需要的列表字段。直接來說,財務和業務在一個系統,我所接觸過的就是傳統ERP,我操刀的B端系統已經把ERP逐步弱化且逐步肢解,長期方向來說業務是要包容,財務是要精悍。
順便多扯一句,財務自動化在幾年前就初步成型,代價是輪換了3批資深產品經理。當時做到了會計、出納、稅務的工作實現自動化作業,結算和業務綁定太深這塊還沒完成,數據分析和業務自動化到目前我們都還沒想過要搞,主要是場景太雜太多,牽涉到全公司的部門利益,沒膽動手。
收藏學習
舊數據處理是經常容易忽略的一個點。曾經就翻過一次車,業務部門對現有的制度進行的改變,需要技術上的改變,當時完全按照業務部門需求實現后,發現有30%左右的長期用戶一直使用的是老版訂單以及訂單下的舊業務制度,一刀切的改動讓我頭禿了好幾天,當然這也不是一個產品經理能夠決定的(除非你的決策權已經很大了),舊數據處理建議以多向業務部門溝通為主,比較產品經理再熟悉業務也不會比一線業務部門了解業務流程和制度邊界。但是忘記做舊數據處理那就是產品經理的職能失誤了。另外,關于B端產品的,有一點很重要就是一線業務人員的需求,往往是以個人利益出發的,而B端產品往往是一個工具型的產品(對現有公司的業務做技術抽象化、和業務邊界技術化),所以在迭代的時候,往往你的實現和一線業務人員的需求的相背的(不用懷疑自己,B端產品是公司的產品,大部分功能要代表公司的整體利益)
非常贊同您說的!
產品做久了,不怎么用動態面板了,因為容易遺漏關鍵事項。
這個可以用來演示,還是很形象的
寫得很好,受教了 ??
謝謝~
寫文章也是做產品,這也是好文,但是建議多一些圖文互動,吸引讀者。長篇大文很難看完··· ···
有點懶了,謝謝建議~ ?