不管多復雜的系統(tǒng)設計,都離不開這9個字

6 評論 7435 瀏覽 73 收藏 18 分鐘

編輯導語:在進行系統(tǒng)設計時,對產(chǎn)品底層設計能力的掌握十分重要,如此,才能夠在接手新需求、新業(yè)務時不慌不忙,做好產(chǎn)品規(guī)劃方案。在文中,作者提出了理流程、定單據(jù)、填功能的系統(tǒng)設計策略。具體如何實施?不妨來看看作者結合了自身經(jīng)驗的這份解讀。

無論做什么事情時,我們總是希望能深諳其道、舉一反三,找到底層邏輯和運轉規(guī)律,這就需要我們多加觀察、學習、積累、總結,繼而形成自己的方法論。

上學、做研究、創(chuàng)業(yè)、做產(chǎn)品規(guī)劃、系統(tǒng)設計無不如此。本篇文章以木筆本人切身經(jīng)驗分享一些B端系統(tǒng)設計的方法和步驟,希望對一些新老朋友有所幫助。

在做系統(tǒng)設計時,遇到一個業(yè)務提的一個新的需求丟過來時,新手小Z經(jīng)常焦頭爛額,就算對既有系統(tǒng)和流程已經(jīng)很熟悉了,在設計新的功能時還是漏洞百出。

而老道的產(chǎn)品的老A卻總能得心應手,即便對過往業(yè)務不是很了解,經(jīng)過幾天的學習,也總能設計出一份業(yè)務方比較滿意的方案,而且漏洞較少。

兩人的差距在哪呢?不是責任心,不是態(tài)度,而是產(chǎn)品底層設計能力。因為老A經(jīng)過多年摸爬滾打,總結了一套放之四海而皆準的產(chǎn)品法則,這套法則足以讓老A馳騁產(chǎn)品界,立馬定江山。

小Z對老A仰慕至極,虛心求教,老A笑著送給了小Z9個字:理流程,定單據(jù),填功能。而這9個字正是老A總結的產(chǎn)品箴言,可放諸四海,童叟無欺。

第一步:理流程。

當接到一個新的項目需求時,不要上來就開始聊系統(tǒng)實現(xiàn),應該先和業(yè)務方一起把主干流程梳理一遍,保證流程是通暢無阻且切實可行的。

流程理順了,業(yè)務方的訴求也就清晰了,是否可行,哪些環(huán)節(jié)有坑都一目了然了,同時在梳理的過程中,系統(tǒng)層面的流程節(jié)點也比較清晰了。

第二步:定單據(jù)。基于業(yè)務流程各關鍵環(huán)節(jié)的產(chǎn)出歸納出系統(tǒng)的單據(jù)和狀態(tài),用單據(jù)存儲業(yè)務的過程數(shù)據(jù),用狀態(tài)管理流程的關鍵節(jié)點。

第三步:填功能。針對需要系統(tǒng)支持的環(huán)節(jié),設計系統(tǒng)功能,并與流程和單據(jù)相對應。

做系統(tǒng)設計和蓋實體大樓流程是一樣的,理流程的過程就像做規(guī)劃,是搞清楚業(yè)務訴求和分析可行性的過程,比如這塊地未來是要做商業(yè)中心還是蓋住房,樓間距幾何、地面規(guī)劃如何等。

定單據(jù)就是打地基,把樓宇的主體結構固定下來,確定結構框架、材質(zhì)和關鍵施工環(huán)節(jié),然后開始動工。

填功能是最后的裝修階段,是在主體結構上進行包裝、把最終成果呈現(xiàn)出來。

流程是方向、單據(jù)是執(zhí)行,功能是落地,流程決定了要什么,單據(jù)設計決定了怎么做,功能實現(xiàn)則決定做成什么樣子,三者相應相輝,一起達成業(yè)務目標。

▲系統(tǒng)設計核心3要素:流程、單據(jù)和功能

一、理流程:庖丁解牛,理清業(yè)務和系統(tǒng)流程

在B端業(yè)務里,尤其是供應鏈這一類偏重業(yè)務流程和多系統(tǒng)交互的領域,流程是業(yè)務開展的基礎,幾乎所有的需求都來源于流程。

