“軟件研發(fā)效能提升之美”閱讀筆記(1)

why 為什么需要提升軟件研發(fā)效能
現(xiàn)代的軟件行業(yè)已經(jīng)不再是以前“大魚吃小魚”的時代了,而是轉(zhuǎn)變成了“快魚吃慢魚”的時代,各企業(yè)比拼的是需求轉(zhuǎn)化成軟件或服務(wù)的研發(fā)效率。

what 什么是軟件研發(fā)效能
“順暢、高質(zhì)量地持續(xù)交付有價值的閉環(huán)”
順暢:價值的流動過程必須順暢,沒有阻礙;
高質(zhì)量:如果質(zhì)量不行,那么流動越快,死得越快;
持續(xù):不能時斷時續(xù),小步快跑才是正道,不要憋大招;
有效價值:交付物是否真正解決了用戶的本質(zhì)問題;
閉環(huán):強調(diào)快速反饋的重要性。
實踐:持續(xù)開發(fā),持續(xù)集成,持續(xù)測試,持續(xù)運維。

理想情況下更多的時間占比應(yīng)該放在”未雨綢繆象限“,少量時間用于”救火象限“
研發(fā)效能工具一定是能解決實際問題
需要從全局理清全流程,識別出等待浪費的時間,通過流程再造與優(yōu)化實現(xiàn)全局效率的提升
效能提升成功的標(biāo)準(zhǔn)是用戶的成功
研發(fā)效能提升的落地遵循”先圈地,后改進“的策略
做自己研發(fā)效能平臺的第一個用戶

how 如何提升軟件研發(fā)效能
研發(fā)效能的提升,既有基于工具的,也有基于流程的。
使用MVP(minimum viable product)的思想提升研發(fā)效能,即用最快、最簡明的方式建立一個可用的產(chǎn)品原型,然后迭代來完善細節(jié)。例如,研發(fā)平臺的建設(shè),識別出待解決的問題之后,給出最簡單的解決方案,并在后面的實踐中不斷優(yōu)化和迭代。
效能提升8大實踐:

1、從痛點入手
早期階段,采用自下而上的策略,從一個工程實踐中的實際痛點入手,從解決問題的角度打造研發(fā)效能的亮點,追求”短、平、快“,遵循將問題點逐個擊破的原則。
2、從全局切入
需要從全局理清楚全流程,識別出等待浪費的時間,通過流程再造與優(yōu)化實現(xiàn)全局效率的提升。
3、用戶獲益
成功的標(biāo)準(zhǔn)不是研發(fā)效能平臺的成功,而是客戶的成功。
4、持續(xù)改進
? ? 問題在開始時,關(guān)注點是如何快速、簡單地解決問題,但是當(dāng)用戶量和接入團隊日益增大后,需要關(guān)注解決方案的普適性和通用性,采用”先圈地、后改進“的策略
5、全局優(yōu)化
前期采用”自下而上“的工程實踐來實現(xiàn)各種痛點的問題的各個擊破,隨著研發(fā)效能實踐逐漸進入深水區(qū),單一領(lǐng)域效能提升的邊際效應(yīng)會逐漸遞減,此時基于橫向拉通的全局優(yōu)化變得非常關(guān)鍵,自上往下的推動在此時將會起到關(guān)鍵的作用。很多橫向跨部門的流程優(yōu)化和整合必須借助管理層的力量才能有效地向前推進。
6、效能平臺架構(gòu)的靈活性
研發(fā)效能的開發(fā)能力非常關(guān)鍵,它必須能夠應(yīng)對多樣性,讓業(yè)務(wù)線能夠在平臺上實現(xiàn)各自的個性化需求。
7、杜絕”掩耳盜鈴“
? ? 如下實踐需要杜絕:
1)代碼質(zhì)量門禁sonar設(shè)而不立
2)單元測試只是執(zhí)行,不寫斷言
3)代碼覆蓋率形同虛設(shè)
4)peer review走過場
5)代碼遞交過于隨意
6)監(jiān)控超配,由報警但無人認領(lǐng)
? ?虛擬指標(biāo)案例:接入工程數(shù),系統(tǒng)用戶數(shù),接入研發(fā)效能平臺的項目數(shù)
8、吃自己的”狗糧“
? ? ? 做自己研發(fā)效能平臺的第一個用戶

研發(fā)效率提升案例
1)采用前端代碼的自動生成,大幅提升原型構(gòu)建環(huán)節(jié)的效率;
手繪出GUI界面的草稿,然后通過Sketch2Code直接將草稿轉(zhuǎn)換成目標(biāo)平臺的代碼。
2)采用工具或腳本生成臨界參數(shù)進行API測試,進一步將該機制與CI流水線集成,在CI被執(zhí)行過程中主動執(zhí)行臨界參數(shù)下的API測試,以求問題更早地被暴露。
3)基于流程優(yōu)化的效能提升。
4)本地編譯耗時長:提供增量編譯和分布式編譯能力。
5)本地測試?yán)щy,測試環(huán)境準(zhǔn)備復(fù)雜且耗時長:基于kubernts的pod提供一鍵搭建測試環(huán)境的能力。
6)自動化測試用來數(shù)量大,執(zhí)行回歸時間過長:采用并發(fā)測試用例執(zhí)行機制,使用幾百,幾千臺測試執(zhí)行機并行測試用例,實現(xiàn)用硬件資源換時間。
7)自動化測試用例維護成本高:測試用例采用模塊化和分層體系,實現(xiàn)低成本的自動化用例維護。
8)測試數(shù)據(jù)準(zhǔn)備困難:引入統(tǒng)一的測試數(shù)據(jù)服務(wù)能力。
9)研發(fā)后期階段,代碼遞交集中,缺陷井噴:推行測試左移策略,鼓勵研發(fā)自測,遵循”誰開發(fā),誰測試,誰上線,誰值班“的原則。
10)性能缺陷在研發(fā)后期發(fā)現(xiàn),修復(fù)重測成本居高不下:從性能測試轉(zhuǎn)變?yōu)樾阅芄こ蹋屝阅苋谌胲浖邪l(fā)的各個環(huán)節(jié),而不是最后的一錘子買賣。
11)安全問題頻現(xiàn):實現(xiàn)DevSecOps。
12)集群規(guī)模龐大,發(fā)布過程耗時過長:各個層級的并發(fā)部署能力,集群內(nèi)節(jié)點的并發(fā),集群間的并發(fā)等。
13)項目的過程數(shù)據(jù)都是后期集中填充,失去度量意義:項目的過程數(shù)據(jù)由工具自動填充。

研發(fā)效能發(fā)展方向與未來展望
1、研發(fā)各個環(huán)節(jié)的全鏈路橫向打通
2、研發(fā)全流程的可視化
3、”穩(wěn)態(tài)“和”敏態(tài)“齊頭并進
4、研發(fā)能力的中臺化沉淀
5、數(shù)據(jù)驅(qū)動下效能提升