導(dǎo)讀
技術(shù)債務(wù)是拖慢技術(shù)團(tuán)隊(duì)生產(chǎn)力的元兇。起初技術(shù)債務(wù)似乎不是一個(gè)障礙,但隨著時(shí)間的推移,它可能會(huì)阻礙團(tuán)隊(duì)的開(kāi)發(fā)效率。在許多情況下,團(tuán)隊(duì)的工作會(huì)達(dá)到一個(gè)臨界點(diǎn),在這個(gè)臨界點(diǎn)上,技術(shù)債務(wù)就會(huì)成為新功能得任何進(jìn)展的阻礙因素。
本文將幫助你制定技術(shù)債務(wù)提案,以證明為了解決問(wèn)題而花費(fèi)一些時(shí)間是合理的,更重要的是防止技術(shù)債務(wù)。讓我們來(lái)看看你應(yīng)該在技術(shù)債務(wù)提案中包含哪些會(huì)幫助管理層做出決策的元素。
首先,讓我們來(lái)探討一下為什么需要寫(xiě)一個(gè)技術(shù)債務(wù)提案。
為什么需要寫(xiě)一份技術(shù)債務(wù)提案?
有時(shí)候,你的管理層可能沒(méi)有意識(shí)到正在減慢開(kāi)發(fā)團(tuán)隊(duì)速度的技術(shù)問(wèn)題。技術(shù)債務(wù)提案可以幫助你證明解決技術(shù)債務(wù)所花費(fèi)的時(shí)間和資源是合理的,并制定計(jì)劃以進(jìn)一步防止技術(shù)債務(wù)。
為此,你需要收集證據(jù)并提出衡量成功的計(jì)劃和指標(biāo)。需要注意的是,你可能做出了錯(cuò)誤的估計(jì),因此解決方案不起任何作用。這意味著,你要能夠跟蹤技術(shù)債務(wù)提案的有效性,以便在未按預(yù)期進(jìn)行時(shí)開(kāi)始干預(yù)。
以下內(nèi)容重點(diǎn)介紹指導(dǎo)你完成創(chuàng)建技術(shù)債務(wù)提案的不同步驟,包括如何確定工具以及如何圍繞此工具構(gòu)建計(jì)劃。
步驟1:確定對(duì)技術(shù)債務(wù)中影響最大的問(wèn)題
首先,確定對(duì)工程團(tuán)隊(duì)工作效率影響最大的技術(shù)債務(wù)問(wèn)題。工程團(tuán)隊(duì)在問(wèn)題跟蹤或項(xiàng)目管理工具中徘徊時(shí),通常會(huì)意識(shí)到這些問(wèn)題。
識(shí)別這些問(wèn)題的最佳方法是在編輯器中跟蹤技術(shù)債務(wù)。在編輯器中跟蹤技術(shù)債務(wù)可以使得工程師能夠全面了解技術(shù)債務(wù),查看每個(gè)代碼庫(kù)中問(wèn)題的上下文,并減少上下文切換。
識(shí)別技術(shù)債務(wù)的一種方法是在VSCode或JetBrains中使用免費(fèi)的Stepsize擴(kuò)展,這些擴(kuò)展與Jira、Linear、Asana和其他項(xiàng)目管理工具是集成在一起的。
這是開(kāi)始收集代碼庫(kù)中的所有關(guān)鍵技術(shù)問(wèn)題的快速方法。
步驟2:識(shí)別工具
不要低估使用適當(dāng)?shù)墓ぞ邅?lái)管理技術(shù)債務(wù)的力量。一些技術(shù)團(tuán)隊(duì)可能沒(méi)有使用任何工具,或者使用正確的工具或使用過(guò)時(shí)的工具。這些場(chǎng)景是合理的,在確定要包含在技術(shù)債務(wù)提案中的工具時(shí)需要考慮這些情況。
對(duì)于許多團(tuán)隊(duì)來(lái)說(shuō),實(shí)施正確的工具可以解決和防止大量的技術(shù)債務(wù)。但是,工程團(tuán)隊(duì)需要證明使用特定工具的成本的合理性。
選擇工具時(shí),你需要問(wèn)自己以下問(wèn)題:
·哪種工具能提供最佳功能來(lái)解決團(tuán)隊(duì)的問(wèn)題?
·實(shí)施特定工具會(huì)有什么影響?
·工具成本是多少,是否有更便宜的選擇可以解決你的技術(shù)債務(wù)問(wèn)題?某些工具需要特定設(shè)置,但是這些設(shè)置你的技術(shù)團(tuán)隊(duì)可能尚未準(zhǔn)備好,或者工具需要自托管,這會(huì)帶來(lái)額外費(fèi)用。
一旦你認(rèn)為你已經(jīng)找到了合適的工具,請(qǐng)確保在你的技術(shù)債務(wù)提案中包含上述問(wèn)題的摘要。此摘要將幫助CTO、團(tuán)隊(duì)主管和管理層更好地了解你選擇特定工具的原因。
有很多工具可以幫助你處理技術(shù)債務(wù),以下一些示例。
1. 持續(xù)集成(CI)工具,可以幫助團(tuán)隊(duì)保證其代碼的質(zhì)量。CI工具可以強(qiáng)制執(zhí)行編碼標(biāo)準(zhǔn)并執(zhí)行復(fù)雜類(lèi)型的測(cè)試,例如集成測(cè)試或端到端測(cè)試,以便為開(kāi)發(fā)人員團(tuán)隊(duì)提供對(duì)其代碼的信任。
2. 靜態(tài)分析工具(如SonarQube),用于分析源代碼以尋找技術(shù)債務(wù)。這些工具使用定量數(shù)據(jù)來(lái)幫助開(kāi)發(fā)人員識(shí)別代碼庫(kù)中可能存在技術(shù)債務(wù)熱點(diǎn)。不過(guò)它們也有局限性,比如,它們不會(huì)幫助你識(shí)別跨越代碼庫(kù)多個(gè)部分的中型到大型債務(wù),也不會(huì)為你提供真正理解每一筆債務(wù)以及如何優(yōu)先考慮并最終解決它所需的上下文。
3. 前端問(wèn)題跟蹤器工具 Stepsize ,可幫助技術(shù)團(tuán)隊(duì)跟蹤編輯器中的技術(shù)債務(wù),并將問(wèn)題鏈接到代碼。這些工具對(duì)持續(xù)跟蹤和修復(fù)技術(shù)債務(wù)、提高編碼標(biāo)準(zhǔn)、通過(guò)在編輯器中創(chuàng)建問(wèn)題來(lái)減少上下文切換等都會(huì)有幫助。
步驟3:設(shè)置指標(biāo)并定義基線
接下來(lái),你需要??定義指標(biāo)??來(lái)證明成本的合理性。指標(biāo)允許你衡量技術(shù)債務(wù)提案的有效性,尤其是你選擇的工具的有效性(例如,你選擇的工具無(wú)法根據(jù)你正在測(cè)量的指標(biāo)解決你的問(wèn)題)。它允許你干預(yù)和重新調(diào)整你的技術(shù)債務(wù)提案,或?qū)ふ也煌墓ぞ邅?lái)解決你的問(wèn)題。
換句話說(shuō),擁有指標(biāo)可能會(huì)讓你避免在不正確工具上浪費(fèi)大量的金錢(qián)。而且,添加不正確的工具會(huì)進(jìn)一步增加技術(shù)債務(wù),因?yàn)槟愕墓こ處煴仨殞W(xué)習(xí)他們不熟悉的新工具。下面是可以為持續(xù)集成示例定義指標(biāo)的快速列表:
·測(cè)試覆蓋率百分比
·與編碼標(biāo)準(zhǔn)相關(guān)的問(wèn)題數(shù)量
·在生產(chǎn)環(huán)境中發(fā)現(xiàn)的錯(cuò)誤數(shù)
·軟件工程團(tuán)隊(duì)的功能吞吐量
·修復(fù) Bug的平均時(shí)間
特別提示:不要忘記設(shè)置基線。如果沒(méi)有基線,就無(wú)法確定你的技術(shù)債務(wù)提案的有效性。
步驟4:尋找解決技術(shù)債務(wù)的其他方法
雖然工具可以快速解決技術(shù)債務(wù),但也要看看其他解決技術(shù)債務(wù)的方法。
通常,你可以將實(shí)現(xiàn)新工具的建議與其他計(jì)劃,如重構(gòu)周或?qū)嵤┬滦蜁?huì)議(如??回顧會(huì)議??)相結(jié)合。
重構(gòu)周為你的團(tuán)隊(duì)提供了所需的喘息空間,以重新評(píng)估代碼庫(kù)并確定他們想要解決的關(guān)鍵問(wèn)題。除此之外,它可以用作重啟實(shí)施新的工具以進(jìn)一步減少團(tuán)隊(duì)的技術(shù)債務(wù)。
其他潛在的計(jì)劃是分享會(huì)議,團(tuán)隊(duì)成員分享有關(guān)代碼庫(kù)的知識(shí)或教授其他團(tuán)隊(duì)成員有關(guān)新技術(shù)的知識(shí)。這完全取決于你的團(tuán)隊(duì)所經(jīng)歷的??技術(shù)債務(wù)類(lèi)型??。
結(jié)論:保持警惕!
一旦你的團(tuán)隊(duì)解決了技術(shù)債務(wù),就不要讓技術(shù)債務(wù)再次降臨到團(tuán)隊(duì)身上。因此,請(qǐng)繼續(xù)衡量你設(shè)置的指標(biāo)。除此之外,你還可以創(chuàng)建一個(gè)計(jì)劃來(lái)衡量其他指標(biāo),以更好地了解團(tuán)隊(duì)績(jī)效以及技術(shù)債務(wù)的積累方式。簡(jiǎn)而言之,技術(shù)債務(wù)是一個(gè)令人討厭的怪物,可以隨時(shí)迅速回歸。保持警惕!
譯者介紹
朱鋼,51CTO社區(qū)編輯,2021年IT影響力專(zhuān)家博主,阿里云專(zhuān)家博主,2019年CSDN博客之星20強(qiáng),2020年騰訊云+社區(qū)優(yōu)秀作者,11年一線開(kāi)發(fā)經(jīng)驗(yàn),曾參與獵頭服務(wù)網(wǎng)站架構(gòu)設(shè)計(jì),企業(yè)智能客服以及大型電子政務(wù)系統(tǒng)開(kāi)發(fā),主導(dǎo)某大型央企內(nèi)部防泄密和電子文檔安全監(jiān)控系統(tǒng)的建設(shè),目前在北京圖伽健康從事醫(yī)療軟件研發(fā)工作。
參考鏈接:https://dzone.com/articles/the-engineers-guide-to-creating-a-technical-debt-p