當我們接到一個新的需求時,應該花50%以上的時間用于梳理流程,流程的梳理分為業(yè)務流程和系統(tǒng)流程兩部分。

業(yè)務流程由業(yè)務負責規(guī)劃,用于描述操作流程的順序,關鍵元素是[操作角色][操作節(jié)點];系統(tǒng)流程由產(chǎn)品經(jīng)理負責出具,是對業(yè)務流程分析后產(chǎn)出的系統(tǒng)交互流程,重在梳理系統(tǒng)之間的交互邏輯,關鍵元素是[操作系統(tǒng)][系統(tǒng)功能],下圖是業(yè)務流程和系統(tǒng)流程的泳道圖對比。

▲系統(tǒng)流程圖與業(yè)務流程圖

根據(jù)不同的業(yè)務場景,流程可以分為主干流程、輔助流程、異常流程三種:

  1. 主干流程:處理業(yè)務必不可少的主流程,就像樹的主干一樣,不實現(xiàn)就沒法滿足業(yè)務訴求,比如采購的建單、倉庫的收貨、上架等;
  2. 輔助流程:從主干流程分出來的子流程,如同樹的細枝末節(jié),屬于錦上添花,實現(xiàn)了有利于業(yè)務更好開展,不實現(xiàn)也不會影響,比如導入采購明細、批量收貨、批量上架等;
  3. 異常流程:出現(xiàn)異常情況的處理流程,也必須實現(xiàn),否則遇到異常了就出現(xiàn)了流程卡點,比如采購單的駁回、收貨錯誤修改、出庫揀貨異常等;

通常來說,主干流程和異常流程優(yōu)先級最高,必須在項目上線時就要具備,但異常流程因為不經(jīng)常發(fā)生,如果工期趕不上,可以考慮用簡單的方案替代(比如業(yè)務方線下處理)。輔助流程一般不緊急,可根據(jù)資源情況安排,如果項目第一期排不上,可放到后續(xù)迭代版本中。

▲如何梳理流程

在梳理業(yè)務流程時,我們可以遵循先主干再異常,最后分支的原則,盡量把項目中涉及到的流程以及每一個操作角色、操作環(huán)節(jié)都清晰地描繪出來,然后再對著操作節(jié)點梳理系統(tǒng)功能。

有些操作節(jié)點是需要系統(tǒng)功能支持的(比如采購建單、收貨),就需要有與之對應的系統(tǒng)功能,還有一些是純線下行為(比如搬運、清掃),則不需要系統(tǒng)功能。

另外,操作節(jié)點和系統(tǒng)功能并不是一對一的,有的操作可能需要多個功能支持,也可能多個操作只對應一個功能。

系統(tǒng)功能梳理出來以后,我們接著梳理每個功能對應的輸入和輸出,有些輸入和輸出只體現(xiàn)在信息流上,有些則需要其它形式的產(chǎn)出。

例如倉庫收貨完成時,我們需要對收貨的結果和過程數(shù)據(jù)保存下來,這是信息層面的輸出,同時還需要為收貨員打印一張紙質(zhì)的收貨單,這是實體單據(jù)輸出。在梳理的過程中要對各環(huán)節(jié)的輸入和輸出做詳細的記錄和拆解,這是我們下一步設計單據(jù)和狀態(tài)的依據(jù)。

流程梳理的最后一步是做系統(tǒng)劃分,將系統(tǒng)功能與當前已有的系統(tǒng)進行匹對,定位每個系統(tǒng)功能的系統(tǒng)邊界,如果還沒有系統(tǒng),正好以此梳理結果為依據(jù)做系統(tǒng)規(guī)劃。

系統(tǒng)的劃分并沒有嚴格的執(zhí)行標準,有些處于兩個系統(tǒng)交界的功能放在A系統(tǒng)也行,B系統(tǒng)也行(例如兩個系統(tǒng)交互時,枚舉值的映射),這時可以根據(jù)架構合理性、資源情況和操作便捷性等因素綜合評估。

二、定單據(jù):框架構建,明確單據(jù)和狀態(tài)

在B端系統(tǒng)中,單據(jù)是用來存儲和流轉業(yè)務信息的憑證。系統(tǒng)流程及各環(huán)節(jié)的產(chǎn)出梳理出來以后,就可以以此規(guī)劃系統(tǒng)單據(jù)和單據(jù)狀態(tài)了。

