「評(píng)論功能組件化」實(shí)踐分享

5 評(píng)論 6218 瀏覽 41 收藏 17 分鐘

面對(duì)評(píng)論功能組件化,一位中臺(tái)產(chǎn)品經(jīng)理會(huì)怎么做?本文作者作為業(yè)務(wù)向轉(zhuǎn)型中臺(tái)產(chǎn)品經(jīng)理的親歷者,將自己的實(shí)操經(jīng)驗(yàn)與大家一同分享。其中涵蓋:確定核心問(wèn)題,如何抽象產(chǎn)品組件,串聯(lián)概念設(shè)計(jì)轉(zhuǎn)變?yōu)榱鞒淘O(shè)計(jì)等關(guān)鍵步驟,是一篇不可多得的組件化方法論。推薦小伙伴們交流學(xué)習(xí)~

很長(zhǎng)時(shí)間以來(lái),我的工作都是一名偏向業(yè)務(wù)的產(chǎn)品經(jīng)理。我的職責(zé)是幫助對(duì)接的業(yè)務(wù)實(shí)現(xiàn)更好的業(yè)務(wù)增長(zhǎng),這里的增長(zhǎng)不僅包括收入的增長(zhǎng),也包括成本的降低。

但我很少有機(jī)會(huì)去做一名中臺(tái)產(chǎn)品經(jīng)理,以更抽象的視角去規(guī)劃各個(gè)業(yè)務(wù)都會(huì)用到的核心功能。

雖然我一直都明白中臺(tái)產(chǎn)品經(jīng)理的職責(zé)是什么,但沒(méi)有什么機(jī)會(huì)去實(shí)踐。而我相信,一件事情做過(guò)還是沒(méi)有做過(guò),認(rèn)識(shí)是完全不一樣的。

所以去年年底的時(shí)候,老板說(shuō)讓我去負(fù)責(zé)「評(píng)論組件化」這個(gè)項(xiàng)目,我意識(shí)到這是一次實(shí)現(xiàn)自我突破的好機(jī)會(huì)。因?yàn)檫@對(duì)我來(lái)說(shuō)是一次巨大的挑戰(zhàn),我之前從未負(fù)責(zé)過(guò)類似的產(chǎn)品。

現(xiàn)在,三周過(guò)去了,我也從最初毫無(wú)邏輯,到完成了整個(gè)方案的評(píng)審,一路走來(lái)感慨頗多。即驕傲于自己在三周內(nèi)完成了方案的輸出和評(píng)審,也謙卑于對(duì)于未知的世界,站在里面和站在外面,看到的東西有多么的不一樣。

于是決定將這三周的實(shí)操經(jīng)驗(yàn)分享出來(lái),供更多從業(yè)務(wù)走向中臺(tái)的產(chǎn)品經(jīng)理參考。

一、確認(rèn)動(dòng)機(jī)

對(duì)我來(lái)說(shuō),當(dāng)我知道一件事情將要花去我很多的精力時(shí),我一定要搞清楚兩件事:

  1. 這件事為什么要做
  2. 這件事為什么現(xiàn)在就要做

在解釋為什么要做「評(píng)論組件化」這件事之前,我首先想跟大家解釋一下這個(gè)項(xiàng)目是什么。

大家如果玩過(guò)積木就知道,當(dāng)我們想要一個(gè)成型的具體的玩具時(shí),我們可以用積木去拼出來(lái)。對(duì)于積木來(lái)說(shuō),它的生產(chǎn)過(guò)程就只有每一個(gè)碎片,當(dāng)它出廠之后,就不再有生產(chǎn)成本了。購(gòu)買(mǎi)的人想要什么東西,就自己拼就好。

對(duì)于一個(gè)功能也是這樣,它是像積木一樣由已有的模塊拼起來(lái)的,還是說(shuō)是在工廠里從0到1生產(chǎn)出來(lái)的,背后的成本是完全不一樣的。

因?yàn)橐恍v史原因,很長(zhǎng)時(shí)間以來(lái),我們公司的各個(gè)業(yè)務(wù)都是并行發(fā)展的,即便是一些相同的功能,也因?yàn)楦鱾€(gè)業(yè)務(wù)訴求不一樣,最終是由各業(yè)務(wù)的產(chǎn)品經(jīng)理獨(dú)立設(shè)計(jì)。

