如何建立模塊化工具設(shè)計(jì)思維
筆者深入細(xì)節(jié)從多個(gè)角度解析了模塊化設(shè)計(jì)的概念,幫助我們認(rèn)識(shí)、搭建模塊化設(shè)計(jì)思維。
一、什么是模塊化設(shè)計(jì)?
這兩年來(lái),產(chǎn)品模塊化設(shè)計(jì)逐漸受到大家的推崇,那么什么是產(chǎn)品模塊化設(shè)計(jì)呢?
產(chǎn)品模塊化設(shè)計(jì)就是將產(chǎn)品分成幾個(gè)部分,每一部分都具有獨(dú)立功能,具有一致的幾何連接接口和一致的輸入、輸出接口的單元,相同種類的模塊在產(chǎn)品族中可以重用和互換,相關(guān)模塊的排列組合就可以形成最終的產(chǎn)品。
通過(guò)模塊的組合配置,就可以創(chuàng)建不同需求的產(chǎn)品,滿足客戶的定制需求;相似性的重用,可以使整個(gè)產(chǎn)品生命周期中的采購(gòu)、物流、制造和服務(wù)資源簡(jiǎn)化。
模塊化或者說(shuō)接口式開發(fā),讓產(chǎn)品在功能使用過(guò)程中,靈活性更高,下面是我在今年平臺(tái)成長(zhǎng)體系搭建過(guò)程中,進(jìn)行了任務(wù)體系產(chǎn)品設(shè)計(jì)時(shí),運(yùn)用模塊化設(shè)計(jì)思路,將功設(shè)計(jì)成模塊接口形式,提高運(yùn)用效率的過(guò)程。
二、僵硬的功能設(shè)計(jì)思路
今年年初,我開始著手進(jìn)行用戶成長(zhǎng)體系——任務(wù)體系的功能設(shè)計(jì);
在成長(zhǎng)體系的構(gòu)建中,任務(wù)體系是不可缺少的模塊:通過(guò)任務(wù)和獎(jiǎng)勵(lì)的合理刺激,用戶以物質(zhì),榮譽(yù)為目的,在平臺(tái)中不斷貢獻(xiàn)自己的活躍,獲得更高級(jí)的物質(zhì)和榮譽(yù),循環(huán)遞進(jìn),就像《上癮》中說(shuō)到的上癮模型:
上癮模型
任務(wù)體系就是上癮模型中的行動(dòng)創(chuàng)造者,不同的任務(wù)搭配不同層級(jí)的獎(jiǎng)勵(lì),形成多變的酬賞,讓用戶更容易投入到平臺(tái)中。
在一開始接觸這項(xiàng)工作時(shí),我的設(shè)計(jì)思路是:梳理出平臺(tái)所有的任務(wù),將對(duì)應(yīng)的獎(jiǎng)勵(lì)也羅列出來(lái),每一項(xiàng)任務(wù)綁定一個(gè)獎(jiǎng)勵(lì),生成后即永久固定,這樣的設(shè)計(jì)方法在開發(fā)過(guò)程中一步到位,所有的任務(wù)和獎(jiǎng)勵(lì)設(shè)計(jì)好后,不會(huì)再有變化,如下圖所示:
但仔細(xì)想想就會(huì)發(fā)現(xiàn),這樣的設(shè)計(jì)存在著一個(gè)巨大的缺陷:成本計(jì)算,運(yùn)營(yíng)效果預(yù)估,運(yùn)營(yíng)方案等等的準(zhǔn)備工作都需要進(jìn)行先期預(yù)估,才能進(jìn)行開發(fā);
針對(duì)不同運(yùn)營(yíng)時(shí)段,或者不同用戶群體,同一個(gè)任務(wù)可能會(huì)有不同的獎(jiǎng)勵(lì),一旦運(yùn)營(yíng)有新的任務(wù)或新的獎(jiǎng)勵(lì)時(shí),就需要通過(guò)研發(fā)重新進(jìn)行任務(wù)埋點(diǎn)和獎(jiǎng)勵(lì)開發(fā);
結(jié)合上面的條件,可以想見(jiàn),后臺(tái)的功能設(shè)計(jì)和開發(fā)上將會(huì)非常僵硬,無(wú)論是使用還是后續(xù)延展,都會(huì)有很大的難度,這樣的產(chǎn)品開發(fā)方式,也與敏捷開發(fā)模式背道而馳,若在前期沒(méi)有做到完整的梳理和運(yùn)營(yíng)規(guī)劃,將會(huì)對(duì)后續(xù)的產(chǎn)品運(yùn)營(yíng)產(chǎn)生極大的困難。
三、模塊化設(shè)計(jì)思維的轉(zhuǎn)變
在了解到模塊化設(shè)計(jì)方法后,我對(duì)任務(wù)體系的設(shè)計(jì)有了一個(gè)新的想法:將任務(wù)和獎(jiǎng)勵(lì)進(jìn)行分離。
任務(wù)模塊進(jìn)行功能拆解,將用戶屬性,時(shí)間維度,行為等變成可編輯式, 生成后隨時(shí)調(diào)控,靈活運(yùn)營(yíng)。
獎(jiǎng)勵(lì)模塊作為工具化產(chǎn)品開發(fā),以接口形式對(duì)外進(jìn)行組合搭配,不僅僅適用于任務(wù),還可以對(duì)接至活動(dòng),從而實(shí)現(xiàn)一個(gè)模塊多處使用,真正實(shí)現(xiàn)隨時(shí)調(diào)用,隨時(shí)上線。
模塊化設(shè)計(jì)思路
此時(shí),產(chǎn)品開發(fā)前期需要梳理的內(nèi)容就只剩下平臺(tái)行為,其他的工作,例如運(yùn)營(yíng)方案、運(yùn)營(yíng)效果的預(yù)估均可以在開發(fā)過(guò)程中同步完成,而不必占用項(xiàng)目的開發(fā)時(shí)間。
四、數(shù)據(jù)效果
在這樣的設(shè)計(jì)思路下,每一次的運(yùn)營(yíng)活動(dòng)只需要進(jìn)行活動(dòng)邏輯設(shè)計(jì),不再需要重復(fù)進(jìn)行獎(jiǎng)品模塊和任務(wù)模塊的開發(fā)。
同時(shí)運(yùn)用模塊化的思路,每一次的活動(dòng)都做成模版工具,和任務(wù)模塊,獎(jiǎng)勵(lì)模塊做好功能接口對(duì)接,直接調(diào)用,在后續(xù)的運(yùn)營(yíng)過(guò)程中,活動(dòng)的復(fù)用性也得到了保證。
經(jīng)過(guò)這套模塊化工具設(shè)計(jì)方法,活動(dòng)運(yùn)營(yíng)的前置開發(fā)時(shí)長(zhǎng)減少了85%,運(yùn)營(yíng)人員只需要準(zhǔn)備好活動(dòng)方案,就可以在后臺(tái)進(jìn)行活動(dòng)的設(shè)置,獎(jiǎng)品的設(shè)置以及任務(wù)關(guān)聯(lián)。
五、模塊化設(shè)計(jì)思維的好處
也許你會(huì)說(shuō)上面的經(jīng)歷僅僅是某次需求設(shè)計(jì)時(shí)的思路變化,但當(dāng)真正掌握模塊化設(shè)計(jì)思維方式,并應(yīng)用在其他方面時(shí),你就會(huì)發(fā)現(xiàn)模塊化設(shè)計(jì)思維的強(qiáng)大。
1. 輸出的統(tǒng)一性
舉個(gè)例子,當(dāng)有兩個(gè)設(shè)計(jì)師負(fù)責(zé)同個(gè)項(xiàng)目,列表模塊在多個(gè)頁(yè)面都會(huì)出現(xiàn),這時(shí)兩個(gè)設(shè)計(jì)師就會(huì)設(shè)計(jì)出兩個(gè)不同樣式的列表在APP中出現(xiàn),這樣子是極其不合理的。
這個(gè)時(shí)候,采用模塊化設(shè)計(jì)思維,針對(duì)復(fù)用性高的模塊形成設(shè)計(jì)規(guī)范,保證最終成品輸出的統(tǒng)一性,就像微信小程序的設(shè)計(jì)規(guī)范一般:
統(tǒng)一的頁(yè)面體驗(yàn)和有延續(xù)性的界面元素都將幫助用最少的學(xué)習(xí)成本達(dá)成使用目標(biāo),減輕頁(yè)面跳動(dòng)所造成的不適感。
2. 便于維護(hù)
每當(dāng)系統(tǒng)出現(xiàn)bug的時(shí)候,查找問(wèn)題總會(huì)是一個(gè)大難題,錯(cuò)綜復(fù)雜的接口代碼關(guān)系總會(huì)讓錯(cuò)誤查找也變成一個(gè)難題,如上文的例子如采用第一種設(shè)計(jì)思路,功能設(shè)計(jì)的高耦合度會(huì)讓任務(wù)體系出現(xiàn)問(wèn)題時(shí),問(wèn)題查找極其麻煩,無(wú)法定位問(wèn)題究竟是在任務(wù)模塊出現(xiàn)的還是在獎(jiǎng)勵(lì)模塊出現(xiàn)的,只能全部代碼所有流程跑一次。
而當(dāng)你采用模塊化設(shè)計(jì)時(shí),bug的初始就能很快定位是哪個(gè)模塊出現(xiàn)了問(wèn)題,你只需要在對(duì)應(yīng)模塊查找問(wèn)題,將模塊內(nèi)的問(wèn)題解決就可以了;
3. 提高效率
以最近遇到的web端頭部UI修改舉例,前端人員根據(jù)設(shè)計(jì)師重新設(shè)計(jì)好的頁(yè)面頭部進(jìn)行修改時(shí)發(fā)現(xiàn),web端的部分頁(yè)面采用的是同一套js代碼,修改后即可直接替換,而部分頁(yè)面卻是獨(dú)立設(shè)計(jì),無(wú)法進(jìn)行復(fù)用,如果要進(jìn)行頭部修改,只能一個(gè)頁(yè)面一個(gè)頁(yè)面的修改,修改工作繁重。
如果在網(wǎng)站建立的初期,我們就采用模塊化設(shè)計(jì)思路,復(fù)用性高的模塊抽取出來(lái)共用,將來(lái)需要修改時(shí),也只需要修改對(duì)應(yīng)模塊,而不需要每個(gè)使用到的頁(yè)面都進(jìn)行修改。
4. 低耦合高內(nèi)聚的程序思維
在產(chǎn)品功能設(shè)計(jì)的過(guò)程中,我們現(xiàn)在經(jīng)常采用的是敏捷開發(fā),快速迭代的方式。
在這個(gè)過(guò)程中,若設(shè)計(jì)思路不明確,就會(huì)在功能設(shè)計(jì)中出現(xiàn)功能之間交互復(fù)雜,聯(lián)系過(guò)于緊密,開發(fā)的時(shí)候也會(huì)因?yàn)楣δ茉O(shè)計(jì)的缺陷,而造成功能模塊之間耦合性加強(qiáng),即使是敏捷開發(fā),在迭代過(guò)程中也要不斷地為前面的功能進(jìn)行修補(bǔ),對(duì)后續(xù)的功能迭代和拓展造成影響。
當(dāng)采用模塊化設(shè)計(jì)思維時(shí),我們其實(shí)就進(jìn)入了程序開發(fā)中經(jīng)常講到的低耦合高內(nèi)聚設(shè)計(jì)思維
降低模塊間的耦合度能減少模塊間的影響,防止對(duì)某一模塊修改所引起的“牽一發(fā)動(dòng)全身”的水波效應(yīng),保證系統(tǒng)設(shè)計(jì)順利進(jìn)行,使得模塊的可重用性、移植性大大增強(qiáng)。
六、總結(jié)
從上文可以看出,采用模塊化設(shè)計(jì)就像搭建積木一樣,統(tǒng)一的接口輸出規(guī)范,高效的維護(hù)成本,以及與高效程序思維一致的產(chǎn)品設(shè)計(jì)思路,帶來(lái)的是高效率,高復(fù)用性的產(chǎn)品設(shè)計(jì)。
本文由 @DHAllison 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)自 unsplash,基于CC0協(xié)議
2張圖將問(wèn)題和解決方案展示的淋漓盡致,一下子就記住了,筆者棒棒棒。
筆者應(yīng)該是個(gè)資深的程序員