- DevOps落地與轉(zhuǎn)型:提升研發(fā)效能的方法與實(shí)踐
- 蔣星辰
- 3247字
- 2023-03-30 22:36:38
1.3 怎么啟動項(xiàng)目
我們將通過項(xiàng)目的形式推動技術(shù)團(tuán)隊(duì)的代碼質(zhì)量提升。
一個(gè)完整的項(xiàng)目管理一般會有立項(xiàng)、啟動、過程跟進(jìn)、結(jié)項(xiàng)以及復(fù)盤等環(huán)節(jié),這里不著重描述。本節(jié)重點(diǎn)看一下啟動項(xiàng)目的一些關(guān)鍵環(huán)節(jié)。
項(xiàng)目啟動是項(xiàng)目管理的核心環(huán)節(jié),關(guān)系著項(xiàng)目價(jià)值能否得到團(tuán)隊(duì)認(rèn)可以及項(xiàng)目能否在團(tuán)隊(duì)內(nèi)順利開展。雖然它一般有固定的模式和方法,但也會因環(huán)境、管理者、參與人不同而不同。
我們的項(xiàng)目啟動策略是通過有趣的手段,讓一線人員積極地參與進(jìn)來,賦能他們解決方法,持續(xù)小批量地解決增量和存量問題。下面通過一些關(guān)鍵活動給大家解釋清楚。
1.3.1 快開始,慢啟動
項(xiàng)目啟動的重點(diǎn)就是讓核心成員(項(xiàng)目干系人)了解項(xiàng)目背景、認(rèn)同項(xiàng)目要解決的問題、了解項(xiàng)目的推進(jìn)策略、掌握項(xiàng)目實(shí)行過程中解決問題的方法、配合項(xiàng)目負(fù)責(zé)人達(dá)成階段性目標(biāo)。
其實(shí),項(xiàng)目啟動還有另外一個(gè)目的,就是讓項(xiàng)目負(fù)責(zé)人能夠得到授權(quán),這就需要請來有“權(quán)力”的人。另外,若想讓核心成員積極參與,可能需要讓參與者嘗到一些“甜頭”,包括精神和物質(zhì)方面。一個(gè)項(xiàng)目的失敗,往往是開頭沒有做好這些,導(dǎo)致管理過程中項(xiàng)目負(fù)責(zé)人被動妥協(xié),目標(biāo)傾斜而失敗。
綜上所述,項(xiàng)目啟動前要邀請有“權(quán)力”的人,整理好項(xiàng)目的背景和現(xiàn)狀,告訴他們最終要達(dá)成的目標(biāo),一起商議好階段性里程碑目標(biāo)和實(shí)施策略,愉快而不失禮貌地將整個(gè)過程節(jié)奏掌控好。這樣項(xiàng)目的啟動就算成功了。
那就啟動唄!
會前,我們準(zhǔn)備了PPT,邀請了CTO和各團(tuán)隊(duì)核心成員,整理了問題和初步的里程碑目標(biāo),申請了項(xiàng)目經(jīng)費(fèi),買了水果拼盤、小零食和礦泉水,通過會議邀請把大家約到了一個(gè)會議室,約定1h內(nèi)結(jié)束。會議分4個(gè)環(huán)節(jié),各環(huán)節(jié)已分配好時(shí)間。
1.3.2 站個(gè)臺,明目標(biāo)
此過程10min以內(nèi),最好5min。主持人的節(jié)奏把控很重要。
邀請CTO的目的很明確,就是讓他強(qiáng)調(diào)為什么技術(shù)團(tuán)隊(duì)要做代碼質(zhì)量提升。會前,我們已經(jīng)給他發(fā)郵件介紹過我們的方案以及要提升的指標(biāo)。會上,他將加工后的想法介紹給大家,重點(diǎn)強(qiáng)調(diào)了項(xiàng)目的階段性目標(biāo),并隱晦地點(diǎn)了幾個(gè)代碼質(zhì)量比較差的團(tuán)隊(duì),以及明確后續(xù)所有團(tuán)隊(duì)需積極配合效能團(tuán)隊(duì)做好代碼質(zhì)量提升。
看形勢差不多了,主持人說道:CTO說得很重要,代碼質(zhì)量是我們程序員的底線,突破底線,豈不是很難堪。非常感謝CTO……(6min拿捏得剛剛好。)編寫代碼雖然是我們最拿手的,但也是我們最容易出錯(cuò)的,接下來我們詳細(xì)討論一下如何提升代碼質(zhì)量,大家可以先吃點(diǎn)水果,都是綠色產(chǎn)品。
順利進(jìn)入下一個(gè)環(huán)節(jié)。
1.3.3 觀現(xiàn)狀,探預(yù)期
此過程約20min,我們主要是觀察現(xiàn)場反應(yīng),試探性地提出技術(shù)中心整體的代碼質(zhì)量問題。
此過程中,我們主要給大家展示技術(shù)團(tuán)隊(duì)代碼質(zhì)量現(xiàn)狀。項(xiàng)目啟動時(shí),我們效能團(tuán)隊(duì)還沒有任何管理平臺,如下指標(biāo)數(shù)據(jù)是通過Sonar平臺匯總得到的。當(dāng)時(shí),技術(shù)團(tuán)隊(duì)的重點(diǎn)項(xiàng)目中大約有3000個(gè)固定的項(xiàng)目分支。
主持人:大家吃好喝好了吧?讓我們一起通過如下3個(gè)核心指標(biāo),分析技術(shù)中心所有Git項(xiàng)目分支的代碼質(zhì)量現(xiàn)狀。
1)項(xiàng)目分支代碼安全性。技術(shù)中心3%的項(xiàng)目分支有嚴(yán)重的安全漏洞問題,而修復(fù)每個(gè)漏洞平均需要4天左右(Sonar平臺評估計(jì)算得出)。
2)項(xiàng)目分支代碼可靠性。技術(shù)中心52%的項(xiàng)目分支存在一般代碼缺陷,11%的項(xiàng)目分支存在嚴(yán)重代碼缺陷,而修復(fù)每一個(gè)缺陷平均耗費(fèi)40min左右,隨著時(shí)間的推移,發(fā)現(xiàn)和修復(fù)這些缺陷的時(shí)間會更長。
3)項(xiàng)目分支單元測試覆蓋率。技術(shù)中心86%的Java項(xiàng)目分支代碼單元測試覆蓋率小于30%,并且有8%的項(xiàng)目分支沒有任何有效的單元測試用例。(單元測試簡稱為“單測”。)
隨后,我們又按照部門維度進(jìn)行了相關(guān)指標(biāo)的分析。
……
大家現(xiàn)場看到這些數(shù)據(jù)還挺震驚的,很多技術(shù)負(fù)責(zé)人都不敢相信這是自己部門的代碼質(zhì)量情況,有些人比較質(zhì)疑指標(biāo)計(jì)算精準(zhǔn)性,有些人不理解指標(biāo)含義,有些人甚至對指標(biāo)的計(jì)算公式提出了挑戰(zhàn)。這些都是我們預(yù)料到的,會前特別準(zhǔn)備了如上指標(biāo)的計(jì)算方法、含義和使用方法。這些聲音很快都被壓下去了。
若有些場景和問題一時(shí)不能應(yīng)對,這句話可以幫你解圍——就算指標(biāo)的計(jì)算不精準(zhǔn)或者指標(biāo)維度不夠豐富,但大家使用的都是同一套指標(biāo);至少從這方面來說,大家都是公平的;更何況大家不是為了計(jì)算的精準(zhǔn)性,而是為了發(fā)現(xiàn)問題,不是嗎?
一定要記住,啟動會不是為了即刻說服大家,目的是讓大家了解我們要干什么,大致如何去做。相信我,一切都會隨著時(shí)勢而變化,并且一定會變。這種代碼質(zhì)量提升方面的項(xiàng)目很容易被叫停,因?yàn)榇a質(zhì)量問題在一段時(shí)間內(nèi)不會嚴(yán)重影響到業(yè)務(wù)。若技術(shù)團(tuán)隊(duì)出現(xiàn)人員調(diào)整、業(yè)務(wù)變動等,第一時(shí)間要暫停的項(xiàng)目可能就是不直接產(chǎn)生業(yè)務(wù)價(jià)值的項(xiàng)目。所以,項(xiàng)目工作要集中進(jìn)行,并且要在一定程度上影響到技術(shù)團(tuán)隊(duì)。
技術(shù)團(tuán)隊(duì)若出現(xiàn)開始關(guān)注代碼質(zhì)量的信號,可能在一定程度上說明業(yè)務(wù)的發(fā)展速度已經(jīng)允許技術(shù)存在短暫的緩歇,進(jìn)一步說明業(yè)務(wù)在一段時(shí)間內(nèi)得到了驗(yàn)證,相對穩(wěn)定。
1.3.4 扣本質(zhì),強(qiáng)烙印
此過程約20min,如上隱晦地說明了技術(shù)團(tuán)隊(duì)研發(fā)人員代碼編寫能力不足的問題,下面強(qiáng)調(diào)一下引起這些問題的根本原因——技術(shù)負(fù)責(zé)人的代碼設(shè)計(jì)能力和評審能力不足。
主持人:剛才的提問引發(fā)了大家深入的思考,我相信大家對這些指標(biāo)反饋出來的問題應(yīng)該有目共睹了。接下來讓我們看看代碼設(shè)計(jì)方面的問題。(這里不再贅述問題的細(xì)節(jié),下文會逐步展開。)
主持人:我們隨機(jī)抽查了技術(shù)中心的10個(gè)項(xiàng)目,涉及所有團(tuán)隊(duì)。通過這些項(xiàng)目發(fā)現(xiàn)了代碼設(shè)計(jì)、代碼框架方面普遍存在一些問題。
1)代碼架構(gòu)擴(kuò)展性差。只要有新需求,開發(fā)人員基本是在原來代碼的基礎(chǔ)上進(jìn)行修改,后續(xù)若需要重構(gòu)此部分業(yè)務(wù)邏輯代碼,就需要回歸整個(gè)流程,比如項(xiàng)目A、B。
2)面向過程編程。很多項(xiàng)目表現(xiàn)出臃腫的Service層,比如項(xiàng)目C、D。
3)代碼命名無規(guī)范。應(yīng)該禁止使用拼音,盡可能體現(xiàn)業(yè)務(wù)含義,比如項(xiàng)目E、D。
4)代碼注釋無規(guī)范。類、方法、變量都要寫注釋,比如項(xiàng)目F、H。
5)代碼日志規(guī)范沒有統(tǒng)一規(guī)范。日志級別亂用,比如項(xiàng)目J、K。
……
隨著主持人的現(xiàn)場展示,現(xiàn)場氣氛漸漸凝重起來。
主持人故意暫停1min,緩解一下大家緊張的心情,隨后又笑著說:這些問題想必各團(tuán)隊(duì)多多少少都會有,還是那句話,重要的是我們要想辦法分階段去解決這些問題。
此時(shí),大部分技術(shù)負(fù)責(zé)人頻頻點(diǎn)頭(意識到了問題嚴(yán)重性),他們是我們的幫手,要重點(diǎn)“協(xié)助”和“扶持”。但還有些技術(shù)負(fù)責(zé)人不在乎,認(rèn)為團(tuán)隊(duì)的核心職責(zé)是面向業(yè)務(wù)交付,面向老板“編程”,配合大家就行。我們后續(xù)要拉攏這些人,要花時(shí)間幫助他們樹立信心。還有些技術(shù)負(fù)責(zé)人看到CTO已經(jīng)走了,開始高談闊論,比如會講一些之前他所在的公司怎么做的,領(lǐng)頭羊互聯(lián)網(wǎng)公司怎么做的。對于這些人,我們后續(xù)盡量爭取,盡量協(xié)助,若確實(shí)搞不定,就交給CTO去解決。
當(dāng)遇到第二類和第三類負(fù)責(zé)人時(shí),我們首先不要回避甚至逃避,更不要放棄他們;其次要去爭取他們團(tuán)隊(duì)下的小組負(fù)責(zé)人和一線研發(fā)人員,通過對一線員工的賦能,一樣可以達(dá)成目標(biāo)。
所以,代碼質(zhì)量提升的手段需要下沉,培養(yǎng)一線研發(fā)人員良好的研發(fā)習(xí)慣才是重點(diǎn)。
主持人:想必大家對代碼質(zhì)量都有了深入的認(rèn)識,接下來我們看一下如何分階段改進(jìn)和提升吧!
此時(shí),主持人將PPT翻向最后一頁,也就是我們整理好的比較粗略的項(xiàng)目里程碑目標(biāo)。
1.3.5 重過程,有效果
此過程約10min,重點(diǎn)要強(qiáng)調(diào)我們啟動項(xiàng)目不只是隨便說說,效能團(tuán)隊(duì)是認(rèn)真的,不只是跟進(jìn)度、做匯報(bào),會告訴大家發(fā)現(xiàn)問題、分析問題以及解決問題的方法,并定期通過度量來幫助大家分析和改進(jìn),同時(shí)會深入具體團(tuán)隊(duì),跟進(jìn)問題的解決情況。
主持人:大家再整體回顧一下這些代碼質(zhì)量問題,我們整理了能反映這些問題的指標(biāo)。
……
主持人:我們根據(jù)技術(shù)團(tuán)隊(duì)的現(xiàn)狀和工作安排,初步梳理了這個(gè)季度的項(xiàng)目里程碑目標(biāo)。
……
主持人:長遠(yuǎn)的項(xiàng)目目標(biāo)和計(jì)劃現(xiàn)在整理出來肯定不太現(xiàn)實(shí),甚至我們覺得上面的里程碑計(jì)劃也會隨著大家的工作調(diào)整而發(fā)生變動。所以,我們先看一下下周大家要一起做的事。
……
這樣,主持人帶著項(xiàng)目核心干系人認(rèn)識到了問題的嚴(yán)重性,初步制定了項(xiàng)目里程碑目標(biāo),詳細(xì)說明了眼前要干的事情。最后,我們制定了溝通機(jī)制(比如,每周一下午2點(diǎn)開周會),并建了一個(gè)信息同步群,后續(xù)演變?yōu)榱舜a質(zhì)量提升委員會的問題協(xié)調(diào)群。代碼質(zhì)量提升項(xiàng)目也算成功啟動了。
- 敏捷軟件開發(fā)(珍藏版)
- 實(shí)戰(zhàn)Java虛擬機(jī):JVM故障診斷與性能優(yōu)化(第2版)
- Cadence系統(tǒng)級封裝設(shè)計(jì):Allegro SiP/APD設(shè)計(jì)指南
- Unity手機(jī)游戲開發(fā):從搭建到發(fā)布上線全流程實(shí)戰(zhàn)
- HTML5游戲編程核心技術(shù)與實(shí)戰(zhàn)
- 鳳凰項(xiàng)目:一個(gè)IT運(yùn)維的傳奇故事
- Spring in Action(第二版)中文版
- 36個(gè)創(chuàng)意電子小制作:安全衛(wèi)士
- 統(tǒng)信UOS應(yīng)用開發(fā)詳解
- Android驅(qū)動開發(fā)與移植實(shí)戰(zhàn)詳解
- 軟件平臺架構(gòu)設(shè)計(jì)與技術(shù)管理之道
- 云計(jì)算360度
- 移動設(shè)計(jì)
- 微信小程序?qū)崙?zhàn)入門(內(nèi)含完整實(shí)例解析)
- 軟件項(xiàng)目管理案例教程(第5版)