越來越多的行業(yè)領(lǐng)先的工程組織認(rèn)為,技術(shù)債務(wù)應(yīng)該是所有軟件開發(fā)人員工作的核心部分,通過主動(dòng)管理和清除技術(shù)債務(wù),不僅可以避免失敗,而且實(shí)際上可以超越競(jìng)爭(zhēng)對(duì)手。
大多數(shù)企業(yè)認(rèn)為他們的技術(shù)債務(wù)是一種需要管理的負(fù)擔(dān)。也有一些企業(yè)則通過將技術(shù)債務(wù)作為開發(fā)人員日常工作的重要組成部分而獲得更大的成功。
“債務(wù)就像任何陷阱一樣,很容易進(jìn)入,但很難擺脫。”——喬什·比林斯(美國(guó)幽默作家)
技術(shù)債務(wù)是科技界最討厭的術(shù)語之一。就像在生活中一樣,一提到債務(wù)就會(huì)讓人感到壓力重重。因?yàn)閿[脫債務(wù)是一件苦差事。
具體來說,在軟件工程中,技術(shù)債務(wù)通常指的是耗盡工程師大量寶貴時(shí)間維護(hù)的老化系統(tǒng)。技術(shù)債務(wù)需要管理、維護(hù)和最小化。因?yàn)榧夹g(shù)債務(wù)可能是壓倒駱駝的最后一根稻草,最終將會(huì)讓企業(yè)不堪重負(fù)。
但一定要這樣嗎?越來越多的行業(yè)領(lǐng)先的工程組織認(rèn)為,技術(shù)債務(wù)應(yīng)該是所有軟件開發(fā)人員工作的核心部分,通過主動(dòng)管理和清除技術(shù)債務(wù),不僅可以避免失敗,而且實(shí)際上可以超越競(jìng)爭(zhēng)對(duì)手。
什么是技術(shù)債務(wù)?
技術(shù)債務(wù)這一術(shù)語最初由計(jì)算機(jī)科學(xué)家Ward Cunningham于1992年提出,技術(shù)債務(wù)是指為技術(shù)系統(tǒng)構(gòu)建短期解決方案會(huì)帶來一系列權(quán)衡,從而導(dǎo)致未來的債務(wù)必須以工程工作的形式償還。
正如軟件開發(fā)人員Martin F owler在2003年所描述的那樣:一些快速的做事方式給企業(yè)帶來了技術(shù)債務(wù),這類似于金融債務(wù)。與金融債務(wù)一樣,技術(shù)債務(wù)也會(huì)產(chǎn)生利息,這是企業(yè)在未來發(fā)展中必須付出的額外努力。
根據(jù)Stripe公司在2018年發(fā)布的開發(fā)人員系數(shù)報(bào)告,軟件開發(fā)人員每周平均花費(fèi)13個(gè)小時(shí)以上來解決技術(shù)債務(wù)問題。現(xiàn)在,隨著應(yīng)用程序變得越來越復(fù)雜,管理這些技術(shù)債務(wù)從未像現(xiàn)在這樣重要。Stepsize公司首席執(zhí)行官Alexandre Omeyer說:“任何認(rèn)為是負(fù)債的代碼都是技術(shù)債務(wù)。”
技術(shù)債務(wù)有多種形式。行業(yè)專家Isaac Sacolick說,“在低端,它可能是需要重構(gòu)的一小部分代碼、需要升級(jí)的庫(kù)或需要修復(fù)的單元測(cè)試。而在高端,技術(shù)債務(wù)包括重新設(shè)計(jì)復(fù)雜的單一應(yīng)用程序、移植過時(shí)的Web服務(wù)協(xié)議、將多個(gè)平臺(tái)整合到一個(gè)標(biāo)準(zhǔn)、清理數(shù)據(jù)債務(wù)問題、基礎(chǔ)設(shè)施的現(xiàn)代化、引入可觀察性實(shí)踐或自動(dòng)化積壓的人工測(cè)試用例。最糟糕的技術(shù)債務(wù)類型是一種‘燃燒的平臺(tái)’,這意味著平臺(tái)經(jīng)常出現(xiàn)影響業(yè)務(wù)的中斷和事件。”
盡管開發(fā)任何被稱為“燃燒的平臺(tái)”似乎都不如推出新功能那么吸引人,但只有通過以積極和持續(xù)的方式作為一個(gè)團(tuán)隊(duì)來解決技術(shù)債務(wù),開發(fā)人員才能避免長(zhǎng)期的痛苦。
Sacolick寫道:“解決技術(shù)債務(wù)往往被忽視,因?yàn)檫@樣做很少能解決緊急的業(yè)務(wù)需求,尤其是對(duì)于非緊急情況,投資回報(bào)率不明確,因此被認(rèn)為是可以推遲的。對(duì)于涉及維護(hù)的任何事情,無論是代碼還是房屋,這都是一個(gè)經(jīng)典問題。”
窺探技術(shù)債務(wù)的深淵
《產(chǎn)品到項(xiàng)目》一書的作者兼Tasktop公司創(chuàng)始人Mik Kersten說,“技術(shù)債務(wù)需要成為主動(dòng)解決的首要問題。不幸的是,在許多情況下,這是一個(gè)新穎的概念。”
對(duì)于許多工程團(tuán)隊(duì),尤其是那些在快速發(fā)展的組織中的工程團(tuán)隊(duì)來說,技術(shù)債務(wù)可能會(huì)讓人覺得它與推出新功能的重要工作之間存在緊張關(guān)系。但對(duì)于Honeycomb公司首席技術(shù)官和聯(lián)合創(chuàng)始人Charity Majors來說,技術(shù)債務(wù)本身就是成功的標(biāo)志,它意味著企業(yè)還活著。
Majors表示,只有確保小事得到妥善處理,才能確保不會(huì)積少成多變得難以處理。
雖然這說起來容易,但整個(gè)組織都需要進(jìn)行文化轉(zhuǎn)變但企業(yè)都需要進(jìn)行文化轉(zhuǎn)變,以確保認(rèn)真對(duì)待技術(shù)債務(wù)。
Red Monk公司分析師Rachel Stephens說,“對(duì)于許多企業(yè)來說,能夠有一個(gè)真正的優(yōu)先待辦事項(xiàng)是一個(gè)挑戰(zhàn),尤其是那些有動(dòng)力推出新產(chǎn)品但沒有特定的基于績(jī)效的激勵(lì)措施的企業(yè)。這些企業(yè)同時(shí)還要管理他們的技術(shù)債務(wù)。”RedMonk分析師RachelStephens告訴InfoWorld。
或者,正如Tasktop公司的Kersten所說,“僅通過激勵(lì)功能,企業(yè)就會(huì)將自己置于技術(shù)債務(wù)死亡漩渦中。”
如何管理技術(shù)債務(wù)
Launch Darkly公司首席技術(shù)官兼聯(lián)合創(chuàng)始人John Kodumal指出,雖然技術(shù)債務(wù)在軟件開發(fā)中是不可避免的,但隨著時(shí)間的推移,主動(dòng)減少債務(wù)比停止其他工作并試圖擺脫堆積如山的債務(wù)要好得多。
這種應(yīng)對(duì)技術(shù)債務(wù)的主動(dòng)方法涉及將企業(yè)可能認(rèn)為是技術(shù)債務(wù)的任何事情視為要包含在正常敏捷過程中的另一項(xiàng)功能工作。
行業(yè)專家Sacolick表示,維護(hù)應(yīng)用程序和避免或至少延遲遺留狀態(tài)的秘訣在于企業(yè)和團(tuán)隊(duì)如何管理技術(shù)債務(wù)。關(guān)鍵是積極主動(dòng),這意味著需要制定政策、慣例和流程,并隨著時(shí)間的推移分?jǐn)倻p少債務(wù)的成本。
許多團(tuán)隊(duì)會(huì)傾向于投入一定的能力來解決技術(shù)債務(wù),例如每個(gè)sprint的20%。然而,Tasktop公司的Kersten建議采取一種更加動(dòng)態(tài)的方法,考慮即將到來的截止日期或團(tuán)隊(duì)能力的背景。
Kersten說。“你應(yīng)該衡量業(yè)務(wù)成果和對(duì)技術(shù)債務(wù)的投資,并確保這些平衡。讓技術(shù)債務(wù)可見,這樣始終知道自己有了多少技術(shù)債務(wù)。一旦可見,設(shè)置目標(biāo)交付百分比,該百分比必須隨時(shí)間動(dòng)態(tài)變化。”
對(duì)于云存儲(chǔ)提供商Box公司的首席技術(shù)官Ben Kus來說,償還技術(shù)債務(wù)是所有工程團(tuán)隊(duì)都需要在其工作中包含的內(nèi)容。他說,“當(dāng)然這會(huì)被推遲,但應(yīng)該有一種持續(xù)的感覺,那就是一直在處理這些事情。”
不過,Kus并不建議指派某些工程師專注于技術(shù)債務(wù)。他說:“這可能是人才流失的根源。沒有人愿意從事技術(shù)債務(wù)或重構(gòu)之類的工作。”
Box公司希望在sprint過程中、事后分析和待命時(shí)平均分配工程團(tuán)隊(duì)的工作和表面問題。Kus說,“我們有一個(gè)嚴(yán)格的事后分析流程,我們會(huì)確定要解決的問題,以防止同樣的問題再次發(fā)生。我們并不是那么想當(dāng)然地說‘放棄一切來解決問題’,但我們明確表示,如果問題再次發(fā)生,這將成為一個(gè)責(zé)任問題。如果再次發(fā)生,那將非常令人不快。”
待命輪換的重要性
隨著工程團(tuán)隊(duì)希望有效地挖掘和衡量拖慢他們前進(jìn)速度的技術(shù)債務(wù),這種隨叫隨到的元素變得越來越重要。
像Honeycomb公司的Majors這樣的工程經(jīng)理支持定期將工程師從特性工作中脫離出來,以便隨時(shí)待命,專注于修復(fù)、重構(gòu)和自動(dòng)化債務(wù)。
Majors說,“有一個(gè)主要負(fù)責(zé)小事的工程師很重要。作為待命的一部分,應(yīng)該積極勸阻他們不要從事產(chǎn)品工作。這將彈性引入了一個(gè)通常很少使用的系統(tǒng)中。”
Chris Evans是Incident.io公司的創(chuàng)始人,該公司是一家專門從事事件響應(yīng)的軟件初創(chuàng)公司。他說,“跟蹤事物的全部意義在于清除那些隱性知識(shí),員工會(huì)被要求完成他不擅長(zhǎng)處理的事情。”
雖然一開始這聽起來很可怕,但問題會(huì)得到解決,然后,通過強(qiáng)調(diào)在事件后清理或事后分析中出了什么問題,解決技術(shù)債務(wù)的重要性會(huì)變得更加明顯。
Evans在去年12月發(fā)表的一篇博客文章中寫道,“通過對(duì)我們所做的工作承擔(dān)運(yùn)營(yíng)責(zé)任,我們加快了反饋循環(huán)。這有助于做出務(wù)實(shí)的工程決策,并在發(fā)布新代碼與支持和改進(jìn)我們現(xiàn)有的代碼之間保持健康的張力。”
例如,該公司工程師最近因與其中一個(gè)數(shù)據(jù)庫(kù)的交互而減慢了速度。Evans說,“通過一周的努力,我們認(rèn)為可以建立一種與數(shù)據(jù)庫(kù)交互的更好方式,這將對(duì)我們未來如何構(gòu)建每個(gè)功能產(chǎn)生復(fù)合影響。”
這些成功應(yīng)該像解決一個(gè)重大事件一樣重要,或者開發(fā)出色的新功能一樣值得慶祝,而消除大量技術(shù)債務(wù),就像獲得新客戶一樣重要。
英國(guó)《金融時(shí)報(bào)》對(duì)技術(shù)債務(wù)的反思
英國(guó)《金融時(shí)報(bào)》在過去六年中一直在重塑其處理技術(shù)債務(wù)的方法。早在2015年,這家英國(guó)報(bào)紙的網(wǎng)站就由一款名為Falcon的單一應(yīng)用程序提供支持。2016年,該公司的開發(fā)人員將Falcon轉(zhuǎn)換為一組微服務(wù),現(xiàn)在其名稱為Next。由此產(chǎn)生的332個(gè)代碼存儲(chǔ)庫(kù)由一組具有明確職責(zé)的持久團(tuán)隊(duì)管理,從應(yīng)用程序、內(nèi)容發(fā)現(xiàn)和廣告到中央平臺(tái),僅負(fù)責(zé)72個(gè)存儲(chǔ)庫(kù)。
英國(guó)《金融時(shí)報(bào)》客戶產(chǎn)品技術(shù)總監(jiān)Anna Shipman在4月于倫敦舉行的QCon會(huì)議上表示。在大約一年之內(nèi),事情開始變得不太順利。其開發(fā)團(tuán)隊(duì)忽略了整體技術(shù)戰(zhàn)略以及誰擁有哪些服務(wù)。這導(dǎo)致了越來越多的技術(shù)債務(wù),沒有人愿意使用孤立代碼庫(kù),以及愿意在數(shù)小時(shí)內(nèi)隨叫隨到的工程師越來越少。
正如Shipman的一位同事告訴她的那樣:“感覺不像我們擁有或指導(dǎo)這個(gè)系統(tǒng)。我們只是向里面塞進(jìn)一些東西。”
企業(yè)需要清除那些技術(shù)債務(wù)并接受復(fù)雜性,以便更有效地管理它。只有當(dāng)團(tuán)隊(duì)對(duì)他們的技術(shù)堆棧擁有明確的所有權(quán)時(shí),企業(yè)才能開始更有意識(shí)地清理那些技術(shù)債務(wù)。
Shipman說,“這不是與常規(guī)功能交付一起做的事情,而是需要適當(dāng)?shù)亓舫鰰r(shí)間并安排時(shí)間去做的事情,這并不是一勞永逸的事情。”
雖然沒有中央授權(quán)將所有工程時(shí)間的20%分配給清除和管理技術(shù)債務(wù),但Shipman認(rèn)為其團(tuán)隊(duì)現(xiàn)在能夠更好地平衡功能交付與技術(shù)債務(wù)。
說服高管
一旦重新評(píng)估了與跨工程技術(shù)債務(wù)的關(guān)系,開發(fā)人員將了解放慢速度以持續(xù)解決技術(shù)債務(wù)的價(jià)值,但挑戰(zhàn)并沒有就此結(jié)束,仍然必須向企業(yè)高管傳達(dá)這種價(jià)值觀。
Honeycomb公司的Majors說,“產(chǎn)品和工程經(jīng)理將他們的時(shí)間分配給增加業(yè)務(wù)價(jià)值,好像華而不實(shí)的功能是唯一的價(jià)值。”
解決技術(shù)債務(wù)可能是在追求業(yè)務(wù)目標(biāo)時(shí)優(yōu)先考慮的第一件事,但工程經(jīng)理必須改變這種說法。
eBay公司高級(jí)首席架構(gòu)師David Van Couvering在今年早些時(shí)候的一篇博客文章中寫道。“當(dāng)我與工程師溝通時(shí),我聽到的最常見的抱怨之一是,他們覺得自己必須不斷地開發(fā)功能,而他們使用的軟件和工具變得更加脆弱、不一致和令人沮喪,他們完成工作變得越來越困難。”
而讓不同部門的人員了解這些脆弱系統(tǒng)的風(fēng)險(xiǎn),通過強(qiáng)調(diào)現(xiàn)在清除技術(shù)債務(wù)可以使工程在未來更快地發(fā)展,確保軟件更安全。
Van Couvering寫道,“當(dāng)清除技術(shù)債務(wù)時(shí),企業(yè)、團(tuán)隊(duì)和員工都會(huì)受益。因?yàn)樗鼈儽苊饬斯こ坦ぷ鞫逊e可能帶來的失敗。”
金融時(shí)報(bào)的Shipman建議道,“其他工程師會(huì)明白這項(xiàng)工作的重要性。企業(yè)需要真正與業(yè)務(wù)指標(biāo)聯(lián)系起來,例如周轉(zhuǎn)時(shí)間、性能和質(zhì)量。”
不要冒險(xiǎn)
成功管理技術(shù)債務(wù)需要付出大量努力來改變根深蒂固的企業(yè)文化和工作方式,以及改善工程團(tuán)隊(duì)與業(yè)務(wù)團(tuán)隊(duì)之間的溝通。開發(fā)商采取的激勵(lì)措施可能需要改變,但忽視不斷增長(zhǎng)的技術(shù)債務(wù)的風(fēng)險(xiǎn)可能存在。
RedMonk公司分析師Rachel Stephens說,“如果企業(yè)專注于幫助業(yè)務(wù)伙伴了解當(dāng)今的決策如何增加未來風(fēng)險(xiǎn),那么反對(duì)技術(shù)債務(wù)的論點(diǎn)將會(huì)得到加強(qiáng)。可以展示項(xiàng)目中可預(yù)測(cè)性的喪失,面臨的問題將導(dǎo)致以后的性能下降。”
開發(fā)出新功能會(huì)讓客戶和高管們感到很高興,但技術(shù)債務(wù)沉重的系統(tǒng)會(huì)讓一切都停頓下來,因此企業(yè)需要盡力避免技術(shù)債務(wù)。
(部分內(nèi)容來源網(wǎng)絡(luò),如有侵權(quán)請(qǐng)聯(lián)系刪除)