評(píng)論功能就是這樣。

雖然我們的app主要是一個(gè)聽(tīng)書(shū)產(chǎn)品,但我們還是有多個(gè)獨(dú)立的業(yè)務(wù),并且在當(dāng)前階段都有獨(dú)立的產(chǎn)品模塊。評(píng)論功能就是這些業(yè)務(wù)都具備的一個(gè)功能,但長(zhǎng)期以來(lái)都是獨(dú)立開(kāi)發(fā)的。

于是這就導(dǎo)致幾個(gè)很嚴(yán)重的問(wèn)題:

1. 開(kāi)發(fā)資源的重復(fù)投入

一個(gè)業(yè)務(wù)的評(píng)論功能,并不能立刻在另一個(gè)業(yè)務(wù)上復(fù)用,每做一個(gè)新業(yè)務(wù),都需要從頭開(kāi)發(fā)。有產(chǎn)品經(jīng)理可能會(huì)問(wèn),這有什么難的,你照著其他業(yè)務(wù)的代碼再寫(xiě)一份不就可以了么?

但你要知道,再簡(jiǎn)單的評(píng)論功能也包括底層數(shù)據(jù)、客戶端樣式和管理后臺(tái),即使有代碼可以抄,那開(kāi)發(fā)和測(cè)試的邊際成本也是非常高的,更不用說(shuō)各個(gè)業(yè)務(wù)是否能100%復(fù)制還不一定。

2. 用戶體驗(yàn)不一致

因?yàn)槭仟?dú)立開(kāi)發(fā),每個(gè)產(chǎn)品經(jīng)理都有自己的想法,且一條業(yè)務(wù)的產(chǎn)品經(jīng)理很多時(shí)候還是流動(dòng)的,因此最終呈現(xiàn)出來(lái)的功能有很多細(xì)節(jié)處的細(xì)小差異。

但用戶訪問(wèn)的是同一個(gè)app,有時(shí)候這些細(xì)節(jié)上的差異,會(huì)帶來(lái)體驗(yàn)不一致性,而這個(gè),有時(shí)候會(huì)導(dǎo)致非常糟糕的用戶體驗(yàn)。

3. 信息差導(dǎo)致好的方案不能共享

實(shí)際情況下,很少有業(yè)務(wù)方會(huì)去研究其他業(yè)務(wù)方現(xiàn)在用的比較好的功能有哪些,甚至一個(gè)業(yè)務(wù)方覺(jué)得很稀松平常的功能,在另一個(gè)業(yè)務(wù)方眼里就是特別好的功能。

因此這樣普遍存在的信息差,會(huì)導(dǎo)致即使局部最優(yōu)無(wú)法實(shí)現(xiàn)整體最優(yōu),功能本身積累的勢(shì)能無(wú)法最大程度的釋放出來(lái)。

那為什么要現(xiàn)在做呢?

「功能組件化」這件事是有時(shí)間窗口的,做早了或者做晚了,都不合適。

從樂(lè)高的比喻比喻中你可以想象,如果我要的是一個(gè)「超人」,你給我一堆碎片,讓我自己拼。那么這一定是浪費(fèi)效率的,可能不如給我一個(gè)「超人」來(lái)得快。

所以如果「功能組件化」這件事做早了,那么對(duì)業(yè)務(wù)來(lái)說(shuō)就是「殺雞用了牛刀」,性價(jià)比劃不來(lái)。

但另一方面,如果這件事做晚了會(huì)如何?

從系統(tǒng)角度來(lái)說(shuō),就會(huì)嚴(yán)重增加后續(xù)組件化的成本。因?yàn)槊恳粋€(gè)業(yè)務(wù)都在自己的系統(tǒng)里將同一個(gè)功能做了不同方向的演化,所以后續(xù)要統(tǒng)一管理時(shí),改造難度很大。

就好像城市改造,如果當(dāng)初都是各個(gè)小區(qū)各自規(guī)劃,后續(xù)要拆遷翻新,統(tǒng)一治理時(shí),成本是非常大的。

