提升B端產(chǎn)品靈活性最重要的手段——配置化
編輯導(dǎo)語(yǔ):不同于C端產(chǎn)品面向大眾,B端產(chǎn)品是面向企業(yè)用戶的產(chǎn)品,是用來(lái)解決企業(yè)需求的,因而實(shí)現(xiàn)界面的可配置化成為提升B端產(chǎn)品靈活性的必要要求。本文作者從自身工作實(shí)踐出發(fā),對(duì)此展開(kāi)了分析說(shuō)明, 與大家分享。
為了應(yīng)對(duì)更多的業(yè)務(wù)場(chǎng)景,較低成本的滿足豐富多變的業(yè)務(wù)需求,B端產(chǎn)品在設(shè)計(jì)之初就要考慮較高的靈活性,這是B端產(chǎn)品設(shè)計(jì)中最重要的原則之一。
然而,當(dāng)面對(duì)具體業(yè)務(wù)場(chǎng)景時(shí),B端產(chǎn)品經(jīng)理們很容易按照已明確的需求,做成固化的方案,從而導(dǎo)致開(kāi)發(fā)同學(xué)在實(shí)現(xiàn)時(shí)代碼都“寫(xiě)死”了,后面再想做些啥改動(dòng),真是難如登天。
要想達(dá)到B端產(chǎn)品較高靈活性的目標(biāo),需要從產(chǎn)品架構(gòu)、實(shí)現(xiàn)方式、功能設(shè)計(jì)多個(gè)層面共同支持,作為產(chǎn)品經(jīng)理,主要從功能設(shè)計(jì)層面進(jìn)行思考。
此篇作為本系列開(kāi)篇,先幫助大家建立全局認(rèn)知。
01 如何提升靈活性?
總體來(lái)說(shuō),從功能設(shè)計(jì)上提升靈活性有兩種思路:
第一:預(yù)測(cè)需求
即我們思考一個(gè)需求方案時(shí),同時(shí)預(yù)測(cè)未來(lái)業(yè)務(wù)中可能發(fā)生的多種場(chǎng)景,并提前做好普適方案。
這種方式在一定程度上可以提升產(chǎn)品靈活度,但局限性也很強(qiáng):
- 一方面需要產(chǎn)品經(jīng)理對(duì)業(yè)務(wù)有非常深入的了解,才能預(yù)測(cè)得比較精準(zhǔn);
- 另一方面能夠提前設(shè)想的場(chǎng)景是有限的,因此方案普適范圍也是非常有限的,不可能做到完全靈活。
所以這條思路主要應(yīng)用于需求場(chǎng)景較少且容易明確的功能。
第二:配置化
第二種思路就是我們這個(gè)系列要介紹的主角——配置化。將產(chǎn)品功能做成靈活可配置,通過(guò)不同配置的組合,來(lái)滿足業(yè)務(wù)中各種“意想不到”的需求。
接下來(lái)進(jìn)入正題。
02 什么是功能配置化?
不同的角度定義有所區(qū)別,從產(chǎn)品設(shè)計(jì)層面看:
功能配置化是用戶通過(guò)可視化的界面,采用無(wú)代碼或低代碼的方式,即可快速配置出滿足自身需求的功能。
用人話翻譯一下就是:用戶直接通過(guò)系統(tǒng)界面就能配置出自己想要的功能,而不用找開(kāi)發(fā)小哥排猴年馬月的期。
大多數(shù)B端同學(xué)或多或少都接觸過(guò)一些產(chǎn)品功能的配置化,小到一個(gè)自定義字段、列表排序,大到一個(gè)流程,乃至整個(gè)系統(tǒng),都可以做成可配置的。
一些aPaaS廠商,如國(guó)內(nèi)的明道云、簡(jiǎn)道云、氚云等,企業(yè)用戶通過(guò)可視化的系統(tǒng)頁(yè)面,無(wú)需代碼即可從零搭建出許多業(yè)務(wù)邏輯較簡(jiǎn)單且通用的企業(yè)級(jí)應(yīng)用。Tips:
aPaaS:全稱是application Platform as a Service,即應(yīng)用平臺(tái)即服務(wù),用于支持應(yīng)用程序直接通過(guò)PaaS(平臺(tái)即服務(wù))開(kāi)發(fā)、部署和運(yùn)行,包括數(shù)據(jù)對(duì)象、權(quán)限管理、用戶界面等。
因?yàn)槭且許aaS的形式提供給企業(yè)用戶,同時(shí)又具有開(kāi)發(fā)工具(即PaaS)的性質(zhì),所以把它單獨(dú)列為了aPaaS,可以理解為是一種介于PaaS與SaaS之間的形式。
前段時(shí)間陳果和任向暉兩位大佬關(guān)于“低代碼”的辯論,針對(duì)的就是這個(gè)。
那么無(wú)代碼和低代碼又是指的什么呢?
- 無(wú)代碼是指用戶在配置過(guò)程中不需要使用任何一種開(kāi)發(fā)語(yǔ)言即可完成全部配置;
- 低代碼是指用戶在配置過(guò)程中需要自己寫(xiě)一些簡(jiǎn)單的代碼,例如某些接口或SQL語(yǔ)句,主要應(yīng)用于非常個(gè)性化的需求場(chǎng)景,大多數(shù)情況下是不需要的。
03 配置化的組成
那么一個(gè)完整的功能配置化包含哪些方面呢?要回答這個(gè)問(wèn)題,需要從一個(gè)B端產(chǎn)品最基本的組成部分出發(fā)。
大部分的B端產(chǎn)品都可以抽象為以下四個(gè)部分組成(有的只有其中幾項(xiàng)):
- 業(yè)務(wù)數(shù)據(jù)管理
- 工作流執(zhí)行與管理
- 分析圖表
- 基礎(chǔ)信息
而一個(gè)全面系統(tǒng)的功能配置化方案,就是針對(duì)這四個(gè)部分進(jìn)行的,當(dāng)然,這個(gè)粒度太粗了,沒(méi)有辦法直接做配置,我們?cè)偌?xì)化一下。
業(yè)務(wù)管理的配置化包括:
- 業(yè)務(wù)數(shù)據(jù)配置
- 業(yè)務(wù)邏輯配置
- 頁(yè)面布局配置
- 輔助功能配置
工作流的配置化包括:
- 業(yè)務(wù)流程配置
- 審批流程配置
分析圖表配置化包括:
- 可視化圖形配置
- 統(tǒng)計(jì)表配置
基礎(chǔ)信息配置化包括:
- 用戶、組織配置
- 角色配置
- 權(quán)限配置
- …
我們用下圖整理一下:
圖1 功能配置化的組成
從這張圖中大家可以看出,功能配置化是個(gè)系統(tǒng)且龐大的工程,涉及到產(chǎn)品的方方面面,想要做好,需要投入巨大工作量,因此關(guān)于配置化的思考越早越好,拖得越晚,產(chǎn)品越臃腫復(fù)雜,所需付出的成本越高,當(dāng)產(chǎn)品復(fù)雜到一定程度后,最后會(huì)發(fā)現(xiàn)與其在現(xiàn)有產(chǎn)品的基礎(chǔ)上做配置化,還不如重做。
04 配置化的步驟
無(wú)論做哪方面功能的配置化,都可以總結(jié)為以下三大步:
圖2 配置化三大步
4.1 抽象
抽象是指提煉出你要配置功能包含哪些對(duì)象,即這個(gè)功能有哪幾個(gè)組成部分,例如頁(yè)面布局的配置,可以抽象出頁(yè)面元素、位置、大小、顏色、樣式幾個(gè)對(duì)象,我們的配置化,就是針對(duì)這些對(duì)象進(jìn)行的。
圖3 頁(yè)面布局抽象配置對(duì)象
在抽象配置對(duì)象時(shí),有以下幾條重要原則:
第一:根據(jù)需求進(jìn)行抽象
一般來(lái)說(shuō),在沒(méi)有其他要求的前提下,抽象出的對(duì)象也應(yīng)該滿足MECE原則,即這些對(duì)象組合起來(lái)就能形成最終的完整功能,同時(shí)這些對(duì)象相互間沒(méi)有交叉。
不過(guò)在實(shí)際功能設(shè)計(jì)中,我們其實(shí)只需要根據(jù)具體需求,抽象出需要做配置的對(duì)象即可,例如需求只是想換個(gè)皮膚,那只需要抽象出“顏色”做成可配置就行了;如果需求是想做頁(yè)面元素可以調(diào)整區(qū)域,那只需要抽象出“位置”。
第二:明確抽象對(duì)象間關(guān)系
抽象出的幾個(gè)配置對(duì)象雖然獨(dú)立,但不是毫無(wú)關(guān)聯(lián),需要思考清楚這些對(duì)象之間的關(guān)系是什么,相互之間是如何影響的,例如位置、顏色、大小、樣式都是在元素的基礎(chǔ)上實(shí)現(xiàn)的,先有頁(yè)面元素,才有其他的配置,這個(gè)關(guān)系就會(huì)影響到我們?cè)O(shè)計(jì)這個(gè)功能時(shí),需要考慮順序、主次。
第三:不同的功能配置化抽象方式不同
很多同學(xué)一說(shuō)到配置化,首先想到的就是模塊化,以至于將這兩者等同起來(lái)了,其實(shí)這是片面的認(rèn)識(shí),例如前面說(shuō)的頁(yè)面布局的配置,用的就不是模塊化的原理。
模塊化本質(zhì)是一種從業(yè)務(wù)角度,對(duì)業(yè)務(wù)數(shù)據(jù)做的內(nèi)聚和解耦,所以模塊化的抽象方式適合業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)邏輯的配置,但并非適合所有的功能配置。
當(dāng)配置對(duì)象抽象出來(lái)后,需要針對(duì)它們進(jìn)一步的細(xì)化——分解。
4.2 分解
分解是對(duì)配置對(duì)象再次細(xì)化,以達(dá)到最小粒度。做好配置化最重要的一環(huán),就是確定好最小粒度。
什么是最小粒度?在功能配置化場(chǎng)景中,最小粒度是指產(chǎn)品中有完整功能意義的最小組成單位。
在這個(gè)定義中,最小組成單位比較好理解,不過(guò)前面有個(gè)修飾語(yǔ)——有完整功能意義。
那么怎樣才算完整功能意義呢?在不同的配置化場(chǎng)景中,這個(gè)結(jié)論還不一樣,舉個(gè)例子:在業(yè)務(wù)數(shù)據(jù)的配置化場(chǎng)景中,對(duì)某個(gè)業(yè)務(wù)數(shù)據(jù)的增刪查改,從功能角度可以定義為四個(gè)功能(最小粒度),但這樣定義對(duì)用戶來(lái)說(shuō)沒(méi)有任何意義,也不完整,因?yàn)樾略鐾炅松兑哺刹涣耍炊疾荒芸?,那有什么意義呢,而真正有意義的是一個(gè)業(yè)務(wù)數(shù)據(jù)完整的增刪查改合集,這個(gè)才是業(yè)務(wù)數(shù)據(jù)配置化的最小粒度。
但是,在角色權(quán)限的配置化場(chǎng)景中,增刪查改就可以定義為四個(gè)不同的最小粒度,因?yàn)檫@四個(gè)功能對(duì)應(yīng)四個(gè)權(quán)限,不同角色或用戶的權(quán)限就是有區(qū)別的,所以在這個(gè)場(chǎng)景中增刪查改就是四個(gè)最小單位。
所以,我們?cè)诙x最小粒度時(shí)要結(jié)合配置化場(chǎng)景來(lái)看。
4.3 重組
將前面分解后的最小粒度按不同規(guī)則排列組合,進(jìn)行重組,就能配置出新的一套功能出來(lái)了。
到這里,關(guān)于配置化基礎(chǔ)認(rèn)知方面的介紹就完了,接下來(lái)文章將進(jìn)入實(shí)操干貨部分,來(lái)告訴大家這些配置化具體怎么做。
下一篇:業(yè)務(wù)數(shù)據(jù)配置化
作者:周翔;公眾號(hào):周翔Fly;個(gè)人微信:zhouxiangxgg
本文由 @周翔 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自 Unsplash,基于CC0協(xié)議。
啥時(shí)候更新呀,沒(méi)看到第二篇~
老師請(qǐng)遵守你的承諾,更新《下一篇:業(yè)務(wù)數(shù)據(jù)配置化》哈哈哈哈??
同期待??
班門(mén)弄斧一下,實(shí)際上配置化在生產(chǎn)中有著廣泛的應(yīng)用,如做電商小程序產(chǎn)品,往往允許商家自己裝修店鋪,更深一層的,允許商家配置是否允許部分退,僅退款等等,目的還是為了靈活的適應(yīng)業(yè)務(wù)場(chǎng)景。如果配置化是發(fā)散,那么將多個(gè)配置化業(yè)務(wù)組合在一起就相當(dāng)于聚合,針對(duì)某個(gè)特殊行業(yè),如美妝,就形成了行業(yè)方案,兩者相輔相成。但是應(yīng)該注意到的是,配置化是依賴于1、豐富的行業(yè)經(jīng)驗(yàn)(知道哪里需要配置化,同時(shí)控制配置化的顆粒度不要太大也不能太小,太大則不夠靈活,太小則運(yùn)維成本高) 2、較為充足的開(kāi)發(fā)資源(小公司修一條路且不容易,想要條條大路通羅馬則要花費(fèi)真金白銀)。請(qǐng)老師指正
第一點(diǎn):豐富的行業(yè)經(jīng)驗(yàn)是做好配置化的重要輔助條件,不過(guò)不是根本條件;
第二點(diǎn):配置化對(duì)現(xiàn)有產(chǎn)品的改造可能非常大,有的時(shí)候不亞于重做,必然需要投入大量資源,這個(gè)時(shí)候需要評(píng)估值不值得,如果有差異的場(chǎng)景比較少,變動(dòng)頻率不高,直接寫(xiě)死到業(yè)務(wù)規(guī)則比做配置化更劃算。
我的新書(shū)《不枯燥的B端產(chǎn)品實(shí)戰(zhàn)課》已上線,更多干貨盡在書(shū)里,京東地址:https://item.jd.com/12786741.html