單據(jù)有兩大核心要素:關鍵屬性和流轉狀態(tài)。關鍵屬性來源于流程各環(huán)節(jié)的產(chǎn)出,記錄業(yè)務開展過程中的詳細數(shù)據(jù),流轉狀態(tài)設計來源于系統(tǒng)關鍵節(jié)點的變化,記錄流程的流轉過程。

系統(tǒng)流程的每一個環(huán)節(jié)都會有輸入和輸出,輸出的信息需要保存下來,這些信息就是單據(jù)的屬性,也是最原始的單據(jù)數(shù)據(jù),還是下一環(huán)節(jié)的輸入數(shù)據(jù)。

我們試著對各環(huán)節(jié)的產(chǎn)出數(shù)據(jù)進行提煉,如果發(fā)現(xiàn)下一環(huán)節(jié)與上一環(huán)節(jié)的信息集合一樣,只有個別信息不同,則可以將這兩個環(huán)節(jié)設計為一個單據(jù),但如果差異非常大,就需要設計成不同的單據(jù)。

例如下圖中,采購的結果會生成采購單,我們需要設計一張采購單來承載采購的所有信息,收貨的輸入信息來源于采購明細。

但由于收貨結論與采購明細相差很大,兩者并不是一個維度的數(shù)據(jù)集合,采購單產(chǎn)生于采購系統(tǒng),收貨則是在倉儲系統(tǒng),一條采購明細會生成多條收貨明細,所以收貨結論需要單獨設計一張收貨單來承載。

另外,收貨結論會作為驗收的輸入信息,但驗收和收貨只是入庫流程中的兩個環(huán)節(jié),并無很大的差異,所以可以統(tǒng)一設計到收貨單中,根據(jù)狀態(tài)加以區(qū)分(當然不同業(yè)務形態(tài)下的流程不盡相同,如果驗收需要對收貨結論進一步拆分或合并,則二者就無法共用單據(jù)存儲,就需要設計不同的單據(jù)了)。

▲如何定義單據(jù)

系統(tǒng)流程的流轉是基于單據(jù)的流轉狀態(tài)來的,單據(jù)流轉狀態(tài)是單據(jù)的非常重要的屬性,也是驅動流程流轉的靈魂。

狀態(tài)設計來源于系統(tǒng)關鍵節(jié)點的變化,在規(guī)劃狀態(tài)時,我們需要把系統(tǒng)流程從頭到尾所有的節(jié)點都整理成線,然后挑出哪些是影響流程流轉的關鍵節(jié)點,對節(jié)點的流向結果進行提煉,便得到了單據(jù)的狀態(tài)。

例如倉庫入庫流程中,供應商到貨以后,會分別進行①供應商簽到→②倉庫收貨或拒收(合格品驗收,不合格拒收)→③倉庫驗收→④倉庫入門上架等4個節(jié)點,根據(jù)4個節(jié)點的輸出結論,便能分別設計出供應商簽到、收貨完成、拒收、驗收完成、上架完成等5個收貨單狀態(tài)(當然這只是最簡單的舉例,實際倉庫收貨流程會復雜的多),如圖所示。

▲根據(jù)系統(tǒng)節(jié)點設計單據(jù)狀態(tài)

我們在設計單據(jù)狀態(tài)時,需要遵循幾個原則:

  1. 狀態(tài)之間應該是平行且互斥的,不能存在交集。
  2. 狀態(tài)之間流轉應該有清晰流向,是線型而不是網(wǎng)型,不要相互穿插跳躍。
  3. 狀態(tài)的設計不是憑空捏造的,必須和某個關鍵節(jié)點相呼應,由節(jié)點觸發(fā)狀態(tài)機流轉。
  4. 狀態(tài)設計最好只有一個開始節(jié)點,但可以有多個結束節(jié)點(正常結束狀態(tài)和異常結束狀態(tài)分開)。
  5. 狀態(tài)設計應該足夠精簡,只有對關鍵邏輯產(chǎn)生影響的節(jié)點,才適合設計為狀態(tài)。

三、填功能:破繭而出,實現(xiàn)系統(tǒng)功能