因此,從時(shí)機(jī)上,組件化這件事是要做的,而且是值得現(xiàn)在就投入精力去做的。

二、核心問(wèn)題是什么

認(rèn)識(shí)到這個(gè)問(wèn)題,我就在想,最核心的問(wèn)題到底是什么。

我們前面說(shuō)到,任何一個(gè)業(yè)務(wù)的評(píng)論功能,基本都具備底層數(shù)據(jù)管理、客戶端樣式和內(nèi)容管理后臺(tái),那最核心的問(wèn)題到底是什么呢。

為此,我去體驗(yàn)了我手機(jī)上所有app的評(píng)論功能,無(wú)論是寫(xiě),還是評(píng)論,還是刪除,我發(fā)現(xiàn)在五花八門(mén)的外表之下,只有一個(gè)點(diǎn)具備了驚人的一致性。

那就是「對(duì)象-評(píng)論-回復(fù)」這三個(gè)角色。

對(duì)象,是指對(duì)什么內(nèi)容所做的評(píng)論;

回復(fù),是指對(duì)其他人貢獻(xiàn)的內(nèi)容所做的回復(fù)。

圍繞評(píng)論,我們一定能抽象出對(duì)象和回復(fù)這兩個(gè)概念,并且這三個(gè)概念在幾乎所有帶評(píng)論功能的產(chǎn)品里都能找到。

所以,我把最核心的問(wèn)題定義為:找到我們自己app里的「對(duì)象-評(píng)論-回復(fù)」分別是什么。

在這個(gè)基礎(chǔ)上,我可以再去定義底層的數(shù)據(jù)結(jié)構(gòu)了,他們呈現(xiàn)出如下的樹(shù)狀結(jié)構(gòu)

這時(shí)候大家就會(huì)發(fā)現(xiàn),如果我把對(duì)象去掉了,那所有的評(píng)論其實(shí)也就沒(méi)有了,同理,如果我把某個(gè)評(píng)論刪除了,它下面的回復(fù)也就沒(méi)有了。

但另一方面,我如果刪除了回復(fù)一,其實(shí)不影響回復(fù)二和其他的回復(fù)。

這個(gè)規(guī)律準(zhǔn)么?大家可以試試發(fā)一條朋友圈,然后評(píng)論,然后刪除;或者發(fā)一條微博,然后評(píng)論、回復(fù)、刪除,你就能發(fā)現(xiàn)規(guī)律了。

順便說(shuō)一句,朋友圈的結(jié)構(gòu)比這個(gè)更簡(jiǎn)單,對(duì)象下面的評(píng)論和回復(fù)都在一級(jí),刪除評(píng)論,對(duì)應(yīng)的回復(fù)也還在??吹竭@里的時(shí)候,我感嘆張小龍?jiān)O(shè)計(jì)結(jié)構(gòu)時(shí)的簡(jiǎn)約。

三、抽象組件

數(shù)據(jù)結(jié)構(gòu)定義好了,接下來(lái)就該去抽象組件了。

在這一步上,我特別感想研發(fā)同學(xué)對(duì)我的幫助。因?yàn)榻M件是一個(gè)技術(shù)語(yǔ)言,只是因?yàn)橐鲞@件事,所以用在了產(chǎn)品上。

但從技術(shù)的角度來(lái)說(shuō),組件又包括功能組件和業(yè)務(wù)組件。他們兩者是完全不同的。

對(duì)于功能組件來(lái)說(shuō),它聚焦于跟功能綁定。

比如文本輸入是一個(gè)功能組件,無(wú)論是評(píng)論功能,還是UGC創(chuàng)作,甚至是社交軟件的聊天功能,凡是需要用戶自己產(chǎn)生內(nèi)容的地方,都會(huì)用到文本輸入。這就是一個(gè)典型的功能組件。

但業(yè)務(wù)組件是跟著業(yè)務(wù)走的,比如下面這張圖。

從抽象的角度來(lái)說(shuō),這張圖代表著展示一個(gè)用戶在什么時(shí)間寫(xiě)了什么內(nèi)容,并且針對(duì)這個(gè)內(nèi)容還打標(biāo)了,還能進(jìn)行一系列操作。

