最近參加了關於研發效能的培訓,結合自己的工作經驗,將相關的心得總結出來,希望對大家和自己都有一些幫助。
本文首發於我的個人公眾號,轉載請註明出處。
研發效能
軟體研發可以看作是一條流水線:
這條流水線具有很高的靈活性:
- 靈活的最終產品——實現哪些使用者需要的功能;
- 靈活的節點間關係——不同節點是可以融合的,例如測試可以放到本地開發中;
- 靈活的節點——節點有多種實現方式,例如測試可以用TDD、BDD;
- 靈活的開發者——對於相同的問題採取不同的方法解決;
研發效能即通過流水線持續地為使用者產生有效價值的效率,包括3個方面:
- 快速——很快地生產釋出產品;
- 準確——產品對客戶、對公司提供價值;
- 持續——能夠持續地高效生產;
效能度量
管理學大師彼得德魯克曾經說過“你如果無法度量它,就無法管理它”(“It you can't measure it, you can't manage it”)。
為了提高研發效能,首先就必須能夠度量整個流程,找出流程中關鍵的點,哪個點效能有問題。
效能度量需要一定的技巧,如果和績效直接掛鉤,往往不能達到效果,甚至會像下面的漫畫描述的那樣造成不良後果(檢查bug修復數就去先產生bug)。
下面列出了可用於有效度量的部分具體指標:
如何建立高效研發流程
成本可以分為生產成本和交易成本。交易成本是指完成工作需要額外處理的內容,例如軟體研發中的釋出就可以看作一種交易成本。
自動化和持續流程是降低交易成本的有效手段,下面介紹在研發流程的不同階段建立高效研發流程的常用手段:
程式碼入庫前
- 規範優化流程——獲取開發環境、本地開發流程、入庫前系統檢查;
- 快速反饋——自動化測試、聯調環境、並行化提高效率;
- 優化程式碼入庫前流程和程式碼檢查系統——UT、IT、自動化程式碼檢查;
- Trunk-based——程式碼儘早進入共享分支整合;
程式碼入庫後
- 持續交付——高效發現、定位問題,自動化保證檢查效率;
- 持續部署——提高資源使用效率;
程式碼上線後
- 資料收集和問題定位——打點、Dashboard監控、Logview;
- 功能開關——實現功能的快速“回滾”;
除此之外,針對流水線的優化可以基於以下幾個原則進行處理:
-
5個持續;
-
提高測試完整性保證產品質量——建設框架、工具支撐測試用例編寫、執行;
-
提高流水線執行速度避免阻塞——包括構建速度、測試速度、反饋速度;
-
提高環境一致性提前暴露線上問題——包括機器、資料、軟體、網路;
-
提高靈活性增強有效性——整合內外部工具,流水線可以自助化、自定製使用;