2021年,是時候把技術債務管理提上日程了
原創
最后编辑:李晓琳 于 2022-08-18 14:17:40
6365次查看
本篇目錄
开发人员面临着前所未有的压力:从传统的基础设施转移到现代的基础设施,减少效率低下的情况,并创建构建客户满意度和增加收入的産品。许多企业都在以DevOps的思维方式前进,但在他们前进的过程中,他们可能会忘记一件事,技术债务。的确,开发者可能会快速移动并破坏某些内容,但却从未真正去修复它们。因此,技术债务的积累,导致工程生产力的下降和生产成本的上升。
今年早些时候,Umser Mansoor为codehoy做了一个关于技术债务的小调查。调查发现,在91名受访者中,68%的开发者表示,他们开发的産品背负着高额或非常高的科技债务。技术债务每年给公司造成极高的的成本损失,也对工程团队造成毁灭性的影响。
這些數據得到了對大型軟件公司的研究的支持,研究發現,管理大型軟件公司的技術債務的成本是巨大的,據估計,平均占整個開發時間的25%。Stripe的研究顯示,這個數字甚至高達33%!這是一筆可以避免的巨額支出。
更糟糕的是,正如瑞典的研究中詳細描述的那樣,隨著時間的推移,解決技術債務只會變得更加具有挑戰性,因爲任何添加到代碼庫的操作都是在一個已經無法工作的系統之上進行的,因此bug和小故障不斷複合。整個團隊都被技術債務感染了,而且是會傳染的。
在價值方面,構建速度和更快發布的能力受到了阻礙。很難對工作進行時間估計,交付代碼的利潤率也會下降。

根據瑞典的研究,浪費的時間通常花在執行額外的測試上,然後是執行額外的源代碼分析和執行額外的重構。一位受訪者稱:“通常情況下,做出正確的解決方案需要更長的時間。這或多或少總是一個時間問題。通常,當你引入技術債務時,是因爲出現了一些東西。這與我們計劃如何開發軟件時所認爲的方式不太一樣。”
Codeahoy研究將技術債務歸因于幾個因素,包括過時的庫、缺乏文檔、代碼質量差、臃腫的整體、開發過程中不包括的靜態分析工具、缺乏單元測試、隨意的體系結構、糟糕的設計決策以及缺乏持續交付。具體的例子包括“10年前在內部構建的框架”和“未使用服務的遺留AWS基礎設施”。
如果你經營一家餐飲店,你只負責烹饪,不洗盤子、不刮烤架、不整理冰箱,市場監督管理局很快就會關掉你的這坨“垃圾”。
然而,軟件開發可沒有監督管理的,這要讓廚房工作人員對每天工作的廚房狀況更加警覺,如果不采取任何措施,就會出現廚房開始無法生産可食用飯菜的情況。一般來說,你可以說服決策者,從長遠來看,打掃廚房是更有利的選擇;或者,更新一下簡曆,在目前這個“廚房”燒毀之前離開。
一位受訪者提到:“管理層積極地承認這一點,我們甚至在技術債務中進行優先排序,但是技術債務項目從來沒有進入工作流,因爲它從來沒有被視爲足夠重要。”
另一位是這麽說的:“我注意到的一件奇怪的事情是,我們的公司正陷入財務困境,這意味著解決技術債務的優先級要低于可能帶來更多收入的新功能。然而,我認爲我們的許多問題都與我們的技術債務有關(例如,由于監管不善,系統在周末的時候被降級了)。不管出于什麽原因,新功能才能不斷戰勝那些讓我們的用戶付出代價的問題,技術債務越發得不到解決。”
技術債務是人們離開或者想要離開的原因之一。Codehoy的調查發現,50%的被調查開發者可能或非常可能因爲技術債務而離職。另外27%的人表示他們考慮過這個問題,但還不確定。總而言之,有相當一部分人可能會因爲競爭對手提供的誘人工作機會而動搖。如果公司正在經曆開發人員的高流動率,技術債務可能是一個因素,特別是對于那些花費時間去解決遺留代碼中的錯誤而錯過了更令人興奮的項目的人。
今年早些时候,Umser Mansoor为codehoy做了一个关于技术债务的小调查。调查发现,在91名受访者中,68%的开发者表示,他们开发的産品背负着高额或非常高的科技债务。技术债务每年给公司造成极高的的成本损失,也对工程团队造成毁灭性的影响。
1.時間浪費
能想象到你的開發團隊一年中花費近三個月(或更多)在技術債務上、沒有希望達成KPI嗎?瑞典的一項調查對軟件開發人員進行了縱向研究,發現軟件開發人員由于技術債務平均浪費了23%的工作時間。這些數據得到了對大型軟件公司的研究的支持,研究發現,管理大型軟件公司的技術債務的成本是巨大的,據估計,平均占整個開發時間的25%。Stripe的研究顯示,這個數字甚至高達33%!這是一筆可以避免的巨額支出。
更糟糕的是,正如瑞典的研究中詳細描述的那樣,隨著時間的推移,解決技術債務只會變得更加具有挑戰性,因爲任何添加到代碼庫的操作都是在一個已經無法工作的系統之上進行的,因此bug和小故障不斷複合。整個團隊都被技術債務感染了,而且是會傳染的。
在價值方面,構建速度和更快發布的能力受到了阻礙。很難對工作進行時間估計,交付代碼的利潤率也會下降。
人們在哪些債務上浪費時間?