但是,這個(gè)組件設(shè)計(jì)成這樣,它就基本只適合用在評(píng)論功能里,它可以用在不同業(yè)務(wù)的評(píng)論功能里,但你不會(huì)直接用它來(lái)展示一個(gè)社交軟件里用戶曾經(jīng)寫(xiě)過(guò)的話,不會(huì)的。

所以,跟著特定業(yè)務(wù)場(chǎng)景走的組件,叫做業(yè)務(wù)組件。

搞清楚了這個(gè)概念,接下來(lái)我就可以得到有哪些組件了。

四、流程設(shè)計(jì)

到這里,我們只是完成了概念設(shè)計(jì)。

就像拼積木一樣,我們把積木的碎片設(shè)計(jì)好了,但是要怎么搭建,需要用一步步的操作把積木串聯(lián)起來(lái)。因此,在項(xiàng)目方案設(shè)計(jì)中,接下來(lái)最重要的是流程設(shè)計(jì)。

流程設(shè)計(jì)只解決一個(gè)問(wèn)題:一個(gè)業(yè)務(wù)要用你的組件,它該怎么做。

再回到我們的比喻,我們當(dāng)然希望,如果我們需要一個(gè)「超人」,那你給我碎片就好,我手動(dòng)搭建起來(lái)。

但事實(shí)上,如果要實(shí)現(xiàn)100%的無(wú)代碼接入,也就是只需要配置配置就好,完全沒(méi)有任何開(kāi)發(fā)成本,那這樣的設(shè)計(jì)對(duì)于系統(tǒng)本身的開(kāi)發(fā)復(fù)雜度要求非常高。

所以從成本和適用性的角度考慮,低代碼量級(jí)的接入是一個(gè)更合適的選擇。以前需要一周完成的事情,我現(xiàn)在可能只需要4個(gè)小時(shí),那這就是成本的極大節(jié)約。

而對(duì)業(yè)務(wù)接入做管理設(shè)計(jì),則需要做抽象。抽象什么呢?

管理要素。

我們的社會(huì)之所以可以正常運(yùn)轉(zhuǎn),是因?yàn)樵趶?fù)雜的社會(huì)生態(tài)下,有不同的管理單元在運(yùn)行著。比如廳、局、科;比如校、班、組。

合理地劃分管理單元,并分而治之,便是對(duì)業(yè)務(wù)接入做管理設(shè)計(jì)的核心。

我們的評(píng)論功能可以拆分為三個(gè)管理層次:業(yè)務(wù)、應(yīng)用和內(nèi)容。

業(yè)務(wù):所有需要用到評(píng)論功能的業(yè)務(wù)方,可以看作一個(gè)獨(dú)立的業(yè)務(wù)單元。它可能是跟著組織架構(gòu)走的,也可能是跟著產(chǎn)品模塊走的,甚至是一個(gè)活動(dòng)虛擬組織。

只要你覺(jué)得,這個(gè)業(yè)務(wù)后續(xù)需要有一套獨(dú)立的管理權(quán)限和配套設(shè)施(也就是我們的配置能力),那它就可以獨(dú)立成為一個(gè)業(yè)務(wù)。

業(yè)務(wù)是提前定義好的,這就要求產(chǎn)品經(jīng)理在設(shè)計(jì)時(shí)做好溝通,知道現(xiàn)在以及將來(lái),已經(jīng)有并可能有哪些業(yè)務(wù)會(huì)用到你的系統(tǒng)。

應(yīng)用:一個(gè)業(yè)務(wù)使用某個(gè)組件,我叫做一個(gè)應(yīng)用。

比如當(dāng)我接入一個(gè)新業(yè)務(wù)時(shí),我就默認(rèn)給這個(gè)業(yè)務(wù)創(chuàng)建了6個(gè)組件應(yīng)用,每個(gè)組件應(yīng)用可以單獨(dú)配置,他們組合起來(lái),就是這個(gè)業(yè)務(wù)最終在評(píng)論功能上所有的功能特性了。

內(nèi)容:對(duì)評(píng)論組件來(lái)說(shuō),最終的管理顆粒度是要細(xì)化到每條評(píng)論,包括:增、改(改不是改內(nèi)容,而是改屬性,比如打標(biāo))、刪、查、審、導(dǎo)出等。

