快速完成一個(gè)IT軟件項(xiàng)目而又不產(chǎn)生某種程度的技術(shù)負(fù)債是很難的。當(dāng)人們倉促地開發(fā)和部署項(xiàng)目時(shí),質(zhì)量往往會(huì)受到損害,因此人們不得不解決兼容性問題,安全漏洞,性能問題以及各種需要大量預(yù)算的麻煩事。
但是,即使重要項(xiàng)目嚴(yán)格受制于日程限制時(shí),技術(shù)債務(wù)仍可以減少到可接受的水平,從而可以在時(shí)間,質(zhì)量與成本之間進(jìn)行合理的權(quán)衡。下面來看看減少或消除技術(shù)債務(wù)而幾乎不會(huì)產(chǎn)生負(fù)面影響的八種方法。
1. 使運(yùn)營(yíng)和業(yè)務(wù)團(tuán)隊(duì)目標(biāo)一致
減少發(fā)生技術(shù)債務(wù)的可能性的一種方法是在項(xiàng)目計(jì)劃中納入IT運(yùn)營(yíng)和業(yè)務(wù)團(tuán)隊(duì)。金融服務(wù)咨詢公司Actualize Consulting的負(fù)責(zé)人Matt Seu說:“這使運(yùn)營(yíng)商在計(jì)劃制定過程中有了話語權(quán),并在上市時(shí)間與維護(hù)成本之間有權(quán)衡利弊的余地。”
Seu說:“在迭代計(jì)劃中做出明確的決定,以發(fā)現(xiàn)何時(shí)會(huì)發(fā)生技術(shù)債務(wù)以及必須在什么時(shí)間范圍內(nèi)消除技術(shù)債務(wù)。以這種方式管理技術(shù)債務(wù)將在項(xiàng)目結(jié)束時(shí)消除項(xiàng)目風(fēng)險(xiǎn)。”
IT人員和技術(shù)服務(wù)公司Genesis10的首席執(zhí)行官Harley Lippman表示,控制技術(shù)債務(wù)是團(tuán)隊(duì)的工作,應(yīng)像項(xiàng)目一樣進(jìn)行管理。他說:“這將使該組織不遺余力地牢記初衷并且不至于白白浪費(fèi)時(shí)間”。專注于漸進(jìn)式改進(jìn)。“不妨設(shè)立團(tuán)隊(duì)指標(biāo)以確保團(tuán)隊(duì)協(xié)作并將管理技術(shù)債務(wù)作為工作重點(diǎn)。”
2. 仔細(xì)計(jì)劃并編制切合實(shí)際的預(yù)算
要避免技術(shù)債務(wù)就必須進(jìn)行周密的計(jì)劃并了解大量嚴(yán)酷的真相。云聯(lián)絡(luò)中心提供商Five9的首席技術(shù)官Jonathan Rosenberg解釋說:“對(duì)產(chǎn)品的發(fā)展方向有明確的要求和視野,再加上適當(dāng)?shù)馁Y源配置和成熟的軟件開發(fā)流程,這一切使工程師能夠以適當(dāng)?shù)募夹g(shù)債務(wù)水平創(chuàng)建產(chǎn)品。”
醫(yī)療技術(shù)軟件開發(fā)商MedAcuity的首席軟件工程師Jarman Joerres建議在項(xiàng)目開始時(shí)就創(chuàng)建名為“工程準(zhǔn)備金”的預(yù)算,以應(yīng)對(duì)導(dǎo)致意外技術(shù)債務(wù)水漲船高的一切意外因素。他說:“規(guī)劃可最大限度地減少或消除技術(shù)債務(wù)的軟件項(xiàng)目的最佳方法是將其包含在計(jì)劃和估算中。”
史蒂文斯理工學(xué)院的IT副總裁兼首席信息官David Dodd指出,只有當(dāng)人們理解,進(jìn)行計(jì)劃并從戰(zhàn)略層面上為組織的未來定位時(shí),技術(shù)債務(wù)才是有用的。他說:“例如,當(dāng)某個(gè)組織故意等待開發(fā)新產(chǎn)品所需的新興技術(shù),或計(jì)劃開發(fā)和發(fā)布有助于轉(zhuǎn)變市場(chǎng)的全新系統(tǒng)時(shí)。否則,技術(shù)債務(wù)就會(huì)通過出賣你的未來能力而損害了組織的長(zhǎng)期利益。”
3. 設(shè)定可實(shí)現(xiàn)的目標(biāo)并衡量結(jié)果
應(yīng)對(duì)交付時(shí)間的壓力是企業(yè)要面對(duì)的常態(tài),但是要抵制使用設(shè)計(jì)捷徑來加快開發(fā)進(jìn)度的誘惑,因?yàn)閭}促開發(fā)的軟件在未來往往很令人操心。
開發(fā)架構(gòu)提供商Skuid的首席技術(shù)官兼工程執(zhí)行副總裁Mike Duensing表示:“架構(gòu)師的解決方案可針對(duì)開發(fā)和生產(chǎn)進(jìn)行擴(kuò)展”。Duensing強(qiáng)調(diào)了這樣做的重要性——與用戶互動(dòng)以了解其要求并預(yù)測(cè)未來的變化需求。避免設(shè)定不切實(shí)際的設(shè)計(jì)目標(biāo)也是十分明智的。他說:“與其嘗試發(fā)布一大堆功能,不如將解決方案范圍縮小,逐步遞增,從而使你可以分配適當(dāng)?shù)臅r(shí)間進(jìn)行適當(dāng)?shù)脑O(shè)計(jì)和測(cè)試。”
管理技能培訓(xùn)組織CTO Academy的聯(lián)合創(chuàng)始人Jason Noble建議向所有開發(fā)團(tuán)隊(duì)成員強(qiáng)調(diào)質(zhì)量的重要性。他說:“他們必須明白,這必須納入所有流程。”
Noble還建議為每個(gè)產(chǎn)品迭代制定可衡量的目標(biāo)。他表示:“將此設(shè)定在可實(shí)現(xiàn)的水平。經(jīng)過多次迭代,技術(shù)債務(wù)可以得到減少,同時(shí)又不影響新產(chǎn)品的功能,同時(shí)還要具備可持續(xù)性更高和更可靠的代碼。”
為了確保達(dá)到質(zhì)量標(biāo)準(zhǔn),Noble建議使用靜態(tài)分析工具,例如開源產(chǎn)品SonarQube。他說:“這些工具會(huì)掃描代碼并提供各種質(zhì)量指標(biāo),類似于文字處理器中使用的閱讀和語法工具。”
4. 建立在牢固且靈活的基礎(chǔ)上
確保你的項(xiàng)目有牢固的架構(gòu)作為依托。Duensing警告說:“糟糕的建筑結(jié)構(gòu)造就了無法整改的豆腐渣房屋……并可能引發(fā)衰退”。經(jīng)過精心設(shè)計(jì),強(qiáng)化的解決方案有助于項(xiàng)目更新更快且成本更低,從而減少發(fā)生意外技術(shù)債務(wù)的可能性。
團(tuán)隊(duì)負(fù)責(zé)人還必須明白,幾乎每個(gè)項(xiàng)目計(jì)劃都是從毫無頭緒開始的,并且往往是在制度壓力下發(fā)展,以至于產(chǎn)生過于樂觀的態(tài)度。聯(lián)合利華的子公司uFlexReward的首席執(zhí)行官Ken Charman表示:“解決技術(shù)債務(wù)的辦法不是以更詳細(xì)的計(jì)劃和更嚴(yán)格的合同來降低風(fēng)險(xiǎn),從而解決過度樂觀的問題,而是要更明智地管理交付預(yù)期”,這是在推廣一種員工獎(jiǎng)勵(lì)制度。他認(rèn)為:“使用寬松的計(jì)劃,其獎(jiǎng)勵(lì)差額大體上基于經(jīng)驗(yàn);這將減少通過放棄功能來實(shí)現(xiàn)交付的需要”,他是這樣認(rèn)為的。
5. 敏捷化
有越來越多的組織漸漸接受敏捷軟件開發(fā),這是將方法交給協(xié)作,自行組織的團(tuán)隊(duì)和跨職能團(tuán)隊(duì)的一系列方法和實(shí)踐。如果這種方法得到嚴(yán)格應(yīng)用,敏捷開發(fā)使組織可以避免技術(shù)債務(wù),其方法是快速且以迭代的方式創(chuàng)建和發(fā)布新產(chǎn)品。Dodd說:“這一過程將新產(chǎn)品和新功能盡快并逐步地交到用戶手中”。隨著新版本的交付,各種改進(jìn)和問題都得到了解決,這使技術(shù)債務(wù)的積累不太可能產(chǎn)生。
敏捷方法認(rèn)識(shí)到項(xiàng)目在生命周期中從未真正完成過,并且也從來都不是完美的。“同時(shí),敏捷方法專注于……針對(duì)能力和質(zhì)量的簡(jiǎn)化了的開發(fā)”,Dodd說。重要功能往往要頻繁地開發(fā),測(cè)試并投入生產(chǎn)。敏捷團(tuán)隊(duì)可能不會(huì)發(fā)布軟件的“全面(Big Bang)”方法,而是每年發(fā)布幾次重大升級(jí)。Dodd指出:“這可以使產(chǎn)品保持相當(dāng)平穩(wěn)的發(fā)展,還可以幫助用戶避免重大的中斷事件。”
6. 避免使用過時(shí)的技術(shù)
遺留應(yīng)用程序,過時(shí)的技術(shù)以及不同的平臺(tái)和流程可能會(huì)使組織陷入沉重的技術(shù)債務(wù),迫使其推遲基本的現(xiàn)代化計(jì)劃。DNS和流量管理技術(shù)提供商N(yùn)S1的聯(lián)合創(chuàng)始人兼首席執(zhí)行官Kris Beevers說:“技術(shù)債務(wù)將大量金錢和寶貴的時(shí)間浪費(fèi)在系統(tǒng)和應(yīng)用程序上,而這些系統(tǒng)和應(yīng)用程序并不是為現(xiàn)代企業(yè)所需的規(guī)模和速度而打造的。”
舊資產(chǎn)和老方法也往往充斥著安全漏洞,難以集成和自動(dòng)化,并且很可能不再更新。 Beevers指出:“尋找人才來管理基于復(fù)雜或過時(shí)的代碼構(gòu)建的遺留應(yīng)用程序也是一個(gè)日益嚴(yán)峻的難題。堅(jiān)持采用過時(shí)技術(shù)不僅會(huì)消耗寶貴的預(yù)算,而且還會(huì)阻礙公司創(chuàng)新和保持競(jìng)爭(zhēng)力的能力。”
7. 淘汰沒有得到充分利用的資源
定期檢查現(xiàn)有平臺(tái)和應(yīng)用程序的使用水平,這是另一種減少技術(shù)債務(wù)的方法。人工智能和機(jī)器語言咨詢公司Small Scale AI的首席顧問Rob Peterscheck表示:“也許只要?jiǎng)h除未使用或很少使用的產(chǎn)品(而不是對(duì)其進(jìn)行更新)就可以消除技術(shù)債務(wù)。實(shí)際情況往往是,在技術(shù)產(chǎn)品使用最少的地區(qū),技術(shù)債務(wù)卻最嚴(yán)重。”
技術(shù)債務(wù)是可以減少的,其方法是利用高效的生命周期,專注于對(duì)日常需求至關(guān)重要的平臺(tái)和應(yīng)用程序并減少不必要的產(chǎn)品(雖然這些工具可能不完全是遺留工具,而是需要穩(wěn)定的更新和修復(fù)程序來服務(wù)不斷減少的用戶)。Peterscheck指出:“對(duì)于大型組織而言,光是了解環(huán)境中的所有應(yīng)用程序和解決方案以及它們的使用方式就已經(jīng)夠難了。”
8. 注意警告標(biāo)志
組織還應(yīng)注意技術(shù)債務(wù)達(dá)到拐點(diǎn)時(shí)必然會(huì)出現(xiàn)的警告信號(hào)。Beevers指出,關(guān)鍵指標(biāo)包括大量一次性手動(dòng)變更,沒有足夠的文檔以及沒有與其它應(yīng)用程序或云端做無縫集成。
只有急于使軟件快速上市時(shí),在一定程度上容忍技術(shù)債務(wù)才是可接受的。Beevers說:“很多時(shí)候,將過渡的軟件先發(fā)布出去,以期未來的版本更新,這種做法是可以接受的。”
版權(quán)聲明:本文為企業(yè)網(wǎng)D1Net編譯,轉(zhuǎn)載需注明出處為:企業(yè)網(wǎng)D1Net,如果不注明出處,企業(yè)網(wǎng)D1Net將保留追究其法律責(zé)任的權(quán)利。