Codeahoy研究將技術債務歸因于幾個因素,包括過時的庫、缺乏文檔、代碼質量差、臃腫的整體、開發過程中不包括的靜態分析工具、缺乏單元測試、隨意的體系結構、糟糕的設計決策以及缺乏持續交付。具體的例子包括“10年前在內部構建的框架”和“未使用服務的遺留AWS基礎設施”。
這對開發人員有什麽影響?
用廚房打比方來描述技術債務的現實是個很好的例子:如果你經營一家餐飲店,你只負責烹饪,不洗盤子、不刮烤架、不整理冰箱,市場監督管理局很快就會關掉你的這坨“垃圾”。
然而,軟件開發可沒有監督管理的,這要讓廚房工作人員對每天工作的廚房狀況更加警覺,如果不采取任何措施,就會出現廚房開始無法生産可食用飯菜的情況。一般來說,你可以說服決策者,從長遠來看,打掃廚房是更有利的選擇;或者,更新一下簡曆,在目前這個“廚房”燒毀之前離開。
2.士氣低落,工作滿意度降低
技術債務損害團隊士氣,導致過度認知的負荷。此外,管理充滿不滿情緒的團隊並非易事。大多數人都以把工作做好爲榮,並從成功中得到獎勵。但如果有技術債務,他們可能會覺得被拖垮或壓垮。如果已經向管理層提出了擔憂而又沒有追索權,情況就更糟了。80%的Codehoy受訪者指出,他們的管理層意識到了技術債務:具體來說,57%的受訪者表示,他們的經理意識到了,但並沒有計劃;23%的受訪者表示,他們的經理知道但不在乎。一位受訪者提到:“管理層積極地承認這一點,我們甚至在技術債務中進行優先排序,但是技術債務項目從來沒有進入工作流,因爲它從來沒有被視爲足夠重要。”
另一位是這麽說的:“我注意到的一件奇怪的事情是,我們的公司正陷入財務困境,這意味著解決技術債務的優先級要低于可能帶來更多收入的新功能。然而,我認爲我們的許多問題都與我們的技術債務有關(例如,由于監管不善,系統在周末的時候被降級了)。不管出于什麽原因,新功能才能不斷戰勝那些讓我們的用戶付出代價的問題,技術債務越發得不到解決。”
3.人才流失
技術債務既是一個技術問題,也是一個管理問題。快樂的開發人員是高功能團隊的成員,如果你的開發人員不滿意,他們就會離開,並帶走他們(並沒有文檔記錄)的知識。技術債務是人們離開或者想要離開的原因之一。Codehoy的調查發現,50%的被調查開發者可能或非常可能因爲技術債務而離職。另外27%的人表示他們考慮過這個問題,但還不確定。總而言之,有相當一部分人可能會因爲競爭對手提供的誘人工作機會而動搖。如果公司正在經曆開發人員的高流動率,技術債務可能是一個因素,特別是對于那些花費時間去解決遺留代碼中的錯誤而錯過了更令人興奮的項目的人。
4.客戶滿意度下降
如果技术债务导致发布了平庸産品,那么就会有负面的客户体验风险。开发人员可能在某种程度上远离最终用户,但当出现错误时,他们将首当其冲地承担寻呼机和帮助台的责任。此外,随着代码变得更加复杂,开发人员将新功能发布到生产环境中需要更长的时间,从而降低了整个生产速度,并延迟了更新时间,从而导致客户满意度下降,最终导致竞争劣势。5.造成法律後果
當技術更新涉及到遵守標准時,技術債務可能會産生嚴重的後果。它可能導致昂貴的數據泄露、罰款和合規處罰,甚至在醫療保健和銀行等領域引發訴訟。在某些情況下,關鍵任務軟件的延遲可能會危及軟件生命。6.扼殺創造性
由于技術債務而花費在維護上的每一分鍾都是失去創新或增值工作的機會。Accenture對聯邦IT系統的研究表明,技術債務和由此導致的IT不連續性阻礙了創新、敏捷性和工程速度。83%的人表示技術債務嚴重限制了他們的創新能力,79%的人表示技術債務抑制了他們對變化的響應能力,而只有38%的受訪者估計了修複技術債務的成本。遺留系統中的技術債務積累是實現現代化的關鍵障礙。
DevOps幹貨
