不要再畫流程圖了,換一種方式寫你的需求吧

13 評(píng)論 9282 瀏覽 49 收藏 11 分鐘

需求文檔是產(chǎn)品經(jīng)理和其他人對(duì)接的一個(gè)重要產(chǎn)品,然而由于文字描述的抽象,隨著描述越精準(zhǔn),可讀性不可避免地會(huì)變差,有些人會(huì)選擇把抽象的邏輯轉(zhuǎn)換成“更具體”的流程圖。但是,流程圖真的“更具體”了嗎?有什么方式能更清晰地表達(dá)你的需求呢?本文作者對(duì)此進(jìn)行了分析,希望能給你帶來一些幫助。

需求文檔是你和其他人對(duì)接的一個(gè)重要產(chǎn)品,它的核心競(jìng)爭(zhēng)力是——可讀性強(qiáng)。

如果你接手過一個(gè)其他產(chǎn)品負(fù)責(zé)的項(xiàng)目,你一定會(huì)關(guān)注文檔的可讀性,畢竟,要是寫得難懂,那維護(hù)起來著實(shí)是一大麻煩。

這就跟程序員看開發(fā)文檔一樣,好的文檔結(jié)構(gòu)清晰,涉及概念時(shí),會(huì)有實(shí)例說明,而且文檔照顧了人們的閱讀習(xí)慣(簡單說,就是太長不看),讀起來很舒服。

但如果你看到的文檔描述起來是類似這樣的呢?

報(bào)告的生成規(guī)則跟隨方案內(nèi)單元的開啟規(guī)則,具體為:

每個(gè)方案內(nèi),每新開啟一個(gè)單元且該單元內(nèi)包含訓(xùn)練任務(wù),對(duì)應(yīng)一份報(bào)告。

例如,同一天內(nèi)用戶有兩個(gè)方案各開啟了一個(gè)新單元,且單元內(nèi)包含訓(xùn)練任務(wù),則當(dāng)天生成兩份訓(xùn)練報(bào)告;同一天內(nèi)用戶有一個(gè)方案開啟了兩個(gè)新單元,一個(gè)單元含訓(xùn)練任務(wù),一個(gè)單元不包含訓(xùn)練任務(wù)(比如全是測(cè)評(píng)任務(wù)),則當(dāng)天生成一份報(bào)告;同一天內(nèi)用戶有一個(gè)方案開啟了兩個(gè)新單元,且都包含訓(xùn)練任務(wù),則當(dāng)天生成兩份報(bào)告。

會(huì)不會(huì)有一種要硬著頭皮讀下去的感覺。

主要是因?yàn)槲淖痔L了,對(duì)進(jìn)行信息分段處理造成了困難。而且,漢字本來就比較模糊,不適合描述復(fù)雜的邏輯。

再加上文字本身就是對(duì)事物的一層抽象,而我們用文字描述一種規(guī)則又是另一層抽象。而且隨著描述得越精準(zhǔn),可讀性不可避免地會(huì)變差。

所以人們說:一圖勝千言。

那很自然,大家會(huì)選擇把抽象的邏輯轉(zhuǎn)換成“更具體”的流程圖。

但問題是,流程圖真的“更具體”了嗎?

01 使用戰(zhàn)術(shù)而不是天賦,來提高你的文檔可讀性

流程圖面臨許多問題,其中最重要的是,它不是研發(fā)常??吹降恼Z言,這涉及到了一個(gè)轉(zhuǎn)化成本。

首先定義一個(gè)問題,我們的文檔是給誰看的?

主要是研發(fā),次要是產(chǎn)品同事。那么研發(fā)看流程圖方便嗎?作為一個(gè)前研發(fā)來說,圖大于一長串文字。但是,流程圖彎彎繞繞,各種箭頭指向,確實(shí)存在理解和轉(zhuǎn)化的成本。

1. 解決方案是:給偽碼

說到頭,研發(fā)是要用程序語言和電腦進(jìn)行溝通的,你費(fèi)力畫成圖,讓研發(fā)理解圖的意思,再從圖轉(zhuǎn)成代碼,不如直接寫給研發(fā)偽碼,這樣也省下了你一個(gè)個(gè)拖框、填文字的辛苦。

聽到“偽碼”,不用慌張,畢竟我們用的也就是一些條件判斷而已。

比如,最開始給的例子,我們可以這么寫:

if 第X天,用戶在 a1 方案內(nèi):

開啟了 1個(gè)單元 & 單元內(nèi)訓(xùn)練任務(wù)數(shù) >0:

生成1份報(bào)告

實(shí)例:

第X天,用戶的a1、a2方案:

各開啟了1個(gè)新單元 & 單元內(nèi)訓(xùn)練任務(wù)數(shù) >0:

生成 2 份報(bào)告

a1方案,新單元_生成1份報(bào)告

a2方案,新單元_生成1份報(bào)告

會(huì)不會(huì)清楚很多?

