在時間軸和空間軸上構(gòu)筑百年2B:產(chǎn)品在時間軸+空間軸的積累(上)(四)
編輯導(dǎo)讀:2B又稱B2B,也有寫成BTB,是企業(yè)對企業(yè)之間的營銷關(guān)系。2B企業(yè)發(fā)展至今,他們的發(fā)展?fàn)顩r如何呢?上面兩章在宏觀架構(gòu)和微觀架構(gòu)上說明了如何構(gòu)建起時間軸+空間軸的可被積累的框架,下面詳細(xì)論證在此架構(gòu)下如何落到實(shí)地,并基于這樣的架構(gòu)構(gòu)建起百年2B。
再細(xì)化下4層模型在實(shí)際落地中對應(yīng)各個角色的運(yùn)作模式:
第一層是承載技術(shù)積累,也是最基礎(chǔ)的部分,這里是由一行一行代碼堆積起來的,或由一條一條與技術(shù)直接相關(guān)的配置數(shù)據(jù)堆積起來的;一些與控件相關(guān)的產(chǎn)品技術(shù)體系,由研發(fā)來主導(dǎo)建立,比如前面提到的搜索幫助體系、消息管理體系、多語言體系、模塊化函數(shù)體系、標(biāo)準(zhǔn)化界面體系、權(quán)限體系等等技術(shù)標(biāo)準(zhǔn)的構(gòu)建+工具的構(gòu)建+防呆模式的構(gòu)建等都由研發(fā)的角色一行一行的代碼構(gòu)建出來,而這些將會考驗(yàn)一個架構(gòu)師的能力;
對2B架構(gòu)師來說不但要考慮海量的數(shù)據(jù)問題,還要考慮海量功能的問題,如何能在同一套系統(tǒng)架構(gòu)下搞定兩個海量,就看CTO、架構(gòu)師們的功力了!
滴滴當(dāng)年有個案例,當(dāng)進(jìn)行補(bǔ)貼大戰(zhàn)時,產(chǎn)品和服務(wù)器架構(gòu)都搞不定,于是騰訊率領(lǐng)2百人聽說2周就對滴滴從頭到腳翻新了一次,可見從功能應(yīng)用層面2C是非常簡單的;而相對2B到現(xiàn)在為止為什么SAP還不敢換他們上世紀(jì)80年代的技術(shù)平臺和架構(gòu)?
那是因?yàn)闆]有任何人敢用其他語言、或技術(shù)架構(gòu)重構(gòu)一次SAP的代碼!這又是為什么了?
做開發(fā)的人都知道,寫到系統(tǒng)里的每一行代碼都代表著一種業(yè)務(wù)場景的處理、邏輯判斷、業(yè)務(wù)控制等情況,你如果搬遷的時候沒有把這行代碼理解透徹,那么對應(yīng)的業(yè)務(wù)場景就沒有搬遷過來,那么就等于在搬遷過程中真實(shí)地產(chǎn)生了一個BUG或人為地產(chǎn)生了一個功能缺陷、缺失;不管是用其他的開發(fā)語言、還是相同的開發(fā)語言不同的架構(gòu)重新開發(fā)一次,你也不能確保所有的代碼是copy過去的,更何況是選擇不同的開發(fā)語言,那多年沉淀的2B的解決方案、場景基本上是毀于一旦;這其實(shí)既是SAP的優(yōu)勢,也是SAP不可逾越的巨大劣勢!
也是現(xiàn)在被大家攻擊的痛點(diǎn),可是為什么還得使用他,還是因?yàn)樗恢辈粨Q開發(fā)平臺,在上面積累沉淀了幾十年,積累下全球45萬家企業(yè)的解決方案并沉淀到IT產(chǎn)品里;各個行業(yè),各個體量的,都固化在他的系統(tǒng)里或叫代碼里了,任何一名員工都是在給他添磚加瓦,員工的流失對這套產(chǎn)品體系沒有任何影響,每一位員工的智慧、聰明才智都固化成代碼沉淀到SAP的產(chǎn)品里,變成了看得見摸得著的“固定資產(chǎn)”!
做SAP的人都知道,在制造業(yè)對于一個具體的業(yè)務(wù)SAP一定有他的標(biāo)準(zhǔn)系統(tǒng)解決方案,如果你發(fā)現(xiàn)沒有,打算用開發(fā)的方式實(shí)現(xiàn),大概率是你自己對SAP研究的還不夠透徹,這也是衡量資深顧問和普通顧問的區(qū)別,資深顧問會選擇用SAP已有的功能并說服客戶使用同時說明為什么,而普通的顧問會選擇按照客戶的需求開發(fā)出客戶當(dāng)時想要的功能,然后在未來的日子里一直在新開發(fā)的功能上打補(bǔ)丁、修BUG;而資深的顧問用SAP標(biāo)準(zhǔn)功能,提出的解決方案,在未來的日子里無論客戶如何變化,都被SAP囊括其中了,畢竟SAP在其他很多地方都碰到過,他們選擇了最好的幾種解決方案固化到產(chǎn)品里;到最后你就有種孫悟空再厲害也沒跳出如來佛手掌心的感覺!他們能做到這些那也是被45萬家客戶虐得遍體鱗傷居然不死還能升華重生之后才獲得的能力,否則他們肯定無法做到如此強(qiáng)悍的適應(yīng)能力!
反過來想想,你在客戶那里剛開發(fā)的功能,只是剛剛出生的新功能,而人家在45萬家客戶中受虐過,已經(jīng)是身經(jīng)百戰(zhàn)的老水手了,什么樣的都見過了,所以才能囊括住接下來發(fā)生的種種情況,而你這新開發(fā)的功能才剛剛出生連一個客戶的洗禮都還沒走完,人家卻被45萬客戶洗禮過了。
我對比這個的目的是想告訴大家,定好2B最基礎(chǔ)的產(chǎn)品技術(shù)方向,并在最早期就搭架起可被沉淀的技術(shù)框架是多么的重要,他將是2B產(chǎn)品賴以生存百年的基石,如果沒有這樣的技術(shù)框架,那么對SAP來說也就是做了45萬個項(xiàng)目而已,而不是把45萬最終沉淀成“一”,唯一的“一套產(chǎn)品”他們能把海量最后化繁為簡最終被收攏為唯一的一個“一”的產(chǎn)品!這才是真NB的地方,當(dāng)然他們也能從這一個“一”拆分出45萬!
下面我們來討論另一種基礎(chǔ)類型控件:技術(shù)的歸技術(shù)、業(yè)務(wù)的歸業(yè)務(wù),即存在技術(shù)+業(yè)務(wù)的雙屬性的產(chǎn)品控件體系。
還是滴滴有一個很經(jīng)典的案例,滴滴司機(jī)在滴滴平臺需要提現(xiàn),于是出現(xiàn)了滴滴平臺真沒錢的情況,技術(shù)上就是賬戶的余額小于本次提取的額度,于是滴滴就直接彈出了一個提示“滴滴余額不足,無法提現(xiàn)!”在技術(shù)上,這個消息沒有錯,他真實(shí)的反映了當(dāng)前的實(shí)際展示的技術(shù)結(jié)果;但是實(shí)際卻是“我就提2千元??!”就這么一個提示在司機(jī)傳開了,反而引起了瘋狂的提現(xiàn),都是這樣的提示,于是滴滴司機(jī)們就“爆炸”了!當(dāng)然后面程維找馬化騰借到錢化解了這個危機(jī)!
于是后面他們在產(chǎn)品層面就做了一個改動,當(dāng)出現(xiàn)沒錢的時候提示變成了“系統(tǒng)維護(hù),請明天再提現(xiàn)!”這個案例告訴我們其實(shí)消息提醒不是一個IT問題,是一個純粹的業(yè)務(wù)問題,特別是在2B領(lǐng)域往往一條消息是指向一個明確的業(yè)務(wù)問題,而作為一個開發(fā)者是肯定不知道如何引導(dǎo)用戶的,所以也絕對不能用“技術(shù)語言”展現(xiàn)出來,因此技術(shù)只負(fù)責(zé)呈現(xiàn)該消息最原始的技術(shù)結(jié)論,具體的展現(xiàn)和如何處理以及引導(dǎo)等與直接用戶接觸的是需要交給專業(yè)人士來做!
我們來看那一個案例:
技術(shù)展現(xiàn):
這里的消息提醒是:2021年4月沒開賬!
點(diǎn)開消息,針對這個消息有一整套解決方案的指引:
當(dāng)然這只是一個消息,我們來看下他建立起來的這套產(chǎn)品體系:
F5這套消息數(shù)據(jù)里有幾百個這樣的消息,剛爆出這個是第201的消息:
針對這201的消息具體的解決辦法是這樣的:
而這個F5-201的消息,被這么多地方引用到了:
這條消息,在9個地方被引用到,而這9個地方可能是嵌套進(jìn)某些程序小模塊的,又將會有多少真正地方引用可想而知了;而在這么多被引用到的地方,其被爆出的消息提醒是一模一樣的,對用戶來說,不需要再去適用,只要一次就夠。
引用這條消息的某個函數(shù),被37個地方引用了:
這里只是列舉了一條消息,而像這樣的消息在消息產(chǎn)品體系中沉淀下來的有:英文的664,393條消息,可見其多么的龐大,當(dāng)然這么多數(shù)據(jù)也不是一朝一夕就做起來了,SAP也是積累了30多年才到這個量,但是最重要的卻是他構(gòu)建起了這套可被積累沉淀的體系,剩下的就是在時間軸+空間軸上的積累;而這樣的積累也不需要多么復(fù)雜的技術(shù),需要的只是長年累月的堆積,而對于時間長河上的員工都是為這套體系貢獻(xiàn)儲備的一個個的“蟻工”,不管誰都一樣,這才是NB的架構(gòu)、NB的產(chǎn)品!
因此在第一層需要架構(gòu)師搭建起可被積累的技術(shù)體系,剩下的要么就是普通的開發(fā)人員一行一行的豐富小模塊代碼或數(shù)據(jù),要么是產(chǎn)品經(jīng)理、或項(xiàng)目經(jīng)理、或交付顧問、或最終用戶一條一條的豐富這套體系下的技術(shù)級的配置數(shù)據(jù),最終構(gòu)筑起在時間軸+空間軸不可逾越的2B產(chǎn)品。
總結(jié)來說最底層,也是第一層,現(xiàn)在可以劃分4大類:
- 功能無限強(qiáng)大的控件,這類只需要無限提升控件本身的強(qiáng)大功能,控件迭代后在全局都能使用上新的功能,而無需逐個升級,如SAP的ALV控件。
- 積累技術(shù)類配置數(shù)據(jù)型,這類技術(shù)上相對不需要太強(qiáng)悍的功能,也許可以理解為技術(shù)很弱,其強(qiáng)悍的地方是基于這一框架體系下積累起來龐大的數(shù)據(jù),如字段集合。
- 代碼模塊化,這類最容易理解,相對來說也最多使用,畢竟代碼塊可以省掉很多重復(fù)性的開發(fā)動作,如SAP的BAPI體系
- 技術(shù)的歸技術(shù)、業(yè)務(wù)的歸業(yè)務(wù),這類首先擁有第二類的所有特性,但是具體在產(chǎn)生數(shù)據(jù)時絕大部分工作不由開發(fā)人員產(chǎn)生數(shù)據(jù),而是由產(chǎn)品、顧問、用戶來產(chǎn)生,形成龐大的數(shù)據(jù)集,如消息中心、多語言體系等。
第二層PAAS建模:這一層我們需要積累的是具體的業(yè)務(wù)解決方案模塊,具有業(yè)務(wù)的抽象意義,不具有行業(yè)特性。這個維度將考驗(yàn)產(chǎn)品經(jīng)理的建模能力,他需要高度概括一種業(yè)務(wù)場景的公共屬性,或解決方案集合,并基于這些共性構(gòu)建業(yè)務(wù)模型。
這一層以我目前的研究,并與實(shí)際相結(jié)合,目前共總結(jié)出兩種方法,一種是直接用代碼建模,一種用圖形化編程建模,當(dāng)然這里的建模,都是在第一層體系架構(gòu)基礎(chǔ)之上的。
對具體的業(yè)務(wù)抽象成模型、以及抽象出來后進(jìn)行具體的IT建模,都是對產(chǎn)品經(jīng)理巨大的考驗(yàn),我認(rèn)為擁有這樣的能力,才是一個2B產(chǎn)品經(jīng)理真正NB的能力,而不是具體的搞定某個功能(搞定某個功能叫項(xiàng)目經(jīng)理或項(xiàng)目顧問);2B產(chǎn)品需要的是構(gòu)建該種業(yè)務(wù)場景解決方案的模型,當(dāng)構(gòu)建好這個模型后,基本上就做到了在這個小的業(yè)務(wù)場景,完整意義上的全部搞定,不管類似問題是否已經(jīng)出現(xiàn),全可以理解為搞定,因?yàn)橐呀?jīng)從本質(zhì)層面提出解決方案模型了。
比如就好像空氣動力學(xué)和飛機(jī)的關(guān)系,只要是飛機(jī)就必須遵循空氣動力學(xué)的理論模型,對于你來說就是找到了這個業(yè)務(wù)場景下的“空氣動力學(xué)”的模型!至于后面的各種類型飛機(jī),那都是具體的一個一個實(shí)際的案例,當(dāng)然這些實(shí)際的案例都無法與“空氣動力學(xué)”相比肩!
我這里以采購訂單舉例,構(gòu)建一個模型:
這是組成一張采購訂單的4大部分;功能操作部分、訂單頭、訂單行項(xiàng)目、以及訂單行明細(xì),這是第一層大的模型。
我們先對訂單頭進(jìn)行分析、建模:
我們會發(fā)現(xiàn)對于訂單來說,這里有很多的屬性,每一種屬性也許代表對應(yīng)某個行業(yè)、或某個企業(yè)、或某種業(yè)務(wù)場景的解決方案、或處理邏輯,因此我們需要構(gòu)建出一個可被承載訂單頭數(shù)據(jù)的一個模型,這個訂單頭模型,擁有上面說的那些能力,我這里大概分析了下:
這里我們分出對應(yīng)訂單頭,可能會附屬這些業(yè)務(wù)場景,但是具體在什么行業(yè)、什么規(guī)模、什么區(qū)域、什么采購業(yè)務(wù)等情況下,具有這當(dāng)中的哪些業(yè)態(tài),我們是無法確定的,因?yàn)樵谶€沒碰到具體的某個行業(yè)、具體規(guī)模、具體區(qū)域、具體場景下,我們都是無法確定的。
如果實(shí)在無法理解,比如我們現(xiàn)在做了一個杯子,這個杯子會被用來裝酒、水、咖啡、甚至是湯,杯子里裝的東西是裝了一小杯、半杯、還是一整杯等等這些事情,對于造杯子的人來說,是完全不可知的,具體這個杯子用來裝什么?裝多少?都是由具體使用這個杯子的人來決定。如果裝什么、裝多少都被定義好了,那么這叫定制化,當(dāng)然在我這里他叫“窮舉法”!
當(dāng)我們梳理出這些模型后,我們需要做到三個層面的建模:
1)定義好各個業(yè)務(wù)板塊必須的和公共的字段
是指公共字段或叫標(biāo)準(zhǔn)字段,不能刪除,IT處理邏輯是鎖死的,比如訂單編號,必須有、而且是基于順序號自動產(chǎn)生等;至于具體有哪些被列入標(biāo)準(zhǔn)處理邏輯字段具體業(yè)務(wù)模型,具體分析。
2)定義好各個模塊必須的和公共的業(yè)務(wù)處理邏輯
定義好對于訂單頭公共的處理邏輯,不會隨著行業(yè)或業(yè)務(wù)形態(tài)的變遷會有所不同,比如單頭數(shù)據(jù)必須要進(jìn)行保存的動作,訂單必須要有審批的動作,修改必須要有記錄的動作,這些處理,不因?yàn)槿魏涡袠I(yè)、企業(yè)的變化而有所不同,因此這些都叫公共處理邏輯。
3)定義模型可被自由添加的字段
上面第一條定義好各個業(yè)務(wù)板塊公共字段、標(biāo)準(zhǔn)字段后,我們會發(fā)現(xiàn)在實(shí)際業(yè)務(wù)中會有各種各樣的特色字段,比如服裝行業(yè)有“網(wǎng)格”,醫(yī)藥“含量”等等行業(yè)特色字段。接著上面列舉大家能明白的案例,還是我們造的那個杯子,在一家咖啡店使用,裝咖啡時只能裝到350ML的位置,而杯子上卻沒有350ML的標(biāo)識,那么這時我們就在杯子上350ML這個位置畫上一條橫線標(biāo)上350ML,以后每次都只裝到這個位置就不裝了;雖然這個杯子和其他的杯子是同一批出廠的杯子,但是他們卻已經(jīng)不同了。
而畫出的這條橫線就叫在具體行業(yè)、具體企業(yè)、具體場景下的個性化解決方案,我們需要提供的就是他可以在這個杯子上畫這條橫線。那么回到我們這里在我們的這個模型里,需要做到不但有標(biāo)準(zhǔn)字段,還得有個性化字段,至于在使用場景中具體可被定義多少個這樣的個性字段,我們在模型里不做限制。
其實(shí)在實(shí)際應(yīng)用只增加字段是不夠的,還得需要對這個字段定義特殊的邏輯。就好比這個杯子為了達(dá)到必須是350毫升,我在350毫升這里不是畫一圈的線,而是打一圈孔,只要超過350毫升,就會自動溢出,從而做到絕對的每一杯都是350毫升。
這個鉆孔的動作,在我們這個模型里叫“增強(qiáng)”,我們可以對我們新增加的字段自定義任何的業(yè)務(wù)處理邏輯,具體是什么樣的邏輯,由實(shí)際業(yè)務(wù)來決定。這個時候不但標(biāo)準(zhǔn)字段有業(yè)務(wù)處理,我們新增的字段也有特定的處理邏輯,而這個新增的業(yè)務(wù)處理邏輯就叫行業(yè)解決方案、或叫個性化,但是他對我們整個訂單的構(gòu)架模型卻沒有任何影響。
上面是對訂單頭進(jìn)行建模的分析和處理過程,對應(yīng)訂單行、和訂單明細(xì)的建模過程也是類似的分析處理方法;
訂單行部分:
訂單行明細(xì)部分:
訂單行和訂單明細(xì),這里就不做強(qiáng)分析論證,大家可以按照分析訂單頭的思維模型,進(jìn)行建模;
有關(guān)數(shù)據(jù)部分我們已經(jīng)完成了建模,現(xiàn)在需要的是對邏輯處理部分進(jìn)行建模。對于采購訂單場景,處理上分成三大塊:
- 業(yè)務(wù)的上游轉(zhuǎn)換成采購訂單(單據(jù)流)
- 本身采購訂單業(yè)務(wù)的邏輯處理(數(shù)據(jù)流、邏輯流)
- 采購的下游流轉(zhuǎn)產(chǎn)生的業(yè)務(wù)單據(jù)(單據(jù)流)
業(yè)務(wù)上游和業(yè)務(wù)下游間的數(shù)據(jù)流、業(yè)務(wù)流的轉(zhuǎn)換,是2B業(yè)務(wù)很常見的處理方式。具體由哪些業(yè)務(wù)數(shù)據(jù)和流程實(shí)現(xiàn)他們的轉(zhuǎn)換這是不可控的,在各個企業(yè)、各種業(yè)務(wù)場景上的具體方案都存在或多或少的差異。因此對于產(chǎn)品建模的角度來說,是不能鎖死邏輯的,他們之間的轉(zhuǎn)換邏輯在產(chǎn)品維度是一種松耦合的組合狀態(tài),只有確定具體企業(yè)、場景后才能鎖定具體的數(shù)據(jù)流、業(yè)務(wù)流解決方案;
所以在模型上我們需要可以靈活產(chǎn)生各種上、下游轉(zhuǎn)換的邏輯,和流程鏈路;數(shù)據(jù)轉(zhuǎn)換,其實(shí)有很多方式可以實(shí)現(xiàn),當(dāng)然我認(rèn)為比較“屌”的方式是這樣的:
采用圖形化的方式,對各個字段間的轉(zhuǎn)換采用拉線的方式進(jìn)行匹配轉(zhuǎn)換,而且對每條線上的轉(zhuǎn)換若存在特殊的處理還能寫代碼自定義轉(zhuǎn)化邏輯,當(dāng)然實(shí)際是否能做到這么“屌”我不能確定,但是采用稍微LOW一點(diǎn)的是一定可以的,包括每條轉(zhuǎn)換上都可以寫自定義邏輯。
其二構(gòu)建業(yè)務(wù)處理邏輯,具體的處理邏輯按照我們對當(dāng)前構(gòu)建的業(yè)務(wù)模型,囊括下的業(yè)務(wù)大概有多少種公共處理邏輯,并封裝成一個一個的處理,具體如何處理這里不做細(xì)節(jié)的分析,因每種業(yè)務(wù)模型抽象出來的處理邏輯各不相同,到本采購訂單而言大概如上圖列舉的6種處理,然后就是用代碼一行一行地實(shí)現(xiàn)。
上面闡述了第一種基于代碼模式的建模,下面概述基于PAAS思想的建模;
我這里把計(jì)算機(jī)編程進(jìn)行了4代的劃分:
第一代:面向機(jī)器(匯編語言…)
第二代:面向過程(C語言…)
第三代:面向?qū)ο螅↗AVA…)
第四代:面向應(yīng)用(圖形化編程語言)(低代碼、無代碼)
我這里談的PaaS平臺建模,即基于第四代編程語言,第四代編程語言,將不再是程序員的專業(yè),它將是普通大眾都擁有的技能,就好像20年前使用電腦是一個專業(yè)行為,但是現(xiàn)在使用電腦是一個大眾行為,而用第四代語言編程產(chǎn)生功能應(yīng)用將是一個大眾行為。
我認(rèn)為的大眾行為不是那種隨便在街上拉一個阿貓、阿狗就行的,還是需要有一定專業(yè)底蘊(yùn)的。比如上面提到的企業(yè)語言,將是針對企業(yè)這個群體的特定的編程語言,只要是從事2B領(lǐng)域的不管是誰,都可以用企業(yè)語言進(jìn)行編程,產(chǎn)生屬于自己的應(yīng)用,只是他們產(chǎn)生的應(yīng)用基本是局限在自己所屬的業(yè)務(wù)細(xì)分板塊,比如干財(cái)務(wù)的,肯定無法產(chǎn)生一個好的生產(chǎn)管理板塊的應(yīng)用;采用這里編程語言產(chǎn)生應(yīng)用的前提還是基于自己的專業(yè)基礎(chǔ)底蘊(yùn)的。
這樣的功能應(yīng)用產(chǎn)生平臺可以長得像這個樣子的:
在使用該模式進(jìn)行業(yè)務(wù)建模時首先需要,當(dāng)然還是第一層記錄的小模塊足夠的多,就很容易構(gòu)建起這樣一個應(yīng)用,如下的流程是我認(rèn)為企業(yè)語言的編程平臺的大概操作流程:
具體細(xì)到每個框往下細(xì)分都可以延伸很多內(nèi)容,這里不做過多的闡述,這塊目前我的經(jīng)驗(yàn)還不夠充足,我自己大概實(shí)現(xiàn)這個圖的50%~60%吧,但是具體到每個框我都找到具體的案例,或?qū)崿F(xiàn)模型?,F(xiàn)在需要把這些整合起來形成一套完整的企業(yè)語言開發(fā)工具,當(dāng)然就這一句話,換成實(shí)際可操作、落地的東西我估計(jì)也要好幾年吧。
在第二層我們需要構(gòu)建各種這樣的業(yè)務(wù)模型,當(dāng)然在產(chǎn)品最初我們可以集中構(gòu)建一批這樣的模型,然后在時間軸上隨著接觸到實(shí)際業(yè)務(wù)的增加、積累出更多的各種各樣的業(yè)務(wù)模型,覆蓋更多的解決方案,最終達(dá)到構(gòu)建出2B這個領(lǐng)域的所有業(yè)務(wù)模型。我認(rèn)為即使2B很繁多,但是在這個層級抽象出的業(yè)務(wù)模型,應(yīng)該不超過1千個業(yè)務(wù)模型吧,至少我分析了SAP最經(jīng)典的5大模塊解決方案,按這樣的思維結(jié)構(gòu)對幾大板塊抽象出來的業(yè)務(wù)模型不超過100個!
本文由 @汪仔5908 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)作者許可,禁止轉(zhuǎn)載。
題圖來自 Unsplash,基于 CC0 協(xié)議
- 目前還沒評論,等你發(fā)揮!