前面北哥陸續(xù)總結(jié)了程序員成長過程中應(yīng)具備的核心能力,Java程序員的成長之路雾家,架構(gòu)師成長之路躲因,這篇文章分享我曾經(jīng)參與的一個MVP版本產(chǎn)品的研發(fā)交付經(jīng)歷,借此聊聊項目管理的那些事力试。
作為一個程序員,每個人都避免不了參與各種各樣的產(chǎn)品和項目的研發(fā)支撐工作排嫌。在我曾經(jīng)的工作經(jīng)歷中,有一個產(chǎn)品的研發(fā)支撐和交付工作缰犁,至今讓我記憶猶新淳地。
01?背景
產(chǎn)品的背景是,公司已經(jīng)上線了一個垂直行業(yè)的互聯(lián)網(wǎng)產(chǎn)品A帅容,通過解決信息不對稱提升信息傳輸效率颇象,獲取了大量的行業(yè)用戶。但僅僅通過解決信息不對稱并徘,能創(chuàng)造價值和帶來的營收都相對有限遣钳,因此公司決定深度介入到行業(yè)的全流程,打造出一款可以覆蓋用戶需求全流程的產(chǎn)品麦乞,以提升用戶粘性和創(chuàng)造更大價值蕴茴。
產(chǎn)品啟動時劝评,我作為一個資深開發(fā)工程師,剛加入到公司不久倦淀。公司是一家剛成立一年多的創(chuàng)業(yè)公司蒋畜,公司大部分人員都是業(yè)務(wù)人員,技術(shù)團(tuán)隊不超過20人撞叽,大部分都在支撐迭代已上線的產(chǎn)品A姻成。我作為新加入的技術(shù)人員,被任命負(fù)責(zé)這個產(chǎn)品的服務(wù)端開發(fā)工作愿棋,兼整個產(chǎn)品的項目管理負(fù)責(zé)人科展。
02?挑戰(zhàn)
接到這個任務(wù)時,我還從來沒有獨立負(fù)責(zé)過一個產(chǎn)品的項目管理工作糠雨。而當(dāng)時面臨的一些客觀條件才睹,也讓我對這個任務(wù)有些望而卻步。
業(yè)務(wù)知識欠缺:作為一個技術(shù)人員见秤,大部分的經(jīng)歷都是寫代碼自測上線砂竖,很少深入到行業(yè)里面了解業(yè)務(wù)需求和痛點,而這個垂直的業(yè)務(wù)對我來說更是陌生鹃答。
團(tuán)隊人員不完善:在產(chǎn)品啟動時乎澄,相關(guān)的業(yè)務(wù)人員剛剛招聘到位,而項目組的人員除了我作為服務(wù)端人員外测摔,其它人員都還沒有確定置济,包括產(chǎn)品經(jīng)理、測試等專職人員更是欠缺锋八。
技術(shù)體系落后:因為公司還處于創(chuàng)業(yè)階段浙于,投入到技術(shù)研究上的精力較少,大部分技術(shù)還是相對傳統(tǒng)挟纱。在已上線的產(chǎn)品A中羞酗,后端系統(tǒng)采用了單體架構(gòu),隨著產(chǎn)品用戶量的快速上升紊服,系統(tǒng)性能開始劣化檀轨,經(jīng)常在高峰時段出現(xiàn)間歇性宕機問題,因為人員少欺嗤、時間緊参萄、需求多,技術(shù)升級進(jìn)展緩慢煎饼,每次都只能通過升級服務(wù)器配置的方式來解決讹挎。
流程和規(guī)范缺失:作為一家剛成立不久的創(chuàng)業(yè)公司,產(chǎn)品更新快,研發(fā)迭代周期短筒溃,研發(fā)流程隨意性大马篮,可能隨時會因為一個線上bug而臨時改動代碼上線。項目管理流程缺失铡羡,沒有專業(yè)的項目管理工具积蔚,日常信息傳達(dá)基本靠口頭溝通。
產(chǎn)品前景不明:雖然確定了產(chǎn)品大的方向烦周,但具體到產(chǎn)品細(xì)節(jié)尽爆,有哪些業(yè)務(wù)場景,業(yè)務(wù)流程如何流轉(zhuǎn)读慎,如何通過產(chǎn)品化去實現(xiàn)對線下業(yè)務(wù)流程的改造等等還未確定漱贱。而整個產(chǎn)品是否最終能夠成功完成業(yè)務(wù)預(yù)期的目標(biāo),還是可能淪為一次失敗的嘗試夭委,一切都處于未知之中幅狮。
無論是業(yè)務(wù)產(chǎn)品本身,還是團(tuán)隊株灸、技術(shù)體系和流程都存在著不同程度的未知和不確定性崇摄,雖然有著種種顧慮和擔(dān)心,但既來之則安之慌烧,程序員的最大樂趣和價值就是去發(fā)現(xiàn)和解決問題逐抑,與我來說,也算是開啟了一個完整產(chǎn)品的從0到1打造過程的歷程屹蚊。
03?措施
針對前面所述的問題厕氨,在整個產(chǎn)品的項目管理中,我們是這樣做的
梳理業(yè)務(wù)
業(yè)務(wù)需求永遠(yuǎn)是產(chǎn)品落地的首要前提汹粤。
首先命斧,和業(yè)務(wù)團(tuán)隊的專家深入交流。雖然業(yè)務(wù)團(tuán)隊也剛剛組建嘱兼,但好在都是有著行業(yè)內(nèi)數(shù)十年的線下經(jīng)驗国葬,和他們不斷的交流,讓我快速了解了行業(yè)知識和業(yè)務(wù)特點芹壕,搞清楚了業(yè)務(wù)在線下運營過程中的核心流程和關(guān)鍵點胃惜。
其次,參加了業(yè)務(wù)組織的線下訪談哪雕。了解了目標(biāo)用戶的核心需求和痛點,發(fā)掘目標(biāo)用戶的用戶畫像鲫趁,提煉出可以產(chǎn)生用戶價值的需求點斯嚎。
最后,通過線上的用戶調(diào)研問卷,收集一定用戶量下的用戶的相關(guān)選擇堡僻,驗證新產(chǎn)品需求的真實性和使用的意愿度糠惫,對用戶非重點關(guān)注的需求進(jìn)行了精簡。
經(jīng)過一周左右的時間钉疫,大致確定了用戶的核心需求硼讽,把業(yè)務(wù)流程可以線上化的點梳理出來并細(xì)化,形成了一個初步的MRD文檔(業(yè)務(wù)需求說明書)牲阁。
確定目標(biāo)
業(yè)務(wù)需求理清楚后固阁,接下來開始確定目標(biāo)。
產(chǎn)品目標(biāo):考慮到產(chǎn)品是從0到1從頭開始城菊,核心的訴求是優(yōu)先開發(fā)核心流程备燃,快速上線,快速試錯凌唬。因此和業(yè)務(wù)運營人員對業(yè)務(wù)需求進(jìn)行了不斷的精簡并齐,確定了產(chǎn)品的MVP(最小化可行產(chǎn)品)版本功能,并以MVP版本最快速能夠上線為目標(biāo)客税。
運營目標(biāo):根據(jù)確定的MVP版本的產(chǎn)品功能况褪,業(yè)務(wù)運營人員確定了產(chǎn)品上線后的運營目標(biāo),包括一段時間內(nèi)的拉新用戶量更耻、業(yè)務(wù)單量测垛、業(yè)務(wù)GMV等。
研發(fā)目標(biāo):根據(jù)產(chǎn)品的MVP版本功能酥夭,粗略預(yù)估需要的人員和時間赐纱,確定產(chǎn)品上線可使用的大致時間點,以此時間點倒推作為運營熬北、研發(fā)等團(tuán)隊各項工作計劃開展的依據(jù)疙描。
組項目團(tuán)隊
在目標(biāo)確定后,大家開始分頭在各自鄰域讶隐,制定詳細(xì)的目標(biāo)分解計劃起胰,推進(jìn)本領(lǐng)域內(nèi)工作的進(jìn)行。
我作為這個產(chǎn)品的項目管理負(fù)責(zé)人巫延,也開始進(jìn)入到對整個產(chǎn)品的交付實施階段效五。
首要解決的是人的問題。
產(chǎn)品人員:產(chǎn)品需要提供出PRD(產(chǎn)品需求說明書)炉峰,研發(fā)才能夠根據(jù)PRD內(nèi)容進(jìn)行設(shè)計和編碼畏妖。但公司沒有專業(yè)的產(chǎn)品經(jīng)理,找到了公司的一位UED人員(用戶體驗設(shè)計)疼阔,讓他從UE的角度給出產(chǎn)品的原型圖和交互流程圖戒劫,作為產(chǎn)品PRD的基礎(chǔ)半夷。
開發(fā)人員:整個產(chǎn)品在展現(xiàn)層面分App端和網(wǎng)頁后臺,因此需要有Android迅细、iOS巫橄、Web開發(fā)和服務(wù)端開發(fā)各一人。公司的A產(chǎn)品的上線茵典,已經(jīng)儲備了相關(guān)人員湘换,分別借調(diào)了一名Android、iOS统阿、Web開發(fā)人員彩倚。我因為對整個項目了解較深入,同時承擔(dān)了部分需求文檔的編寫砂吞、服務(wù)端的架構(gòu)設(shè)計和編碼工作署恍。最終組成了四人的開發(fā)小組。
測試人員:整個公司只有一名專職的測試人員蜻直,在負(fù)責(zé)產(chǎn)品A的日常迭代測試工作盯质。臨時招人也來不及了,最后定下來概而,在產(chǎn)品上線前組織業(yè)務(wù)運營人員呼巷、公司開發(fā)人員做兩到三輪的全員測試,保障產(chǎn)品質(zhì)量可以按時上線赎瑰。
就這樣把整個產(chǎn)品的項目團(tuán)隊算是組建起來了王悍。
kickoff會議
項目團(tuán)隊組建完成,即召開了kickoff會議(項目啟動會議)餐曼,業(yè)務(wù)人員對整個產(chǎn)品的背景压储、定位、目標(biāo)源譬、長期規(guī)劃做了簡單闡述集惋,并以業(yè)務(wù)專家多年線下業(yè)務(wù)經(jīng)驗,向大家說明了產(chǎn)品上線后所具有的重大意見和價值踩娘,提升了大家對項目前景的信心刮刑。
我作為項目管理負(fù)責(zé)人,把項目的大致需求养渴、項目的組織形式和人員分工雷绢、項目計劃和項目組的同學(xué)做了分享。同時對項目過程中溝通計劃做了規(guī)定理卑,包括項目的例會翘紊、技術(shù)評審、風(fēng)險預(yù)警等等藐唠。
需求評審
kickoff會議完成霞溪,接下來組織項目成員做詳細(xì)的需求評審孵滞。根據(jù)UED同學(xué)產(chǎn)出的原型文檔和交互圖,結(jié)合我對業(yè)務(wù)的理解和補充鸯匹,將產(chǎn)品涉及到的前后端系統(tǒng)流程和需求跟大家做了評審,針對一些遺留的問題泄伪,通過會議紀(jì)要的方式做了記錄殴蓬,會后陸續(xù)和業(yè)務(wù)人員做了確認(rèn)。
定項目計劃
評審?fù)瓿珊篌危_始制定項目的詳細(xì)計劃染厅,包括技術(shù)設(shè)計、框架搭建津函、編碼肖粮、聯(lián)調(diào)測試、上線等各個里程碑節(jié)點的時間尔苦。搭建了項目管理工具涩馆,如wiki、jira等允坚,建立項目組溝通群魂那。跟項目組人員約定按照里程碑時間點交付相關(guān)產(chǎn)物,組織大家每日的站會稠项,溝通項目進(jìn)展涯雅,及時拋出遇到的問題。
設(shè)計展运、開發(fā)與測試
通過對業(yè)務(wù)需求的理解活逆,產(chǎn)出了明確的前后端功能列表。設(shè)計數(shù)據(jù)模型表結(jié)構(gòu)拗胜,并劃分好相關(guān)的子系統(tǒng)和模塊蔗候。
考慮到產(chǎn)品A已經(jīng)遇到的性能問題,對繼續(xù)采用產(chǎn)品A使用的技術(shù)框架有了一定的擔(dān)心挤土,決定構(gòu)建分布式服務(wù)來支撐整個產(chǎn)品琴庵,引入了一些新的框架和中間件,將產(chǎn)品A的技術(shù)架構(gòu)基本摒棄了仰美。而這個決定在事后看來也埋下了一定的隱患迷殿。
同時開始搭建基礎(chǔ)設(shè)施和系統(tǒng)框架,確定開發(fā)的代碼規(guī)范和模板咖杂,一切準(zhǔn)備就緒庆寺,可以進(jìn)入開發(fā)了。
整個開發(fā)過程還算相對順利诉字,項目組人員少懦尝,遇到的問題可以及時溝通解決知纷。
經(jīng)過近一個月的開發(fā)和聯(lián)調(diào),整個產(chǎn)品涉及的系統(tǒng)基本全部開發(fā)完成了陵霉。按照項目的計劃琅轧,開始轉(zhuǎn)入全員的測試階段。
雖然說是測試踊挠,但因為大家都不是專職的測試人員乍桂,缺少了詳細(xì)的測試用例設(shè)計,只能根據(jù)產(chǎn)品的核心流程效床,在系統(tǒng)上進(jìn)行全流程的操作以發(fā)現(xiàn)問題睹酌。
第一輪測試,由項目組的開發(fā)人員承擔(dān)剩檀,大家更多還是站在開發(fā)的角度使用產(chǎn)品發(fā)現(xiàn)問題憋沿,解決一些代碼上的bug。
第二輪測試沪猴,邀請了產(chǎn)品A的相關(guān)開發(fā)人員參與進(jìn)來辐啄,他們站在開發(fā)的角度,以非產(chǎn)品開發(fā)者的身份來體驗產(chǎn)品字币,提出問題则披。
第三輪測試,邀請了業(yè)務(wù)運營人員洗出,讓他們站在用戶的角度使用產(chǎn)品士复,發(fā)現(xiàn)了不少新的問題。
上線發(fā)布
經(jīng)過大家不那么充分的測試翩活,產(chǎn)品即將進(jìn)入到上線階段阱洪。
我們提前制定了上線計劃,將需要上線發(fā)布的內(nèi)容逐一列出菠镇,并對相關(guān)上線依賴做了排序冗荸。因為是產(chǎn)品的首次發(fā)布上線,過程是曲折的利耍,包括一些基礎(chǔ)中間件的搭建蚌本、應(yīng)用服務(wù)器的配置、系統(tǒng)的打包發(fā)布隘梨、App的證書與上架等等程癌,大部分都需要一一確認(rèn),排查解決遇到的各自問題轴猎。好在最后終于在項目計劃上線的時間點嵌莉,按時完成了上線工作。
項目總結(jié)
MVP版本產(chǎn)品上線后不久捻脖,針對產(chǎn)品從開始到上線完成的整個過程中锐峭,做了項目總結(jié)中鼠,得出了一些結(jié)論:
做的好的
上下一心,目標(biāo)確定沿癞,計劃合理援雇,配合順暢
項目過程緊張而不混亂,充分利用了一些項目管理工具椎扬,提升了溝通效率
雖然項目人員配置不全熊杨,但發(fā)揮了全員的力量,互為補位
項目問題和風(fēng)險及時溝通和暴露
做的不好的
產(chǎn)品需求不夠詳細(xì)盗舰,缺乏有效的需求評審。有些需求細(xì)節(jié)在開發(fā)中被陸續(xù)重新拉出來討論桂躏。這也是因為團(tuán)隊人員缺乏專職的產(chǎn)品經(jīng)理短板導(dǎo)致
服務(wù)端架構(gòu)過度設(shè)計钻趋。在MVP版本階段,分布式服務(wù)架構(gòu)并不適合剂习,耗費了較多的精力蛮位,而上線后的用戶量實際并沒有那么大
測試的不夠充分,上線后還是遇到了一些新的問題
04?總結(jié)
回過頭看這個產(chǎn)品的研發(fā)交付之路鳞绕,雖然面臨著一些挑戰(zhàn)失仁,但整個項目并不算是一個大型復(fù)雜的項目。對于我來說们何,也并不僅僅承擔(dān)單純的項目管理工作萄焦,還承擔(dān)了需求分析、服務(wù)端技術(shù)設(shè)計與開發(fā)冤竹、測試甚至部分運維等多個角色工作拂封。其中的一些做法,站在今天從項目管理的角度看鹦蠕,也不見得是合理的冒签,但在當(dāng)時的經(jīng)驗、環(huán)境钟病、背景下萧恕,卻也是我能想到的最好的做法了。
針對項目管理這個課題肠阱,有許多成熟的方法論票唆,無論是PMP課程,還是敏捷開發(fā)相關(guān)內(nèi)容辖所,無不可以讓我們具備更多的理論知識惰说。今天也已經(jīng)有許許多多的工具和軟件可以提供給我們使用。通過這些軟件和工具缘回,可以幫助我們更好的做項目計劃和項目跟蹤吆视,將項目過程中的流程如需求分析典挑、評審、開發(fā)聯(lián)調(diào)啦吧、提測您觉、上線發(fā)布等串聯(lián)起來,對項目的過程數(shù)據(jù)如會議紀(jì)要授滓、bug琳水、總結(jié)文檔等進(jìn)行有效管理,輔助我們把項目梳理好管控好般堆。
項目管理涉及到人在孝、資源、組織淮摔、進(jìn)度私沮、協(xié)調(diào)等方方面面,除了這些理論的方法和橙、流程和工具的使用仔燕,我們真正在項目中,會遇到各種各樣新的挑戰(zhàn)魔招,如跨團(tuán)隊跨地域的溝通和協(xié)調(diào)晰搀,資源的不足,時間的沖突等等办斑,這實際意味著外恕,更重要的是人在其中發(fā)揮的作用,通過人的各種行為去影響他人俄周,進(jìn)而讓項目處于可控狀態(tài)吁讨,而這正是項目管理的意義所在。
今天的分享峦朗,也是希望能夠讓大家有所啟發(fā)建丧,去思考如果是自己承擔(dān)一個項目管理工作,你會關(guān)注哪些方面波势,可能會忽視那些方面翎朱,是否已經(jīng)有了一套自己的方法。
從這個項目之后尺铣,我也陸續(xù)承擔(dān)了多個項目的項目管理工作拴曲,參與了幾個產(chǎn)品的從0到1的孵化過程,正是經(jīng)過這些項目和產(chǎn)品的不斷歷練凛忿,讓我能夠站在更高的角度去思考澈灼,作為一個程序員除了編碼之外,需要關(guān)注和學(xué)習(xí)的更多領(lǐng)域。
相關(guān)閱讀