一份好的需求文檔,應該怎么寫?
很多產品新人,入門產品時,最想先了解的都是如何畫原型,如何寫需求文檔,這很奇怪。就像在平臺上可以搜到很多關于需求文檔的文章(截至當前,通過搜索關鍵詞“需求文檔”,有610條搜索結果),告訴大家需求文檔要怎么寫,卻很少有說為什么這樣寫的? 大家把關注點都在放在如何實現,如何呈現,卻沒有關注為什么這么寫?像很多大咖常說的術與道,術重要,道更重要,知其然更要知其所以然。
一、萬物起源
碰到任何問題,最長見的思維方式即為:問題三要素——是什么、為什么、怎么做。這是幾乎所有行業、所有人群面對事情時,最常見的思維方式。
筆者認為基于最經典、高效、實用的思維方式的基礎上,可以每個人針對不同的知識體系、思考方式、經驗總結等維度,總結出自己的思維方式。
筆者常使用的方式為多年前從社會經濟學老師那里學來的,做了補充和優化,分享給大家:
在特定的時間、特定的地點、特定的人群因為特定的原因而做了特定的事件。達成該特定事件前,有哪些預期,實際達成的效果是什么樣的,中間有怎么的落差,以后處理該類事件時,如何優化方式。
按照上述思維方式,我們將要寫的需求文檔當做一個特定的事件,通過剖析該特定事件被觸發的前置條件、后置補充內容,來實現對需求文檔的分析。
二、什么是需求文檔?
筆者將需求文檔定義為:用于闡述產品,滿足協同人員開發的內容文檔。該定義中有兩個重要點:1. 闡述
即為說明要開發的產品是什么。此處的“是什么”區別于產品說明文檔,產品說明文檔類似于商品說明書,用于告知使用者我的產品該怎么使用。 而此處的“是什么”是告知該產品的相關人員,該產品有哪些功能,這個功能要怎么呈現,該怎么實現。具體包含以下幾個方面: (1)為什么要做這個產品? 該產品是來自哪里的需求,是內部版本迭代優化、Bug修復、新增功能點,還是來自業務部門的需求,或者來自用戶的反饋需求。 必須交代清楚做該產品的項目背景,一方面有利于開發人員更好的了解整體項目,從而更順利地制定項目計劃、項目進度、項目達成; 另一方面,產品開發完成后存檔的文檔,有助于后續對該產品的復盤、版本迭代,Bug問題溯源,甚至對出現人員異動時,有助于接盤人員快速了解項目,熟悉產品整體的前因后果。 (2)該產品要解決哪些沖突? 需求來自于用戶的沖突,用戶在使用中遇到了什么困難、疑惑、焦慮等不可調和的問題等待被解決。 在與用戶開展調研、訪談等溝通時,充分了解用戶的沖突,及急需解決的痛點,有助于產品經理在產品規劃階段,更精準地把握好方向,做出更符合用戶訴求的產品。 同時,在了解沖突的溝通中,除了精準獲取到用戶的核心訴求,還會得到很多非核心訴求,這些來自于用戶潛意識中的需求,為以后產品的發展提供了很好的幫助。 將這些需求羅列出來,整理到需求池,有助于以后與用戶、業務進行再次溝通時作對比,從而去偽存真,對需求池中的需求做好優先級排序,并根據實際業務發展階段和公司整體要求,劃分好產品階段,對需求池中的需求進行實現,從而促使產品朝向更好的方向發展。 (3)該產品實現了哪些目的? 任何產品的實現,不僅僅要滿足用戶的需求,更要在解決沖突時達成更多的目的。而這個目的分為物質層面和精神層面兩個維度。 1)物質層面 產品的上線,解決了公司業務層面的流程,滿足了業務需要,滿足了用戶的使用,這是產品首要,且是最核心的目的。 而在滿足最核心目的之后,是否有一些延伸的產品需求——減少了操作步驟、優化了交互流程,為實現公司層面的獲客、激活、留存、轉化、二次推廣等各環節起到促進作用。 2)精神層面 產品的上線,解決了用戶的困難、疑惑和焦慮,解決了業務部門無法正常使用過程中的煩躁不安,這是產品最核心的目的在用戶心里的反饋。 同時,在解決用戶優先級最高的負面情緒的前提下,使得用戶對產品的感官,對企業品牌的好感度提升,是產品上線所能達成的最好效果了。2. 滿足協同人員
即該需求文檔是給哪些協同人員看的。此處的“協同人員”不僅僅是開發人員,而是產品從交付原型至最終上線,過程中所涉及的所有參與者。 這些協同人員基于各自崗位和職責,對需求文檔的要求也是不一樣的,這是所有產品經理在編寫需求文檔時應尤為注意的點。
以筆者當前的公司為例,協同人員包括以下群體:
- 產品經理:大部分公司都會有不止一個產品經理。每個產品經理在負責自己的產品線時,所輸出的需求文檔對其他產品經理的工作是有必要性的。
- 設計師:以做靜態頁面、gif圖、交互設計等視覺體驗的專業人員。
- 前端開發:以輸入靜態頁面、交互動效為主,包含各類判斷邏輯,最終以HTML為輸出樣式的專業人員。
- APP開發:用戶能看到的APP的頁面樣式、交互樣式、邏輯輸出的專業人員。
- 后臺開發:后臺建表、設定邏輯規則,接口傳輸數據、字段的專業人員。
- 測試工程師:檢測產品在常規環境、非常規環境,檢測所有存在因素及隱患的專業人員,是確保產品上線無Bug的最后一道防線。
3. “闡述”與“滿足協同人員”間的關系
凡事的存在,皆存在因果。滿足協同人員,此為因,而為了滿足協同人員,輸出的需求文檔,即為果。因果之間互相作用,促成了產品最終的交付及上線。
三、需求文檔的意義是什么?
把正確的東西交給正確的人,滿足協同人員的訴求,即是需求文檔存在的意義。 如何寫出滿足協同人員訴求的需求文檔?首先,需要觀察不同的協同人員具體的工作場景,基于他們工作場景中的沖突,發現他們的需求,從而輸出的解決方案,就是最好的需求文檔。
1. 產品經理的訴求
(1)產品部門的版本需求討論、需求評審會。 在版本任務的討論中,在與其他產品經理講述所規劃的功能時, 版本記錄、項目背景、項目框架圖、流程圖,可以快速讓其他產品經理了解整體項目,并根據項目背景,給出意見。 (2)與其他產品經理所負責的內容有交叉點。 當一個完整項目,每個產品經理負責部分內容的時候,各自負責部分功能的需求文檔有助于其他產品經理從文檔中發現交叉點中的銜接是否合適,各功能模塊的整體融合性。 (3)Bug處理。 再厲害的程序員也不敢保證產品上線后不出現任何問題,當產品上線后出現問題,需求文檔有助于產品經理快速找到規劃的初衷,根據之前的情境給出精準的解決方案。 (4)版本迭代。 當產品在不同時期,做不同的版本迭代時,之前的需求文檔尤為重要,有助于負責該項目的產品經理快速熟悉往期規劃的初衷、目的和當前的效果及不足,并在迭代版本中對往期問題進行修復,在新的規劃中避免不必要的坑。 (5)人員異動。 如果出現人員異動(人員項目變更、人員離職等),有助于新接手的產品經理快速熟悉項目,確保項目規劃不會因個人經驗、個人喜好、習慣等原因,出現太大的偏差。 基于以上場景和目的,其他產品經理對需求文檔的訴求需要得到的信息:誰、在什么時間、因為什么原因,做了什么內容,滿足了什么人的需求,變動內容及節點、階段性規劃。2. 設計師的訴求
設計師是項目實施階段的第一步。確定版的需求在落地執行時,首先是由設計師開始制作設計圖。項目的整體功能有哪些、基于什么背景、未來的規劃方向,需要在文檔中給出建議和說明,有助于設計師按照產品經理的設想,設計出符合或高于期待的產品設計圖。 基于上述場景和目的,針對設計師角色,產品經理在編寫需求文檔時,需要告知的信息:因為什么原因,給什么特點的群體,做什么圖,當前競品什么情況、公司什么情況、市場什么情況,想達到什么效果,后期發展方向(業務、功能、設計方向等)。3. 開發人員的訴求(前端、APP、后臺、測試)
- 前端開發:開發過程中,側重了解涉及前端部分的頁面功能、交互效果、交互邏輯;
- APP開發:開發過程中,側重了解頁面元素、頁面樣式、功能、與后臺間的接口參數傳遞;
- 后臺開發:開發過程中,側重了解功能、這些功能在后臺的數據結構搭建、如何建表、功能邏輯、與前臺兼的接口參數傳遞;
- 測試工程師:在產品實現過程中,側重從產品規劃中了解整體功能,從而寫測試用例,以及產品上線前根據設計圖的樣式、文檔表述的功能規則,做功能測試。
4. 注意事項
盡信書不如無書。各公司的組織架構、部門角色劃分、業務開展的推動因素、公司發展所處的階段均不相同,雖大道同源,但總有差異化表現。
需要產品經理針對協同人員做好分層、分類,切實與相關人員深入溝通,了解他們的習慣,了解他們的認知,輸出他們需要的需求文檔,才能夠確保信息的透明化,保證開發人員全面了解規劃的內容。
同時,輔助以良好的溝通機制和技巧,則有助于開發效率的提高和產品上線的進度保障。
四、如何寫需求文檔?
1. 寫文檔先看人
需求文檔與產品經理前期做用戶調研時的用戶畫像很相似。 在做用戶畫像時,通過與目標群體各種方式的溝通,獲取用戶的基本信息、興趣、習慣、家庭情況、對產品相關業務的了解程度、接受程度、煩惱和期待等等,從而建立用戶檔案,輸出用戶的判斷結果。 在寫需求文檔前,面對我們的用戶——相關協同人員,產品經理需要去了解他們。了解他們的工作方式、工作習慣、工作態度、工作認知、工作能力等與工作相關的內容,同時,對他們與人相處的方式、生活習慣、興趣愛好等等的了解,有助于產品經理更全面的了解,從而建立更加立體的用戶畫像。 在輸出判斷結果時會更準確,寫需求文檔會更有側重點——哪些是他們需要知道的,哪些是他們需要特別詳細表述的,哪些是需要特殊標注的,哪些是省略表述即可的。2. 文檔規范
(1)版本記錄
- 誰:該文檔是誰編寫的,便于快速找到對應的負責人員,同時,后期有助于在需求文檔庫中建檔分類。
- 時間:什么時間編寫的該文檔,旨在告知該功能是什么時間要開始做,便于后期溯源時,快速定位。
- 事件:針對什么產品、什么功能做的規劃,其實就是文檔標題。
- 版本號:便于記錄產品不同版本的節點做了什么內容及調整,同時,針對不同的系統,有助于使用統一的版本號做管理。
- 上線計劃:依據上線計劃倒推測試周期、開發周期、設計周期,從而給參與該項目的協同人員約定好時間,便于更好的把控項目進度。
- 評審及修改:項目完成后的需求評審建議和結果,針對初稿內容做了哪些修改。此處一定要詳細,后續調整內容時,評審建議和修改事項是很重要的可參考的細節點。
- 項目背景:清楚地寫出為什么要做該項目,誰要求做的。
- 核心需求:為了解決什么沖突。
- 預期目的:想達到什么結果,后續有什么進一步的規劃。
- 信息與意向:傳遞產品信息,告知設計師關于該產品的設計原因、行業情況、要做的產品對標競品是哪些,以后對產品的規劃是什么、產品經理的意向是什么。
- 基礎設計理念:產品主題、整體色調、各樣式的字號、色號、全局頁面的建議等。
- 模塊
- 功能點
- 功能點描述(詳細)
- 優先級(高、中、低)
- 角色名稱
- 職責:在產品參與中的簡要說明
- 備注:特殊情形
- 整體流程圖:整體流程為將產品各大模塊之間的交互流程,一般做正向流程居多,輔助以部分判斷流程和異常處理機制
- 功能流程圖:功能流程為涉及到具體的功能點的交互流程,包含:正向流程、規則、判斷流程、異常流程。
功能需求為具體的各功能點,是需求文檔的核心。主要是詳細的分解各功能點,包含兩個方面:
- 前端:針對前端部分,頁面如何來、頁面元素、各功能點的規則、交互、跳轉規則、非常規流程的頁面元素、交互、跳轉規則等等。
- 后臺部分:前端功能的實現,依靠后臺的哪些邏輯和數據,是否需要做新功能模塊、新功能模塊的內容、數據的調用、存儲、接口數據傳值等等。
- 產品性能:產品對用戶操作的響應、對群體操作的并發預防等。
- 安全性:公司數據、用戶信息的保密性處理,不同角色的權限設置、使用中的限制等。
- 可靠性:用戶操作中出現異常情況,是否可繼續操作,遇到異常情況時數據或使用狀態是否可被恢復等。
- 拓展性:拓展性主要針對公司內部而言,產品完成后,無論是設計師、開發人員,還是測試人員,針對產品所做的工作,是否可以被復用到其他地方。用戶在產品中的使用情況是否可被系統獲取后用作不同維度的分析等。
五、多說一句
需求文檔中,對于功能的表述是尤為重要的,針對各功能點考慮的越詳細,越有利于開發人員評估實現難度、評估時間、順利達到所要的效果。
六、最后一句
需求文檔不是越詳細越好,很多沒必要的說明,不用耗費大量時間去編寫,最核心的依舊是:讓自己公司的相關人員能快速看懂,全面了解。 盡信書不如無書,各公司均不一樣。產品經理應更多的站在自己公司的角度,在對相關協同人員充分了解后,輸出他們需要的需求文檔。聲明:本站所有文章資源內容,如無特殊說明或標注,均為采集網絡資源。如若本站內容侵犯了原著者的合法權益,可聯系本站刪除。
