如何使用DORA工程指標來改進軟件開發(fā)團隊
譯文【51CTO.com快譯】用于衡量軟件開發(fā)工作的客觀數(shù)據(jù)和指標一直存在。但很長一段時間以來,人們認為使用這些數(shù)據(jù)或指標來衡量軟件開發(fā)的想法是不可能的。而Martin Fowler和Joel Spolsky等軟件開發(fā)專家也認為這是不現(xiàn)實的。顯然,衡量軟件開發(fā)工作是一項具有挑戰(zhàn)性的任務,這讓一些軟件開發(fā)人員感到沮喪。
而如今隨著Git、Jira和其他項目管理工具等工具的興起,其指標開始變得清晰起來,使人們能夠更密切地、以數(shù)據(jù)驅(qū)動的方式查看軟件開發(fā)項目內(nèi)部發(fā)生的事情。
當然,很多組織已經(jīng)開始采取行動。其中最重要和最著名的結(jié)果之一是由DevOps研究和評估組織(DORA)完成的。該組織在六年的時間里對數(shù)千名DevOps工程師和領導者進行了調(diào)查,最終推出了被認為對軟件開發(fā)項目成功至關(guān)重要的四個指標。
四個DORA工程指標是:
(1)部署頻率
(2)變更的平均交付周期
(3)平均恢復時間(MTTR)
(4)更改故障率
部署頻率和變更的平均交付周期這兩個指標用來衡量開發(fā)團隊的開發(fā)速度。平均恢復時間(MTTR)和更改故障率用來衡量項目質(zhì)量和穩(wěn)定性。所有四個指標都可以通過挖掘開發(fā)團隊當前使用的工具得出。
這四個DORA工程指標旨在允許開發(fā)團隊根據(jù)業(yè)務目標調(diào)整他們的工作,它們已成為組織中的首席技術(shù)官(CTO)和工程副總裁獲得有關(guān)其組織績效的標準方式。通過密切關(guān)注并改進DORA指標推進開發(fā)團隊的工作,開發(fā)團隊可以確保他們做正確的事情來推動他們的項目,更重要的是他們的業(yè)務如何向前發(fā)展。
當然,了解指標實際衡量的內(nèi)容及其含義對于使它們有用是必要的。此外,了解這些指標的當前狀態(tài)是在開發(fā)團隊改進它們的必要條件。
以下了解這四個關(guān)鍵指標。
1.部署頻率
(1)它是什么?
部署頻率衡量代碼部署到生產(chǎn)中的次數(shù)。通常在“每日部署”中報告。
生產(chǎn)如今對不同的客戶意味著不同的東西。對于SaaS公司來說,通常意味著將代碼實際交付給客戶實際使用的生產(chǎn)平臺。對于其他公司,這可能意味著提供可供客戶使用的版本。
(2)為什么重要
增加部署頻率表明開發(fā)團隊的效率和對其流程的信心。能夠更頻繁地部署的團隊能夠更快地將工作轉(zhuǎn)移到他們的管道中,并且更高效地開發(fā)和處理他們的產(chǎn)品。
(3)它是如何計算的?
它記錄了組織在一天內(nèi)進行的部署總數(shù)。如上所述,“部署”的定義可能因組織而異。如果軟件開發(fā)團隊擁有持續(xù)集成(CI)/持續(xù)交付(CD)工具為其活動提供API,則該指標可以實現(xiàn)自動化。
(4)如何改進它?
如果組織希望提高部署頻率,應該:
- 提高自動化測試覆蓋率。
- 與持續(xù)集成(CI)/持續(xù)交付(CD)工具集成。
- 自動化發(fā)布驗證階段和發(fā)布流程。
- 減少生產(chǎn)中的錯誤恢復時間。
2.變更的平均交付周期
(1)它是什么?
變更的平均交付周期是從提交代碼到將代碼發(fā)布到生產(chǎn)中所需的平均時間。
一些組織從項目代碼的第一次提交開始來計算時間,而另外一些組織從將代碼合并到主分支開始計算時間。
許多組織將變更的平均交付周期轉(zhuǎn)化為一個稱為周期時間(Cycle Time)的指標,以下將對此進行討論。
(2)為什么重要
較低的平均交付周期意味著組織的開發(fā)團隊可以高效地編碼和部署項目,并及時為其產(chǎn)品增加價值。試圖降低平均水平會激勵團隊適當?shù)貏澐止ぷ?、徹底審查代碼并進行快速部署。
(3)它是如何計算的?
每個項目都從頭到尾進行衡量,并計算這些時間的平均值。
(4)如何改進它?
該指標可以通過以下方式改進:
- 將自動化添加到部署過程中。
- 確保持續(xù)集成(CI)/持續(xù)交付(CD)流程盡可能高效。
- 將項目分成更小、更易于管理的塊。
- 創(chuàng)建高效的代碼審查流程。
3.平均恢復時間(MTTR)
(1)它是什么?
該指標衡量團隊從系統(tǒng)故障中恢復所需的平均時間。而“故障”可能意味著任何事情,從生產(chǎn)中的錯誤到生產(chǎn)系統(tǒng)宕機。
(2)為什么重要
顯然,停機時間越短越好,團隊需要更快恢復。關(guān)注平均恢復時間將鼓勵構(gòu)建更強大的系統(tǒng),并加強對這些系統(tǒng)的監(jiān)控。
快速恢復時間反映了開發(fā)團隊診斷問題和糾正問題的能力。測量平均恢復時間可以使團隊在整個開發(fā)過程中更加謹慎,并關(guān)注質(zhì)量。
(3)它是如何計算的?
通常情況下,通過測量系統(tǒng)中創(chuàng)建生產(chǎn)錯誤報告與解決該錯誤報告之間的平均時間來跟蹤此指標?;蛘撸梢酝ㄟ^測量創(chuàng)建報告和將修復部署到生產(chǎn)之間的時間來計算。
(4)如何改進它?
平均恢復時間(MTTR)可以通過以下方式變得更好:
- 構(gòu)建快速報告故障的持續(xù)集成(CI)/持續(xù)交付(CD)系統(tǒng)。
- 確保有一個對故障立即采取行動的流程。
- 將故障恢復優(yōu)先于所有其他任務。
- 縮短部署時間。
4.更改故障率
(1)它是什么?
更改故障率衡量代碼更改導致生產(chǎn)故障的頻率。導致回滾、生產(chǎn)失敗或生產(chǎn)中出現(xiàn)錯誤的更改都會影響該指標。
(2)為什么重要
這個指標很重要,因為花在處理故障上的所有時間都不是花在向客戶交付新功能和價值上的時間。顯然,減少軟件中的問題是可取的。
(3)它是如何計算的?
通常情況下,該指標的計算方法是計算部署導致故障的次數(shù),然后除以總部署數(shù)以獲得平均值。平均值越低越好。
(4)如何改進它?
當組織執(zhí)行以下操作時,更改故障率會得到改進:
- 確保自動化單元測試涵蓋所有新代碼。
- 作為持續(xù)集成過程的一部分改進自動化測試。
- 進行徹底和完整的代碼審查,以幫助防止將問題引入生產(chǎn)中。
跟蹤DORA指標的好處
(1)決策
始終如一地跟蹤DORA指標,將使開發(fā)團隊能夠在何處以及如何改進開發(fā)過程做出更好的決策。這樣做將揭示面臨的瓶頸,并使開發(fā)團隊能夠?qū)⒆⒁饬性诳赡軐е铝鞒掏牡胤剑€可以確定發(fā)展趨勢,并且驗證關(guān)于關(guān)注點的決策質(zhì)量。
跟蹤DORA指標可以幫助開發(fā)團隊和企業(yè)管理人員將注意力集中在能夠真正推動價值的事情上。它們使開發(fā)團隊能夠根據(jù)指標做出決策,而不僅僅是憑直覺做出決定。
(2)交付價值
DORA指標可以衡量開發(fā)團隊交付的價值。如果DORA指標是有利的,則組織的開發(fā)團隊將為其客戶提供價值并保持必要的質(zhì)量,以免偏離重點。這是組織的主要目標——為客戶提供價值。
(3)良性循環(huán)
當任何東西被衡量時,它很可能會被人為操縱或更改———也就是說,人們會改變行為來優(yōu)化被衡量的東西。很多時候這會對開發(fā)團隊的工作產(chǎn)生負面的的影響。
組織希望開發(fā)團隊努力優(yōu)化這些DORA指標,可以提高效率并減少浪費,這會帶來良好的結(jié)果。通常情況下,刻意追求指標會對開發(fā)團隊產(chǎn)生負面影響,因為這些指標是經(jīng)過精心設計的,其目的卻恰恰相反。
LinearB幫助組織衡量和改進DORA工程指標
DORA指標很重要,而LinearB可以輕松跟蹤它們,為組織提供開箱即用的DORA指標,可以輕松顯示和跟蹤。
通過向開發(fā)組織的高管提供其DORA指標的更高級別視圖,這樣的儀表板可能會很有用。通過簡單的視圖,高管可以一目了然地了解開發(fā)團隊的工作情況以及可能需要進行哪些中途更正的事項。
除了DORA指標之外,LinearB還可以跟蹤有助于提高組織績效的其他指標。例如拉取請求大小、拉取請求審查深度和拉取請求審查時間等指標都可以監(jiān)控,改進后將會減少更改的平均交付周期和部署頻率。
LinearB超越DORA指標
LinearB超越了DORA的變更的平均交付周期指標,以提供周期時間(Cycle Time)指標。
周期時間是一個強大的指標,用于衡量給定代碼單元從分支創(chuàng)建到生產(chǎn)部署所需的時間。它實際上是對給定任務或子任務交付給最終用戶速度的衡量。當然,交付功能是每個開發(fā)組織的目標之一。
周期時間分為四個部分:
(1)編碼時間——通常是指第一次提交到給定分支和為該分支創(chuàng)建拉取請求之間的時間。
(2)拉取請求時間——這是創(chuàng)建拉取請求和開始審查該拉取請求之間的時間。
(3)拉取請求審查時間——從拉取請求審查開始到合并代碼之間的時間。
(4)部署時間——部署時間是代碼合并和代碼實際部署到生產(chǎn)之間的時間跨度。
改善周期時間有很多好處:
- 密切跟蹤編碼時間可以鼓勵開發(fā)團隊將開發(fā)工作分成更小、更易于管理的塊。如果給定的分支或項目很大并且需要很長時間,那么周期時間就會增加。相反,它鼓勵更小的工作量。
- 推動團隊及時處理拉取請求。它有助于防止緩慢的拉取請求和過大而無法有效審查的拉取請求。
- 跟蹤部署時間的團隊被激勵專注于改進和簡化構(gòu)建和部署流程。
周期時間的增加可以成為項目遇到困難的早期預警系統(tǒng)。如果必須為團隊選擇一個指標來衡量,那就是周期時間。
WorkerB改進了DORA指標
空閑時間是在軟件開發(fā)過程中等待事情發(fā)生的時間——拉取請求閑置且未經(jīng)審查就是一個很好的例子。它是影響DORA中的部署頻率和平均變更提前期這兩個重要指標的主要因素。
WorkerB是由LinearB提供的一項功能,它可以減少對空閑時間產(chǎn)生的積極影響,從而提高組織的DORA指標。通過通知團隊成員有關(guān)存儲庫事件,可以確保團隊立即了解周期時間的組成部分(例如拉取請求提取時間和拉取請求審查時間),并允許他們以更及時的方式做出反應。
根據(jù)LinearB一些用戶的反饋,在使用WorkerB的前四個月內(nèi),周期時間減少了50%以上。
衡量成功
DORA指標基于對軟件開發(fā)團隊的多年研究。通過DORA指標來衡量成功將通過組織的開發(fā)管道交付更多價值。
LinearB可以幫助組織的開發(fā)團隊始終如一地跟蹤它們,從而對其軟件開發(fā)過程和業(yè)務產(chǎn)生深遠而持久的影響。
原文標題:How To Use DORA Engineering Metrics To Improve Your Dev Team,作者:Nick Hodges
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】