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