在阿里當(dāng)PM都需要做什么?
掃描二維碼
隨時(shí)隨地手機(jī)看文章
作者 |?Bella醬
有人說(shuō)“一起在湖邊吹過(guò)晚風(fēng)的人,會(huì)記得更久一些吧”,那一起住過(guò)院的人,是不是可以刻骨銘心了?之前就想寫(xiě)篇文章總結(jié)一下自己前段時(shí)間當(dāng)PM的經(jīng)歷呢,奈何發(fā)布了這個(gè)需求,還有另外一個(gè)需求要發(fā)布,周末稍微有點(diǎn)時(shí)間了,又想睡覺(jué)續(xù)命,我的懶癌就又犯了:(哇哇,我也只是個(gè)孩子呀,咳咳,阿姨言歸正傳,所以所以,一拖再拖,直到在醫(yī)院的這幾天。
每一個(gè)項(xiàng)目做完,或者跳出了一個(gè)舒適區(qū),還是要自我總結(jié)復(fù)盤(pán)下的,不是么?一來(lái)以一個(gè)局外人的身份,系統(tǒng)地看待下自己所做的這個(gè)事情,二則為自己以后回顧這段時(shí)光提供一些素材,不然,說(shuō)不定以后自己會(huì)忘記呢~
以下來(lái)源于Bella醬在阿里當(dāng)PM的經(jīng)歷的總結(jié),如有不當(dāng),歡迎批評(píng)指正~
1.項(xiàng)目立項(xiàng)
做一個(gè)項(xiàng)目之前,你要清楚為何要做這個(gè)項(xiàng)目,這個(gè)項(xiàng)目的價(jià)值和意義在哪里?如果是現(xiàn)有版本的大升級(jí),那你還需要清晰的知道目前版本存在哪些問(wèn)題,痛點(diǎn)是什么,擴(kuò)展性如何,可維護(hù)性如何等等。同時(shí)還要確定升級(jí)后的版本的目標(biāo),只有目標(biāo)確定了,后面技術(shù)方案選型的時(shí)候,你才會(huì)知道應(yīng)該選取哪種技術(shù)方案,因?yàn)槟氵x的技術(shù)方案,要能足夠?qū)崿F(xiàn)你的目標(biāo)。
對(duì)于中臺(tái)項(xiàng)目而言,還要考慮2個(gè)問(wèn)題,即兼容性和差異性。所謂的兼容性,即指升級(jí)后的版本是否可以無(wú)縫兼容新接入一個(gè)行業(yè)?接入成本有多高?是否可以把一部分接入工作交由產(chǎn)品 or 運(yùn)營(yíng)同學(xué)來(lái)做,解放一部分技術(shù)同學(xué)勞動(dòng)力?所謂差異性,即指升級(jí)后的版本是否可以支持不同行業(yè)間存在的差異,是否可以做到相互隔離,互不影響。
一般情況下,我會(huì)選擇用思維導(dǎo)圖來(lái)表達(dá)這些信息,圖往往會(huì)比文字更簡(jiǎn)明直觀一些,TL們的接受度也更高一些。
2.技術(shù)預(yù)研
這一階段的主要目的就是基于上一階段確定的目標(biāo),調(diào)研哪些技術(shù)可以支撐你實(shí)現(xiàn)這個(gè)目標(biāo),這些技術(shù)理論上的可行能否最準(zhǔn)轉(zhuǎn)變?yōu)槁涞厣系目尚?,可以拿?dāng)前業(yè)務(wù)場(chǎng)景以及數(shù)據(jù)做一個(gè)推演,數(shù)據(jù)推演ok之后,可以再做一個(gè)小的可以運(yùn)行的demo,以證明該技術(shù)真正可以用在此項(xiàng)目中。
此階段需要產(chǎn)出各個(gè)技術(shù)選型的數(shù)據(jù)推演圖,如果推演過(guò)程比較復(fù)雜的話,也可以考慮再產(chǎn)出一份比較詳細(xì)的Excel樣式的數(shù)據(jù)推演圖,每一個(gè)步驟數(shù)據(jù)如何變化都要體現(xiàn)出來(lái)。另外,還需要產(chǎn)出各個(gè)技術(shù)選型可運(yùn)行的demo。最后,需要產(chǎn)出各種技術(shù)選型的對(duì)比,表格形式或思維導(dǎo)圖形式都可以,切忌純文字?;谏鲜鰧?duì)比,確定最終的技術(shù)選型,然后就可以開(kāi)始技術(shù)方案的編寫(xiě)啦~
3.技術(shù)方案編寫(xiě)
私以為技術(shù)方案應(yīng)該包含以下幾部分,業(yè)務(wù)背景、場(chǎng)景分析、系統(tǒng)架構(gòu)、應(yīng)用架構(gòu)、系統(tǒng)流程圖、領(lǐng)域模型設(shè)計(jì)、存儲(chǔ)模型設(shè)計(jì)、全局可用定義、功能模塊設(shè)計(jì)、接口定義、項(xiàng)目里程碑等等,如果是需要出海的項(xiàng)目,還需要考慮下本地化方式、時(shí)區(qū)偏移、部署方式等等。
3.1 業(yè)務(wù)背景
業(yè)務(wù)背景主要是交代下做這個(gè)項(xiàng)目的背景,即為什么要做這個(gè)項(xiàng)目,基于一個(gè)什么樣的業(yè)務(wù)背景,也可以把【1.項(xiàng)目立項(xiàng)】中畫(huà)的思維導(dǎo)圖直接放在這一pa。
3.2 場(chǎng)景分析
場(chǎng)景分析則主要是講這個(gè)系統(tǒng)有哪些應(yīng)用場(chǎng)景,如果能夠列舉出業(yè)務(wù)方的真實(shí)訴求,那是最好不過(guò)了。然而大多數(shù)程序員的生活,并不會(huì)直接對(duì)接業(yè)務(wù)方同學(xué),而是對(duì)接產(chǎn)品經(jīng)理。
3.3 系統(tǒng)架構(gòu)
系統(tǒng)架構(gòu)推薦以圖的方式來(lái)展示。開(kāi)局一張圖,剩下全靠講,也不是不可以哈。Bella醬就有過(guò)這種經(jīng)歷,開(kāi)局我放了一張圖,然后看著大佬們講了3個(gè)多小時(shí)。佩服佩服,那次經(jīng)歷也讓我懂得,表達(dá)方式是何等重要。一般情況下我會(huì)這么畫(huà)系統(tǒng)架構(gòu)圖,主要側(cè)重于表達(dá)用了哪些中間件、什么數(shù)據(jù)源、什么應(yīng)用、開(kāi)放什么SPI、以及這其中各組件之間是如何交互的,最終可以支撐哪些業(yè)務(wù)。
3.4 應(yīng)用架構(gòu)
應(yīng)用架構(gòu)仍然推薦圖的方式來(lái)表達(dá)。我一般這么畫(huà)應(yīng)用架構(gòu)圖,主要側(cè)重于表達(dá)應(yīng)用由哪些模塊組成,每個(gè)模塊包含哪些功能,各模塊之間的層次關(guān)系,哪些應(yīng)用包含哪些模塊。另外,這張圖中也是可以把用了哪些中間件、什么數(shù)據(jù)源,支持哪些業(yè)務(wù)場(chǎng)景畫(huà)上的,這樣這張圖會(huì)更完整一些,即使不看系統(tǒng)架構(gòu)圖,單單看這一張圖,也是可以明白整個(gè)項(xiàng)目的設(shè)計(jì)的。
3.5 系統(tǒng)流程圖
系統(tǒng)流程圖以流程圖為主,可以輔以文字說(shuō)明,或者表格說(shuō)明,由于這個(gè)和業(yè)務(wù)邏輯緊密相關(guān),此處不再舉例。
3.6 領(lǐng)域模型設(shè)計(jì)
領(lǐng)域模型設(shè)計(jì),這一階段是非常有必要的,先確定領(lǐng)域模型,后再根據(jù)領(lǐng)域模型確定存儲(chǔ)模型,并非所有的領(lǐng)域模型都要轉(zhuǎn)換為存儲(chǔ)模型,從而保存到數(shù)據(jù)庫(kù)中。領(lǐng)域模型設(shè)計(jì)過(guò)程中,要十分清楚系統(tǒng)整體流程圖,可以結(jié)合上個(gè)階段的系統(tǒng)流程圖,來(lái)推演一下,根據(jù)這些領(lǐng)域模型是否可以推演出系統(tǒng)的正常正確運(yùn)行。圖為主,輔以必要的文字說(shuō)明此領(lǐng)域模型設(shè)計(jì)如何讓系統(tǒng)運(yùn)行即可。
3.7 存儲(chǔ)模型設(shè)計(jì)
存儲(chǔ)模型設(shè)計(jì),需要詳細(xì)到表中每個(gè)字段的設(shè)計(jì),字段類(lèi)型、是否為主鍵、是否需要建索引、是否可為空、是否為分表字段等等。表結(jié)構(gòu)設(shè)計(jì)表格展示即可。存儲(chǔ)模型設(shè)計(jì),還是建議圖片的形式表達(dá),方便展示各表之間的關(guān)系。
3.8 全局可用定義
全局可用定義,主要定義一些通用的方法、枚舉類(lèi)、共同的約定等,以避免各個(gè)應(yīng)用or各開(kāi)發(fā)人員定義一套自己的方法、枚舉等,以確保同一個(gè)字段or同一個(gè)方法等在系統(tǒng)內(nèi)唯一。
3.9 功能模塊設(shè)計(jì)
功能模塊設(shè)計(jì),即各模塊的詳細(xì)設(shè)計(jì),這里應(yīng)該盡可能詳細(xì),可以舉一些例子,確保負(fù)責(zé)此模塊開(kāi)發(fā)的同學(xué)看文檔即可明白要做什么,以及如何做。必要的話,可以各模塊再出一個(gè)詳細(xì)的技術(shù)方案。
3.10 接口定義
接口定義,吶,不多做解釋?zhuān)浀脤?xiě)清楚入?yún)?、出參、接口名字,入?yún)⒑统鰠⒂浀糜米远x類(lèi)來(lái)接收,不要忘記實(shí)現(xiàn)序列化喲~
BaseResult、isSuccess、getData、getErrorMessage、buildErrorResponse、buildSuccessResp這些基礎(chǔ)的類(lèi)和方法也不要忘記呀!
3.11 項(xiàng)目里程碑
項(xiàng)目里程碑,即項(xiàng)目的時(shí)間節(jié)奏,例如開(kāi)發(fā)時(shí)間、聯(lián)調(diào)時(shí)間、提測(cè)時(shí)間、發(fā)布時(shí)間等,此時(shí)也應(yīng)該確定各種資源了,確保相關(guān)同學(xué)可以在你計(jì)劃的時(shí)間范圍內(nèi)投入項(xiàng)目中。
3.12 其他
如果你的項(xiàng)目需要出海,那你還需要考慮系統(tǒng)的部署方式、本地化、時(shí)區(qū)偏移、系統(tǒng)所需中間件是否支持等等。
4.項(xiàng)目過(guò)程把控
只有好的方案,項(xiàng)目過(guò)程把控不到位,最終也是無(wú)法交付一個(gè)令人滿意的產(chǎn)品的。那如何才能使項(xiàng)目按照既定計(jì)劃有序進(jìn)行,同時(shí)又能保證交付的質(zhì)量呢?
作為一個(gè)項(xiàng)目的owner,你需要做:
-
技術(shù)方案要切實(shí)可行 -
明確整個(gè)項(xiàng)目的時(shí)間節(jié)奏,每個(gè)階段應(yīng)該交付什么可衡量的結(jié)果,每個(gè)階段之間的關(guān)聯(lián)性,不能按時(shí)交付的影響 -
明確每個(gè)人所做的事情,每個(gè)事情需要做多久,交付結(jié)果是什么 -
是否可階段性提測(cè),階段性驗(yàn)證 -
識(shí)別項(xiàng)目中存在的風(fēng)險(xiǎn),風(fēng)險(xiǎn)是否可控 -
大促封網(wǎng),和上下游依賴(lài)這些因素也要考慮 -
測(cè)試人員等相關(guān)人員需要提前鎖定
具體到action上面,則可以考慮下下面這些:
-
日會(huì)了解每個(gè)人的進(jìn)度、風(fēng)險(xiǎn)點(diǎn)、需要協(xié)助的點(diǎn)等 -
各個(gè)階段的可運(yùn)行單測(cè)是必須的 -
定期review代碼(例如一周一次),check真實(shí)進(jìn)度,owner或owner&相應(yīng)開(kāi)發(fā)人員參加即可 -
制定開(kāi)發(fā)規(guī)范,保證代碼風(fēng)格統(tǒng)一 -
功能拆分盡可能細(xì),一個(gè)功能點(diǎn)最好不要超過(guò)5天,盡量控制在3天之內(nèi) -
開(kāi)發(fā)整體自測(cè)ok之后,對(duì)項(xiàng)目進(jìn)行整體code review,同時(shí)提測(cè) -
code review之后修改的代碼,全部修改完畢之后,要進(jìn)行整體的回歸測(cè)試,回歸測(cè)試期間除bug問(wèn)題,不允許再修改代碼 -
發(fā)布避開(kāi)大促封網(wǎng),發(fā)布之前確定依賴(lài)方發(fā)布時(shí)間點(diǎn),看下發(fā)布順序有木有要求
其中,應(yīng)重點(diǎn)關(guān)注項(xiàng)目中的風(fēng)險(xiǎn),無(wú)論是何種原因,自己可控or不可控因素造成的,現(xiàn)狀偏離計(jì)劃的事情,都屬于項(xiàng)目風(fēng)險(xiǎn),應(yīng)盡早拋出來(lái),而且應(yīng)盡可能保證你希望看到這一風(fēng)險(xiǎn)的人看到。其次,風(fēng)險(xiǎn)不是拋出來(lái)就完事了,還要考慮下是否可以cover掉這一風(fēng)險(xiǎn),是否需要其他人協(xié)助,需要的話,也應(yīng)盡早提出來(lái)。最后,盡可能多給測(cè)試留一些時(shí)間,你永遠(yuǎn)不知道測(cè)試過(guò)程中會(huì)發(fā)現(xiàn)什么問(wèn)題。
5.交付清單
交付清單的意義不僅僅在于給到產(chǎn)品同學(xué),讓他check他所提的需求我們已實(shí)現(xiàn),還在于我們自身對(duì)這個(gè)項(xiàng)目的一個(gè)回顧,另外,交付清單也可以給到測(cè)試同學(xué)一個(gè)最強(qiáng)王者輔助的作用,測(cè)試人員對(duì)比交付清單即可知道本次項(xiàng)目的所有功能,方便他們測(cè)試。所以,交付清單應(yīng)盡可能詳細(xì),和TC 不沖突哦~
推薦思維導(dǎo)圖+Excel+文字的形式展現(xiàn)。
6.發(fā)布前準(zhǔn)備
主要是一些資源準(zhǔn)備,例如線上服務(wù)器、線上DB、線上mq等等各種中間件及資源的準(zhǔn)備。
其次,將項(xiàng)目中用到的SNAPSHOT 版本二方包替換為正式版二方包,替換完,記得再回歸測(cè)試一下。
另外,還需要確定依賴(lài)的上下游的發(fā)布時(shí)間,如果此次發(fā)布依賴(lài)上下游的發(fā)布時(shí)間,需要和他們協(xié)商好具體的發(fā)布時(shí)間,確定到幾點(diǎn),以方便我們到點(diǎn)check他們是否發(fā)布,以決定我們是否可以發(fā)布。
咳咳,發(fā)布前也可以寫(xiě)一些工具,假如線上數(shù)據(jù)出現(xiàn)問(wèn)題,可以通過(guò)這些工具修復(fù)數(shù)據(jù)。一名合格的數(shù)據(jù)衛(wèi)士不應(yīng)該直接訂db,而應(yīng)該通過(guò)工具來(lái)修復(fù)。項(xiàng)目上線,相應(yīng)的工具也同步上線。
7.發(fā)布
發(fā)布過(guò)程中,需要看各種監(jiān)控,確保此次發(fā)布沒(méi)有問(wèn)題,才能繼續(xù)大范圍發(fā)布。
發(fā)布完成,還應(yīng)該有線上測(cè)試環(huán)節(jié),以check線上功能可用。
同時(shí),需要跟進(jìn)幾天線上監(jiān)控、報(bào)警、日志等,確保沒(méi)有問(wèn)題后,才算此次發(fā)布順利完成。
8.復(fù)盤(pán)
個(gè)人的復(fù)盤(pán)是必須的,原因我就不多說(shuō)了。這里的復(fù)盤(pán)指的不是你對(duì)外分享/宣講等等的復(fù)盤(pán),而是對(duì)你內(nèi)心那個(gè)真實(shí)的自己來(lái)講的復(fù)盤(pán),在這個(gè)項(xiàng)目中自己究竟有沒(méi)有成長(zhǎng),成長(zhǎng)了哪些,哪些地方做的好,哪些地方做的不好,不好的地方下次可不可以避免or解決,這個(gè)項(xiàng)目有沒(méi)有偏離你的初衷等等。
特別推薦一個(gè)分享架構(gòu)+算法的優(yōu)質(zhì)內(nèi)容,還沒(méi)關(guān)注的小伙伴,可以長(zhǎng)按關(guān)注一下:
長(zhǎng)按訂閱更多精彩▼
如有收獲,點(diǎn)個(gè)在看,誠(chéng)摯感謝
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!