公司研發工程能力的高低直接影響公司的持久創新力和公司在市場上的做爲。只有不懈追求卓越的工程能力,纔可以帶來長期的核心競爭力,才能爲每一個用戶、每一個企業客戶以及整個社會創造價值。長期以來,百度在大量的軟件開發經驗中總結了許多優秀的工程實踐,這些實踐來自於公司工程標準和開發工具鏈的結合。通過長期團隊觀察和大量研發數據分析,咱們證實這些實踐能夠有效幫助提升軟件開發效率和產品質量。前端
百度軟件工程標準制定的目標是爲了幫助研發團隊持續提高工程能力。工程標準能夠快速指導團隊採用優秀的軟件工程實踐和研發工具,使其在研發效率或產品質量上得到提高。同時有了標準和規範,也可以更有效地衡量團隊工程能力的水平,讓各個團隊可以更好地瞭解自身的工程能力現狀,進而設定工程能力提高目標,不懈追求工程卓越。後端
白皮書但願分享百度在軟件工程標準、實踐、度量和改進方面的經驗,呼籲業界共同增強工程能力建設、研發工具投入、工程標準更新與工程素養提高,共同推動軟件工程的發展。併發
百度軟件工程標準是由百度DevOps TOC(Technical Oversight Committee)制定併發布的,而且隨着公司工程技術的發展不斷更新。 首先,DevOps TOC的委員普遍收集各個研發團隊的優秀工程實踐,以及工程標準實施的反饋,制定工程標準的第一版或修改意見草案。 而後TOC委員將草案提交至DevOps TOC進行充分討論,若是TOC會議經過,就進行標準修改的公示,同步修改研發工具中的對應規則。同時收集各團隊反饋和實際研發數據進行分析,來驗證標準實施的效果,並繼續準備下一輪的規則更新。less
分別介紹一下以上兩個方面的內容:工具
百度公司的軟件產品形態有多種,例如App,Browser,PC Client,SDK等。不一樣的產品類型其研發過程及優秀實踐也不盡相同。在編纂標準的時候,咱們將B/S類型產品的前端和全部類型產品的後端服務統稱爲Server類型;將Android, IOS的用戶可訪問的移動端代碼稱爲APP類型,將打包成爲移動端SDK的代碼成爲SDK類型。並根據以上三種類型(咱們正在制訂自動駕駛的工程類型)來統一工程實踐,這就引出了下面的概念--工程能力地圖:開發工具
在每一類軟件工程類型中,規則的制定團隊定義了此類工程類型從需求和設計的管理,到開發,測試,發佈的標準生命週期;不一樣的工程類型維護不一樣的生命週期。另外,咱們在生命週期的每一個階段,也定義了不一樣的工程實踐,以下圖:測試
Server類工程能力地圖:ui
開發一個Server工程,須要通過需求、開發、代碼准入、測試、上線&驗證5個階段; 在Server類的工程能力地圖中,咱們定義了33個標準的工程實踐: spa
App類工程能力地圖:設計
開發一個App工程,須要通過需求、開發、代碼准入、測試、灰度、發版6個階段。在App類工程能力地圖中,咱們定義了36個標準工程實踐
SDK類工程能力地圖
開發一個SDK工程,須要通過需求、開發、代碼准入、測試、灰度、交付等階段;在SDK工程能力地圖中,咱們定義了34個標準實踐
工程實施標準:
咱們按照團隊採納的深度,爲上述地圖中的每種工程實踐定義了Average, Good, Excellent三種標準,在average的水平,咱們要求團隊在採納廣度上達標;但若是團隊爲了實現good, excellent的表現,就須要在採納深度上進行努力: 上述是對工程能力地圖內容的簡單介紹,若是你們對具體的規則以及百度內部實施案例感興趣,能夠在文章最後找到完整版本下載的地址。
經過不斷修訂工程標準、迭代工程工具落地優秀實踐、收集研發數據並可視化工程能力,可使研發團隊快速實施優秀工程實踐,提高工程能力,進而提升團隊開發效率,提升產品質量。
咱們觀察了公司8個樣本團隊的工程實踐落地進程和開發週期時間的變化。其中4個團隊在觀察期內按照本文的工程標準推動了若干工程實踐的落地,另外4個團隊工程實踐作得不多且在觀察期內沒有推動新的工程實踐落地。
咱們發如今選定的時間範圍內(橫座標),推動工程實踐落地的4個團隊(圖中高亮的顏色),其開發週期的移動平均值(下圖的散點)成穩定降低趨勢;沒有推動工程實踐落地的4個團隊(圖中背景部分),其開發週期主要成發散上升趨勢。同時這8個團隊在觀察期內的團隊人數、開發習慣等團隊特徵以及產品質量均沒有顯著變化。這說明工程實踐可以對開發週期的縮短產生積極影響。
爲了在更大範圍內進一步發現工程標準、工程工具對研發效率和產品質量的影響,咱們對百度全部團隊6個月時間段內的研發數據進行了定量分析後,獲得以下三個結論:
以上分析結論進一步佐證了優秀的軟件工程實踐可以縮短開發週期
對於一個科技公司來講,保持並不斷提高工程能力是最重要的。百度一直堅持培養工程師的工程素養,建設高效的工程工具,持續推進工程能力提高,Relentless Pursuit of Engineering Excellence,永無止境的追求工程卓越。本白皮書介紹了目前百度工程的標準和工程實踐,但願做爲軟件工程的實踐者爲同行或研究機構提供一個參考樣本,促進交流,共同提升。百度工程標準也必然會隨着公司內外工程技術的不斷革新而持續升級。百度軟件工程標準但願及衆家之所長,合衆人之智慧,以實踐爲檢驗標準,促工程能力打造科技產品,用科技讓複雜的世界更簡單。
關注"百度效率雲官方公衆號", 在輸入框中輸入"工程能力白皮書",獲取白皮書的網盤地址