后端需求方案設(shè)計(jì)的注意事項(xiàng)
后端需求方案設(shè)計(jì),不僅體現(xiàn)在界面和交互的定義上,更體現(xiàn)在邏輯規(guī)則與整體架構(gòu)的契合度上。好的后端方案應(yīng)該統(tǒng)籌數(shù)據(jù)結(jié)構(gòu)、技術(shù)實(shí)現(xiàn)、界面效果、算法選型等方面,不僅滿足需求,而且另團(tuán)隊(duì)省時(shí)省力。這里淺聊一下后端頁(yè)面的需求方案的注意事項(xiàng)。
1. 遵從Web頁(yè)面設(shè)計(jì)常識(shí)
后端產(chǎn)品,幾乎都是以Web為載體的。
一個(gè)Web頁(yè)面當(dāng)中,我們看到不同的位置擺放不同的元素,就像被割開(kāi)一塊一塊的。
這是由于HTML本身就劃定了頁(yè)面元素的坐標(biāo),因此在規(guī)劃頁(yè)面的時(shí)候就要遵從或利用這些規(guī)則。
比如,在一個(gè)表單當(dāng)中,當(dāng)你要在二維欄中加一行描述的時(shí)候,如下圖這樣地設(shè)計(jì),容易引發(fā)歧義:
因?yàn)椋?yè)面的這個(gè)位置就像是一個(gè)兩列的表格,而截圖批注的內(nèi)容卻是在一個(gè)表格展示的。
所以開(kāi)發(fā)會(huì)困惑:你是要讓重新插入一個(gè)新的區(qū)域做成一維單元格,還是在原來(lái)的表格中分兩列展示呢?
產(chǎn)品經(jīng)理在輸出方案的時(shí)候,不僅要避免主動(dòng)引入歧義,同時(shí)要避免一切被動(dòng)的歧義。
了解一些頁(yè)面常識(shí),不僅僅提需求,而且能夠事半功倍。
2. 結(jié)合實(shí)際,靈活方案
舉個(gè)例子:要做一個(gè)“客戶等級(jí)規(guī)則設(shè)置”功能,參與運(yùn)輸?shù)膮?shù)多,每個(gè)參數(shù)存在大于、等于、介于、小于等至少四種情況。
常規(guī)的參數(shù)設(shè)計(jì)思路,是將各個(gè)參數(shù)分開(kāi)存儲(chǔ)。也就是一條完整數(shù)據(jù)要分多條存儲(chǔ)。
比如:
id為“001”的規(guī)則選擇了三個(gè)參數(shù),就要出現(xiàn)三行數(shù)據(jù),且每一行數(shù)據(jù)都要對(duì)應(yīng)考慮四組數(shù)據(jù)關(guān)系(大于、大于等于、小于、小于等于)。如下所示:
這樣的設(shè)計(jì)導(dǎo)致字段較多(列較多),且每個(gè)規(guī)則又會(huì)隨著參數(shù)的增多而導(dǎo)致行數(shù)繼續(xù)翻倍增多。那么就更顯得冗余沉重。
是否能更簡(jiǎn)單點(diǎn)呢?
進(jìn)一步調(diào)研業(yè)務(wù),獲知該功能運(yùn)算的數(shù)據(jù)本身就有偏差。因此對(duì)精確度的要求不高。
于是,重新和業(yè)務(wù)用戶溝通后,優(yōu)化了數(shù)據(jù)存儲(chǔ)方案為:每個(gè)參數(shù)都存儲(chǔ)為一個(gè)列,而每列的取值約定為雙側(cè)閉區(qū)間,用逗號(hào)隔開(kāi)。
例如,想表達(dá)大于100,那就用“大于等于100.01”代替。
同樣,小于80.01,就用“小于等于80.00”代替。
因此只需要簡(jiǎn)單如下所示的結(jié)構(gòu)即可(注意逗號(hào)是取值區(qū)間的分割符號(hào)):
結(jié)論:發(fā)現(xiàn)常規(guī)方案增加功能復(fù)雜度的時(shí)候,就回到問(wèn)題源頭,結(jié)合業(yè)務(wù)場(chǎng)景靈活設(shè)計(jì)。
3. 結(jié)合一點(diǎn)技術(shù)原理,而非想當(dāng)然
比如,設(shè)計(jì)頁(yè)面搜索項(xiàng),搜索條件的多少和搜索速度并沒(méi)有必然的線性關(guān)系。有時(shí)候?qū)⒑Y選條件細(xì)化,即增加篩選項(xiàng),反而可能加快速度。
這與篩選字段的索引情況、數(shù)據(jù)量、數(shù)據(jù)存儲(chǔ)在表的結(jié)構(gòu)(如分表存儲(chǔ))都有關(guān)系。
比如:查學(xué)生姓名之前先選班級(jí),會(huì)比不選班級(jí)的查詢速度稍微快一點(diǎn)。
因此,在設(shè)計(jì)方案的時(shí)候,并不能一概地通過(guò)減少搜索項(xiàng)試圖提高搜索速度。而應(yīng)當(dāng)根據(jù)具體的情況,結(jié)合一定的技術(shù)常識(shí)進(jìn)行判斷,而不是想當(dāng)然地設(shè)計(jì)方案。
4. 結(jié)合特殊場(chǎng)景整合方案
特殊場(chǎng)景很多,比如逆向操作、空值、并發(fā)操作等。
以多個(gè)客對(duì)同一個(gè)訂單同時(shí)進(jìn)行編輯為例,那么這就會(huì)出現(xiàn)并發(fā)操作。甚至造成出錯(cuò)的風(fēng)險(xiǎn),而且對(duì)業(yè)務(wù)人員是一種重復(fù)操作,浪費(fèi)時(shí)間。
因此如果遇到這樣的場(chǎng)景,產(chǎn)品經(jīng)理設(shè)計(jì)方案的時(shí)候就跟業(yè)務(wù)溝通,可能業(yè)務(wù)的一個(gè)簡(jiǎn)單的分組分派工作任務(wù),就化解了這種問(wèn)題。
還可以在做推送機(jī)制的時(shí)候,設(shè)計(jì)成分派模式,將數(shù)據(jù)分別推送給事先對(duì)應(yīng)的負(fù)責(zé)人。
總之,作為產(chǎn)品經(jīng)理,需要在方案設(shè)計(jì)的時(shí)候考慮特殊場(chǎng)景或特殊操作,然后配合線上或線下的措施,確保安全運(yùn)行。
5. 了解業(yè)務(wù),基于業(yè)務(wù)
每個(gè)行業(yè)都有外人不熟悉的信息盲區(qū)。比如跨境業(yè)務(wù)的“時(shí)區(qū)”轉(zhuǎn)化問(wèn)題。
跨境網(wǎng)站如果抓取訂單,海外的平臺(tái)采用的時(shí)區(qū)和我們的并不一樣。并且某些平臺(tái)在不同國(guó)家站點(diǎn)所采用的時(shí)區(qū)也不一樣。
所以在抓單時(shí)需要把訂單所屬的時(shí)區(qū)轉(zhuǎn)換成北京時(shí)間,才能根據(jù)北京時(shí)間把訂單抓回來(lái)。
做后端,本質(zhì)就是做業(yè)務(wù)。產(chǎn)品經(jīng)理需要全盤了解業(yè)務(wù),才能如期為業(yè)務(wù)賦能。
6. 多個(gè)方案對(duì)比,擇優(yōu)而用
舉一個(gè)案例:A系統(tǒng)需要用到手續(xù)費(fèi),手續(xù)費(fèi)比例是由用戶自己配置的。
在做這個(gè)需求的時(shí)候,了解到兄弟系統(tǒng)B系統(tǒng)已經(jīng)在正式運(yùn)營(yíng)這個(gè)手續(xù)費(fèi)數(shù)據(jù)了。
那么,A系統(tǒng)是繼續(xù)在自己系統(tǒng)新建一個(gè)配置功能,還是創(chuàng)建接口從對(duì)方系統(tǒng)獲取現(xiàn)成的呢?
分析:這個(gè)問(wèn)題的關(guān)鍵在于兩種方案哪個(gè)綜合性價(jià)比更高。
如果做接口從B獲取,方案看似簡(jiǎn)單,但需要進(jìn)行跨系統(tǒng)的聯(lián)測(cè),且增加了系統(tǒng)的耦合;而新建看似復(fù)雜,但是只是一個(gè)簡(jiǎn)常規(guī)的規(guī)則配置,無(wú)需聯(lián)調(diào)測(cè)試。因此,最后采用新建配置規(guī)則的方案。
這說(shuō)明表面上看起來(lái)省事的方案,可能真實(shí)執(zhí)行起來(lái)反而會(huì)麻煩。因此產(chǎn)品經(jīng)理要充分思考,A/B方案對(duì)比后做出選擇。
作者:唧唧歪歪PM;公眾號(hào):唧唧歪歪PM(ID:jjyypm)
本文由 @唧唧歪歪PM 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來(lái)自Unsplash,基于CC0協(xié)議
第6條說(shuō)的太真實(shí)了,親身經(jīng)歷過(guò)同類事件。
今天看了很多你的文章,受益匪淺,謝謝 ??
他公眾號(hào) 寫的也不錯(cuò)