像上面那樣,使用條件判斷(if),and邏輯,把輸入、輸出及中間過程的約束條件,一個(gè)個(gè)列清楚,同時(shí),用空格來進(jìn)行文本的分層。

這樣,無論誰來看,都可以很明白地get到你的意思。哪怕時(shí)間過了很久,你自己看也看著方便。

寫的時(shí)候,可以想象自己在出數(shù)學(xué)題,把邏輯、可能用到的變量都梳理一遍,盡可能地做到“完全窮盡且互相獨(dú)立”。

比如,如果天數(shù)是你的約束條件,那就可以寫“if 第X天”,這樣研發(fā)就能關(guān)注到X是一個(gè)變量。后面你自己想對(duì)天數(shù)做更進(jìn)一步的處理,只需要再給X加上限制條件,比如 if X≥5,之類的,就可以了。

同時(shí),要記住不僅是你會(huì)因?yàn)樘L不看,其他人也是一樣的懶,所以盡可能一句話寫得短小一些,減少他人對(duì)信息的處理量。

當(dāng)然,你也可以直接詢問chatGPT,讓它給你答案。

不過我感覺不太符合我的需求,過于研發(fā)化了,但這也是個(gè)思路,可以幫助我們進(jìn)行優(yōu)化,大家可以看情況進(jìn)行處理。

02 授人以魚,不如?

這樣寫文檔,確實(shí)讓研發(fā)在對(duì)需求時(shí)非常明確,讓我們的溝通更加便捷。但我這么寫的底層邏輯是什么呢?

下面部分會(huì)科普一些研發(fā)知識(shí),慢慢來吧。

其實(shí),我遵循的邏輯就是:

  1. 先寫研發(fā)邏輯(Controller),“怎么運(yùn)行”
  2. 再寫數(shù)據(jù)結(jié)構(gòu)或者具體例子(Model),“是個(gè)啥
  3. 最后寫視覺需求(View),“長啥樣”

當(dāng)然,寫作順序可以隨你喜歡。這里的重點(diǎn)是,我用到了開發(fā)中一個(gè)經(jīng)典模式:MVC。

1. 什么是MVC

以下是一段什么是MVC的科普,嫌長可以直接跳過不看。

MVC是一種常用于軟件開發(fā)的設(shè)計(jì)模式,它包括三個(gè)組件:Model(模型)、View(視圖)和Controller(控制器)。

這三個(gè)組件分別負(fù)責(zé)應(yīng)用程序的不同功能,協(xié)同工作以實(shí)現(xiàn)應(yīng)用程序的有效管理和高效運(yùn)行。

模型(Model):負(fù)責(zé)處理應(yīng)用程序的數(shù)據(jù)和業(yè)務(wù)邏輯。它表示應(yīng)用程序中的數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫的操作、數(shù)據(jù)的處理和計(jì)算等。模型不關(guān)心數(shù)據(jù)如何展示或者如何與用戶進(jìn)行交互,只負(fù)責(zé)處理數(shù)據(jù)的存取和處理邏輯的實(shí)現(xiàn)。

視圖(View):負(fù)責(zé)展示模型中的數(shù)據(jù)給用戶。它負(fù)責(zé)應(yīng)用程序的用戶界面,包括用戶界面的布局、樣式、展示邏輯等。視圖根據(jù)模型的數(shù)據(jù)來生成用戶界面,但它不直接處理用戶的輸入或者修改數(shù)據(jù)。

控制器(Controller):負(fù)責(zé)接收用戶的輸入,并根據(jù)輸入來更新模型和視圖。它負(fù)責(zé)用戶輸入的處理、業(yè)務(wù)邏輯的調(diào)度以及模型和視圖之間的協(xié)調(diào)??刂破鹘邮沼脩舻妮斎牒?,更新模型的數(shù)據(jù),并通知視圖進(jìn)行界面的更新。

2. 它有什么好處

了解了MVC是什么,那使用它的好處也就呼之欲出了。

MVC的核心在于將產(chǎn)品進(jìn)行了分離,分離成了:

  1. 模型,Model,即數(shù)據(jù)結(jié)構(gòu),也就是“是個(gè)啥”
  2. 控制器,Controller,即運(yùn)行邏輯,也就是“怎么跑”
  3. 視圖展現(xiàn),View,也就是“長啥樣”

這3個(gè)部分下面我們做更詳細(xì)的解讀。

試著把自己的需求切片,想像成:

1)邏輯部分,即文檔中,常見的流程圖&說明功能部分

它是MVC中的C,Controller,這部分我們一般會(huì)對(duì)接:后端同學(xué)。

寫需求時(shí),我們可以將邏輯&例子分開寫,這樣的好處是進(jìn)行了解耦。說人話就是:邏輯和例子不會(huì)攪成一團(tuán)漿糊,比較有節(jié)奏&之后自己刪改會(huì)比較方便。

2)視圖部分,即交互需求、UI需求部分

它是MVC中的V,View,對(duì)接的是:前端、UI同學(xué)。

有的項(xiàng)目可能會(huì)需要我們提出數(shù)據(jù)需求,那么就會(huì)有第3點(diǎn):