只有精細(xì)到每一條評(píng)論的管理粒度,才能最大程度上滿足業(yè)務(wù)的訴求。

做完業(yè)務(wù)管理,基本所有結(jié)構(gòu)層面的方案設(shè)計(jì),就全部結(jié)束了。接下來(lái)就是更細(xì)化的展示和體驗(yàn),這個(gè)就靠跟UI的溝通和配合了。

五、總結(jié)

總體來(lái)說(shuō),雖然「評(píng)論組件化」對(duì)我來(lái)說(shuō)是一個(gè)完全陌生的項(xiàng)目,而且面臨著時(shí)間緊、任務(wù)重的巨大挑戰(zhàn),但我還是覺(jué)得有一些方法和新的可以分享給大家,無(wú)論是之后做組件化,還是突然面臨一個(gè)復(fù)雜的系統(tǒng)任務(wù),我覺(jué)得都可以參考:

1)了解why和why now。復(fù)雜的事情,如果需要消耗你巨大的精力,一定要去理解,為什么要做,為什么要現(xiàn)在做,驅(qū)動(dòng)力的問(wèn)題,怎么想都不過(guò)分。

2)通過(guò)大量的觀察和體驗(yàn),找到復(fù)雜多元的外表下,那些核心的不變的要素。跟著那些要素再回過(guò)頭去看產(chǎn)品,如果你可以建立一個(gè)模型,當(dāng)你做任意輸入時(shí),都能預(yù)料到輸出,代表你就徹底掌握了。比如刪除評(píng)論,回復(fù)還在不在。在沒(méi)有研究這個(gè)問(wèn)題時(shí),我很少會(huì)注意到這個(gè)規(guī)律。

3)找到最原始的概念。我們可能會(huì)用到很多抽象的概念,以及基于這些概念衍生出來(lái)的二級(jí)概念,如果我們一開(kāi)始理解的不是最原始的意思,很可能就容易走歪。其實(shí)我一開(kāi)始并沒(méi)有很好的理解功能組件和業(yè)務(wù)組件,直到技術(shù)leader跟我講了一晚上,我才逐漸理解。特別感謝他。

4)確定管理顆粒度。系統(tǒng)一定是有管控單位的,比如課程管控的是節(jié)目,講書(shū)管控的是書(shū)籍,公司管控的是員工,學(xué)校管控的是學(xué)生。找到你的系統(tǒng)的管理粒度,會(huì)讓你在系統(tǒng)設(shè)計(jì)上,跟核心要素產(chǎn)生更好的連接。

#專欄作家#

大力哥呀,微信公眾號(hào):大力哥,人人都是產(chǎn)品經(jīng)理專欄作家。一個(gè)90后產(chǎn)品經(jīng)理,已經(jīng)寫(xiě)了6年的公眾號(hào),通過(guò)輸出獲得了許多意料外的成長(zhǎng)。

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

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

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 學(xué)習(xí)了,作者思路太清晰了

    來(lái)自山東 回復(fù)
  2. 謝謝,文章組織清晰,很有啟發(fā),有些疑問(wèn)想交流下:
    ? 業(yè)務(wù)組件的劃分顆粒度是什么?評(píng)論列表、詳情、分享,寫(xiě)成各個(gè)業(yè)務(wù)組件是否有必要——開(kāi)發(fā)可以按照應(yīng)用的業(yè)務(wù)差異需求寫(xiě)成可擴(kuò)展,例如帶不帶評(píng)論分享,點(diǎn)贊等功能。
    ? 動(dòng)機(jī)第3點(diǎn)沒(méi)有理解(局部?jī)?yōu)勢(shì)最大化),是否是具有業(yè)務(wù)通用性才有價(jià)值?
    ? 業(yè)務(wù)組件不宜早,不宜晚-什么時(shí)候做比較合理呢,能細(xì)講下么。

    來(lái)自廣東 回復(fù)
  3. 看著dp的觸達(dá)體系,突然發(fā)現(xiàn)熟悉的名字,哇哈哈哈~

    來(lái)自陜西 回復(fù)
  4. 學(xué)習(xí)了。

    來(lái)自北京 回復(fù)
  5. 講的很棒

    來(lái)自江蘇 回復(fù)