針對(duì)這個(gè)痛點(diǎn),阿里高級(jí)技術(shù)專家張建飛提出了自己的解決思路已脓,希望能與大家一起探討珊楼、交流。
為什么需要技術(shù) KPI度液?
在業(yè)務(wù)技術(shù)團(tuán)隊(duì)厕宗,有一個(gè)不好的趨勢(shì)就是團(tuán)隊(duì)越來越業(yè)務(wù),越來越?jīng)]有技術(shù)味道堕担。
每個(gè)人都在談業(yè)務(wù)已慢,技術(shù)大會(huì)上在談業(yè)務(wù),周會(huì)上在聊業(yè)務(wù)......
唯獨(dú)少被談及的是技術(shù)本身霹购。此處并不是說業(yè)務(wù)不重要佑惠,而是說理解業(yè)務(wù)和把控業(yè)務(wù)需求是技術(shù)人員的 base,而不是全部。
將就的代價(jià)
這種技術(shù)味道的缺失對(duì)技術(shù)團(tuán)隊(duì)來說是非衬た可惜的旭咽,也不利于技術(shù)人員的成長(zhǎng)和發(fā)展。
因?yàn)楹茈y想象一個(gè)沒有技術(shù)追求的團(tuán)隊(duì)能開發(fā)出一個(gè)健壯的把将、可維護(hù)性好轻专、可擴(kuò)展性好的系統(tǒng)。
相反察蹲,這種業(yè)務(wù)代碼的堆砌请垛,從短期看也許是“較快”實(shí)現(xiàn)了業(yè)務(wù)需求,但是從長(zhǎng)遠(yuǎn)來看洽议,這種爛系統(tǒng)的增加會(huì)極大的阻礙業(yè)務(wù)的發(fā)展宗收,形成一個(gè)個(gè)的黑洞應(yīng)用,而工程師被裹挾在業(yè)務(wù)需求和爛系統(tǒng)之間亚兄,疲于應(yīng)對(duì)混稽,心力交瘁。
這種將就將導(dǎo)致系統(tǒng)腐化审胚,技術(shù)債越壘越高匈勋,像腫瘤一樣消耗你所有的能量。
所以膳叨,在不影響業(yè)務(wù)的情況下(特別是相對(duì)穩(wěn)定的業(yè)務(wù))洽洁,Tech Story 應(yīng)該和 User Story 有同等的重要性,要把重構(gòu)優(yōu)化提到和業(yè)務(wù)需求相等的優(yōu)先級(jí)去處理菲嘴。
我們不僅要對(duì)業(yè)務(wù)需求負(fù)責(zé)饿自,我們更要對(duì)應(yīng)用的質(zhì)量,系統(tǒng)的可維護(hù)性負(fù)責(zé)龄坪。
因?yàn)槲覀兗夹g(shù)人員是應(yīng)用的父母(有些是親生父母昭雌,有些是養(yǎng)父母),你不照顧它們健田,不治理它們烛卧,它們就會(huì)生病,你忍心看到這樣的局面嗎抄课?
技術(shù)管理者者(TL)的失職
造成這種局面唱星,我們的技術(shù)管理者,我們的 TL 要負(fù)有主要責(zé)任跟磨。如果一個(gè) TL 從來不關(guān)注系統(tǒng)架構(gòu)和設(shè)計(jì)间聊,對(duì)技術(shù)沒有熱情也不學(xué)習(xí),甚至其本身技術(shù)就很爛抵拘。那么在這個(gè) TL 領(lǐng)導(dǎo)下的技術(shù)團(tuán)隊(duì)哎榴,又怎么會(huì)有技術(shù)味道,團(tuán)隊(duì)成員又怎么能進(jìn)步和成長(zhǎng)?
TL需要真正深入到系統(tǒng)里面尚蝌,深入到代碼迎变,給團(tuán)隊(duì)帶來實(shí)實(shí)在在的技術(shù)改變。
技術(shù) KPI 的量化
提升技術(shù)氛圍飘言,打造工程師文化不能僅停留在口頭上衣形,可搭配一定的強(qiáng)制手段,比如和技術(shù)人員的利益綁定姿鸿。這種綁定就需要我們能對(duì)技術(shù)貢獻(xiàn)進(jìn)行一個(gè)相對(duì)公平的分解和量化谆吴。
技術(shù) KPI
基于此,我們將技術(shù)人員的 KPI 分解為業(yè)務(wù)貢獻(xiàn)苛预、技術(shù)貢獻(xiàn)和團(tuán)隊(duì)貢獻(xiàn)三個(gè)大的部分句狼。
其詳細(xì)內(nèi)容如下:
業(yè)務(wù)貢獻(xiàn):包括需求把控,業(yè)務(wù)項(xiàng)目和業(yè)務(wù)創(chuàng)新热某。
技術(shù)貢獻(xiàn):包括設(shè)計(jì)重構(gòu)腻菇、技術(shù)影響力、Code Review昔馋、創(chuàng)新提效和代碼質(zhì)量筹吐。
團(tuán)隊(duì)貢獻(xiàn):包括人員培養(yǎng)和團(tuán)隊(duì)氛圍。
那么技術(shù)貢獻(xiàn)中的這幾個(gè)維度要怎么理解呢秘遏,用我們工作中的一些案例來描述一下吧骏令。
應(yīng)用質(zhì)量:
你負(fù)責(zé)或者共同負(fù)責(zé)的應(yīng)用質(zhì)量分(可以從代碼重復(fù)率,圈復(fù)雜度垄提,分層合理性等維度考察)。
你做了哪些提升應(yīng)用質(zhì)量分的工作周拐。
設(shè)計(jì)重構(gòu):
我在客戶通項(xiàng)目中铡俐,對(duì) CRM 銷售域進(jìn)行了領(lǐng)域建模和設(shè)計(jì),并且抽象合理妥粟。
我發(fā)現(xiàn) Infrastructure 中 package 分類不合理审丘,進(jìn)行了重新設(shè)計(jì)并重構(gòu)完成。
我發(fā)現(xiàn)現(xiàn)在系統(tǒng)中錯(cuò)誤碼比較混亂勾给,我梳理制定了新的錯(cuò)誤碼規(guī)范滩报,并完成了代碼重構(gòu)。
技術(shù)影響力:
在團(tuán)隊(duì)內(nèi)分享干貨播急,進(jìn)行技術(shù)培訓(xùn)脓钾。
團(tuán)隊(duì)分享策略模式,得到同學(xué)好評(píng) 桩警。
解決技術(shù)問題可训,正確的技術(shù)決策能力。
Code Review:
我在 Review 某某代碼的時(shí)候發(fā)現(xiàn),可能存在線程不安全的隱患握截。
我在 Review 某某代碼的時(shí)候發(fā)現(xiàn)飞崖,存在設(shè)計(jì)不合理的現(xiàn)象,此處使用責(zé)任鏈可以很優(yōu)雅的解決問題谨胞,并具備一定的擴(kuò)展性固歪。
創(chuàng)新提效:
我發(fā)現(xiàn)本地測(cè)試啟動(dòng) Pandora Boot 比較浪費(fèi)時(shí)間,所以寫了一個(gè) TestContainer 大大提升了自測(cè)效率胯努。
我發(fā)現(xiàn)有一些 boilerplate 代碼不需要寫牢裳,所以對(duì)樂觀鎖、分頁進(jìn)行了 annotation 支持康聂,簡(jiǎn)化了代碼贰健。
在某個(gè)項(xiàng)目或者技術(shù)點(diǎn)上面,我產(chǎn)出了一篇專利:基于領(lǐng)域模型的業(yè)務(wù)配置化恬汁。
代碼質(zhì)量:
提測(cè)后的 Bug 數(shù)伶椿,線上故障數(shù)(系統(tǒng)可以提取,不用自己填寫)
我完善了某某模塊的單元測(cè)試,并多次在自動(dòng)化回歸中發(fā)現(xiàn)問題。
KPI 答疑
對(duì)于上面的 KPI 大部分的技術(shù)同學(xué)是表示認(rèn)可的茧妒,當(dāng)然質(zhì)疑的聲音也很多谣膳,我這里挑一些典型的回答一下。
Q:技術(shù) KPI 的提出决左,會(huì)不會(huì)導(dǎo)致技術(shù)同學(xué)只關(guān)注技術(shù)不關(guān)注業(yè)務(wù)了?
A:關(guān)于績(jī)效,肯定是綜合看業(yè)務(wù)貢獻(xiàn)踩麦,技術(shù)貢獻(xiàn)和團(tuán)隊(duì)貢獻(xiàn)。但是作為一個(gè)重要參考和風(fēng)向標(biāo)氓癌,技術(shù) KPI 是有積極意義的谓谦。
Q: 你這個(gè)設(shè)計(jì)重構(gòu)怎么量化?
A:這個(gè)很難用系統(tǒng)標(biāo)準(zhǔn)化贪婉,更多的還是要依賴 TL 的專業(yè)能力進(jìn)行評(píng)分反粥,但即使是這樣,也比以前什么都沒有完全黑盒要強(qiáng)疲迂。至少在傳達(dá)一個(gè)信息才顿,我們鼓勵(lì)好的設(shè)計(jì),鼓勵(lì)不斷地重構(gòu)優(yōu)化尤蒿。
Q:我們現(xiàn)在的業(yè)務(wù)需求已經(jīng)在堆積郑气,一線同學(xué)根本沒有時(shí)間去做重構(gòu)優(yōu)化。
A:這個(gè)問題開篇其實(shí)已經(jīng)說過了优质,你是要不斷地裹挾在業(yè)務(wù)需求和爛代碼里面呢竣贪,還是花時(shí)間 improve军洼,然后更快地支持業(yè)務(wù)。這個(gè)權(quán)衡應(yīng)該不難做演怎,關(guān)鍵是要看決心和能力匕争。
對(duì)于很多業(yè)務(wù),也很少是推遲幾天上線就會(huì)影響業(yè)務(wù)格局的業(yè)務(wù)場(chǎng)景爷耀,所以作為技術(shù)團(tuán)隊(duì)甘桑,我們就應(yīng)該在 User Story 之外,加上我們的 Technical Story歹叮,把完成業(yè)務(wù)需求和系統(tǒng)重構(gòu)都當(dāng)成我們的核心任務(wù)跑杭。