3)數(shù)據(jù)部分,即數(shù)據(jù)需求,MVC中的M,Model

數(shù)據(jù)需求或者說數(shù)據(jù)結(jié)構(gòu),你可以把它想象成我們需求中的一個(gè)個(gè)例子,有的例子里是幾段文本,有的會(huì)帶些數(shù)字。對(duì)接這部分時(shí),掌握一些基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)對(duì)我們會(huì)有幫助。這部分內(nèi)容挺多的,但對(duì)我們這次的主題沒有影響,先挖個(gè)坑,之后再講

總之,使用MVC模塊就能夠幫助我們拆分需求的運(yùn)行邏輯、數(shù)據(jù)結(jié)構(gòu)、視圖展現(xiàn)這3個(gè)方面,而這3個(gè)方面就包含了軟件開發(fā)的所有部分。所有之后提需求,可以試著用這種方式拆分自己的邏輯,特定需求對(duì)特定的人,會(huì)變得更加清楚。

作者:探索者,公眾號(hào):探索者的神廟

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

題圖來自 Unsplash,基于CC0協(xié)議。

該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 我在想一個(gè)問題,如果按照代碼邏輯寫,研發(fā)只關(guān)注實(shí)現(xiàn)的問題,會(huì)不會(huì)偶爾也會(huì)讓團(tuán)隊(duì)陷入信息繭房?每個(gè)人對(duì)業(yè)務(wù)理解的角度可能不一樣,如果把流程圖和場(chǎng)景信息、業(yè)務(wù)目標(biāo)都描述出來,研發(fā)會(huì)有更多信息輸入沒準(zhǔn)兒能給出其他更好的實(shí)現(xiàn)方式也不一定呢?

    來自廣東 回復(fù)
  2. 從研發(fā)角度來說,只要告訴我輸入什么,輸出什么,把頭和尾把控住,中間的流程全部交給研發(fā)自由發(fā)揮,不要過多干預(yù)。

    來自陜西 回復(fù)
  3. 我感覺這樣變向相當(dāng)于讓開發(fā)再讀別人的代碼了,基本上沒有開發(fā)是愿意這樣的,性價(jià)比在實(shí)際應(yīng)用中未必高,個(gè)人小觀點(diǎn)

    來自北京 回復(fù)
    1. 贊同,這樣就感覺產(chǎn)品給研發(fā)指定了代碼邏輯,然后研發(fā)當(dāng)個(gè)工具人純實(shí)現(xiàn),從人性的角度上來說,沒人愿意這么干。

      來自陜西 回復(fù)
  4. 最近發(fā)現(xiàn)我不會(huì)寫prd了……回顧一下,我覺得Prd一般交代需求背景,需求業(yè)務(wù)流程,以及每一塊的業(yè)務(wù)邏輯(輸入,輸出),功能性需求,效果需求,性能需求。應(yīng)用場(chǎng)景,預(yù)期收益就夠了吧。涉及到前端頁面的,可以畫個(gè)原型和交互邏輯說明。

    來自北京 回復(fù)
    1. 嗯嗯,是的。我這里分享的主要是針對(duì)業(yè)務(wù)邏輯,一種描述輸入輸出的個(gè)人方法。因?yàn)槲业膒rd主要對(duì)接的是研發(fā)。我發(fā)現(xiàn)他們不太關(guān)心 應(yīng)用場(chǎng)景、用戶,所以這種內(nèi)容我會(huì)靠下放,上來就甩 原型 和 我啥時(shí)候想要,hh
      收益這塊,因?yàn)闃I(yè)務(wù)一般給的是套話,研發(fā)那我就不講了
      像 效果、性能,我會(huì)有個(gè)預(yù)期,和研發(fā)商量著來

      來自香港 回復(fù)
    2. 哎我工作一年了,跟我領(lǐng)導(dǎo)有樣學(xué)樣,一上來就是建立什么什么表,什么什么字段;怎么存數(shù)據(jù)進(jìn)去

      來自廣東 回復(fù)
  5. 這不是在做研發(fā)的活嗎……

    來自湖北 回復(fù)
    1. 作者有過2年后端經(jīng)驗(yàn),自然會(huì)有這種傾向

      來自北京 回復(fù)
  6. 這種方式是用來寫接口類需求還可以,如果是企業(yè)做成熟的產(chǎn)品出來,這樣寫的話,陷入到實(shí)現(xiàn)視角,而不是用戶視角。

    來自陜西 回復(fù)
    1. 嗯嗯,你說的有道理,同時(shí)想展示用戶視角我會(huì)比較常用用戶旅程圖來跟其他部門同步

      來自臺(tái)灣 回復(fù)
    2. 這個(gè)只是清晰邏輯,明確表達(dá)內(nèi)容和預(yù)期目的

      來自廣東 回復(fù)
    3. 我感覺,作者提供的是一種工具,這么寫可以更加清晰的表述自己的業(yè)務(wù)邏輯。

      來自河南 回復(fù)