當流程和單據(jù)梳理清晰以后,系統(tǒng)設計就成功了80% 了,最后20%在于系統(tǒng)功能的填充和實現(xiàn),將功能按照業(yè)務需要的風格輸出,形成系統(tǒng)原型和需求文檔。

在填充系統(tǒng)功能時,也是有章可循的,我們需要依賴前面所做的流程梳理和系統(tǒng)單據(jù):

1)首先,將流程節(jié)點中的線下操作流程和系統(tǒng)處理流程進行分類,只有系統(tǒng)處理流程是需要實現(xiàn)系統(tǒng)功能的。

2)接著,基于各環(huán)節(jié)的輸入和輸出信息設計對應的功能。功能包含帶頁面的操作性功能,以及不需要頁面的系統(tǒng)邏輯處理功能,輸入信息對應到系統(tǒng)功能上通常是查詢條件、信息錄入、導入等功能,輸出信息通常對應查詢結果、存儲信息、操作日志、導出等功能。

3)然后,將關鍵功能與單據(jù)的狀態(tài)變更結合起來,梳理出每個功能的詳細邏輯以及對應的單據(jù)狀態(tài)變更,系統(tǒng)功能便設計完成了。

4)最后,功能設計完以后,將系統(tǒng)功能和非系統(tǒng)功能串在一起驗證一下是否和業(yè)務流程預期一致,不能出現(xiàn)流程盲區(qū)和卡點;若有,則繼續(xù)完善,直到整個業(yè)務流程通暢無阻。

在設計B端系統(tǒng)功能設計時,可以參考尼爾森經(jīng)典十原則,同時一定要遵循實用大于美觀的原則,這里總結幾個設計小貼士:

1)頁面功能應該分清主次,頁面越簡單越好,這樣的學習成本和實現(xiàn)成本最低,拒絕花里胡哨。

2)同一個系統(tǒng)內(nèi)各頁面設計的控件、頁面布局、風格、顏色、字體應該統(tǒng)一,且符合大眾操作習慣。

3)如果可以,頁面應該聚焦,盡量在一個頁面完成核心操作,少做跳轉,因為每一次跳轉都是動作和時間上的浪費。

4)批量操作很有用,例如查詢時可以查多個SKU、操作時可以批量審核等,系統(tǒng)的一個批量功能,可能會給業(yè)務的操作效率帶來飛躍。

5)操作記錄很重要,當出現(xiàn)問題需要排查時,日志是案發(fā)現(xiàn)場最好的黑匣子,所以無論如何,核心操作的日志功能不要省,否則總有一天,會為自己的一時懶惰埋單。

6)設計一個好的灰度策略,通過新老流程并行,由老流程逐步過渡到新流程,有問題了也可以隨時切換,可以極大的降低項目風險。

以上便是老A的系統(tǒng)設計9字箴言了,掌握了這個方法,再復雜的系統(tǒng)設計也能夠層層剖析,直到最終落地,如庖丁解牛。

方法本身并不神奇,其實就是需求分析和拆解的過程,但知易行難,每一步的技能磨練都需要我們懷謙卑之心深扎到一線去摸爬滾打才能慢慢領悟,這個過程叫做經(jīng)驗,不經(jīng)歷就無法得驗。

如果問我有沒有更快的系統(tǒng)設計成長技巧,答案是肯定的,就兩個字:實戰(zhàn)!百聞不如一見,百看不如一試,唯有多加實戰(zhàn)才能在真實的業(yè)務環(huán)境和項目壓力中迅速成長,繼而逐漸找到自己的方法論,以不變之策應萬變之事。?到那時,你且看他……

 

作者:木筆,產(chǎn)品一俗生,深耕于供應鏈領域,微信公眾號:供應鏈產(chǎn)品筆記

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

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

更多精彩內(nèi)容,請關注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 總結的到位

    回復
  2. 請問,這里的“單據(jù)” 是不是有點類似后臺開發(fā)人員的“數(shù)據(jù)表”. 而且常規(guī)的不都是梳理功能架構、信息架構么,作者這里梳理是否能代替?

    來自廣東 回復
    1. 單據(jù)應該指的是類似:銷售單、發(fā)貨單、采購單等

      來自浙江 回復
  3. 謝謝老師,解決了燃眉之急。

    回復
  4. 向你學習

    回復
  5. 很不錯,記個筆記~

    來自浙江 回復