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