心得分享 | 軟體研發效能(1)

feiyun0112發表於2020-09-03

最近參加了關於研發效能的培訓,結合自己的工作經驗,將相關的心得總結出來,希望對大家和自己都有一些幫助。

本文首發於我的個人公眾號,轉載請註明出處。

研發效能

軟體研發可以看作是一條流水線:

這條流水線具有很高的靈活性:

  • 靈活的最終產品——實現哪些使用者需要的功能;
  • 靈活的節點間關係——不同節點是可以融合的,例如測試可以放到本地開發中;
  • 靈活的節點——節點有多種實現方式,例如測試可以用TDD、BDD;
  • 靈活的開發者——對於相同的問題採取不同的方法解決;

研發效能即通過流水線持續地為使用者產生有效價值的效率,包括3個方面:

  • 快速——很快地生產釋出產品;
  • 準確——產品對客戶、對公司提供價值;
  • 持續——能夠持續地高效生產;

效能度量

管理學大師彼得德魯克曾經說過“你如果無法度量它,就無法管理它”(“It you can't measure it, you can't manage it”)。

為了提高研發效能,首先就必須能夠度量整個流程,找出流程中關鍵的點,哪個點效能有問題。

效能度量需要一定的技巧,如果和績效直接掛鉤,往往不能達到效果,甚至會像下面的漫畫描述的那樣造成不良後果(檢查bug修復數就去先產生bug)。

下面列出了可用於有效度量的部分具體指標:

如何建立高效研發流程

成本可以分為生產成本和交易成本。交易成本是指完成工作需要額外處理的內容,例如軟體研發中的釋出就可以看作一種交易成本。

自動化和持續流程是降低交易成本的有效手段,下面介紹在研發流程的不同階段建立高效研發流程的常用手段:

程式碼入庫前

  • 規範優化流程——獲取開發環境、本地開發流程、入庫前系統檢查;
  • 快速反饋——自動化測試、聯調環境、並行化提高效率;
  • 優化程式碼入庫前流程和程式碼檢查系統——UT、IT、自動化程式碼檢查;
  • Trunk-based——程式碼儘早進入共享分支整合;

程式碼入庫後

  • 持續交付——高效發現、定位問題,自動化保證檢查效率;
  • 持續部署——提高資源使用效率;

程式碼上線後

  • 資料收集和問題定位——打點、Dashboard監控、Logview;
  • 功能開關——實現功能的快速“回滾”;

除此之外,針對流水線的優化可以基於以下幾個原則進行處理:

  • 5個持續;

  • 提高測試完整性保證產品質量——建設框架、工具支撐測試用例編寫、執行;

  • 提高流水線執行速度避免阻塞——包括構建速度、測試速度、反饋速度;

  • 提高環境一致性提前暴露線上問題——包括機器、資料、軟體、網路;

  • 提高靈活性增強有效性——整合內外部工具,流水線可以自助化、自定製使用;

相關文章