概述
代碼寫(xiě)好就交捡硅,意味著欠債的開(kāi)始。稍微欠點(diǎn)技術(shù)債得確可以加快速度盗棵,但前提是事后及時(shí)重寫(xiě)代碼壮韭,如果只借不還,后果很危險(xiǎn)纹因。在不準(zhǔn)確的代碼上所花費(fèi)的每一分鐘喷屋,都算是技術(shù)債的應(yīng)付利息。不穩(wěn)定瞭恰、脆弱的代碼實(shí)現(xiàn)所引發(fā)的債務(wù)負(fù)擔(dān)屯曹,會(huì)使整個(gè)工程組織陷入裹足不前的艱難境地。
團(tuán)隊(duì)和組織在深入了解業(yè)務(wù)領(lǐng)域的同時(shí)惊畏,還要注意償還技術(shù)債;
系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)需要跟進(jìn)以便更好地運(yùn)用這些認(rèn)知恶耽。
技術(shù)債既指我們有意選擇的捷徑,又指許多損害軟件系統(tǒng)的不良實(shí)踐颜启。不合適的設(shè)計(jì):因?yàn)楫?dāng)前所用技術(shù)或業(yè)務(wù)發(fā)生重大改變偷俭,我們之前有效的設(shè)計(jì)變得不再適用。
缺陷:我們已知但沒(méi)時(shí)間解決的軟件中的問(wèn)題缰盏。
測(cè)試覆蓋不充分:有些地方我們明明知道該怎么做更多測(cè)試但是沒(méi)有做
手工測(cè)試過(guò)多:實(shí)際該做自動(dòng)化測(cè)試的時(shí)候我們還在做手工測(cè)試涌萤。
集成和版本管理不善:在做集成和版本管理的時(shí)候淹遵,采用的方式既費(fèi)時(shí)又容易出錯(cuò)。
缺乏平臺(tái)經(jīng)驗(yàn):例如需要某個(gè)技術(shù)负溪,但是相關(guān)人員卻不多透揣。
技術(shù)債的后果
爆發(fā)點(diǎn)不可預(yù)測(cè)
技術(shù)債有一個(gè)特性就是不可預(yù)測(cè)的非線性方式增長(zhǎng)。在原有債務(wù)基礎(chǔ)上增加任何一點(diǎn)技術(shù)債川抡,都會(huì)產(chǎn)生顯著的危害辐真,遠(yuǎn)遠(yuǎn)超過(guò)新技術(shù)債自身的隱含的危害。
交付時(shí)間延長(zhǎng)
承擔(dān)技術(shù)債意味著現(xiàn)在向未來(lái)申請(qǐng)借用工作時(shí)間猖腕。今天的債務(wù)越多拆祈,明天的速率就越慢。
缺陷數(shù)量多
技術(shù)債務(wù)狀況嚴(yán)重的產(chǎn)品變得越來(lái)越復(fù)雜倘感,因而也更難把事情做對(duì)放坏。
開(kāi)發(fā)和支持成本上升
技術(shù)債一增加,開(kāi)發(fā)和支持成本也會(huì)開(kāi)始增加老玛。過(guò)去一直簡(jiǎn)單又便宜淤年,現(xiàn)在變得復(fù)雜又昂貴。
產(chǎn)品萎縮
如果對(duì)老產(chǎn)品停止增加新特性或修復(fù)缺陷使其煥發(fā)活力蜡豹,它對(duì)當(dāng)前或潛在客戶(hù)就會(huì)變得越來(lái)越?jīng)]有吸引力麸粮。最后導(dǎo)致產(chǎn)品開(kāi)始萎縮,不再是大多數(shù)客戶(hù)愿意考慮的方案镜廉。
可預(yù)測(cè)性降低
如果產(chǎn)品確實(shí)已經(jīng)債臺(tái)高筑弄诲,基本上不太可能進(jìn)行任何形式的預(yù)測(cè)了。
表現(xiàn)越來(lái)越差
技術(shù)債越來(lái)越多娇唯,人們預(yù)計(jì)工作表現(xiàn)越來(lái)越差齐遵,進(jìn)而降低他們對(duì)結(jié)果的期望。
挫折感四處彌漫
客戶(hù)滿意度降低
技術(shù)債的起因
如期完成工作
策略性技術(shù)債和低級(jí)技術(shù)債通常都是迫于業(yè)務(wù)壓力而必須滿足某個(gè)迫在眉睫的重大最后期限而造成的塔插。
試圖以錯(cuò)誤的方式提高速率
如期完工的可能性比較小的情況下梗摇,負(fù)責(zé)干活的團(tuán)隊(duì)就會(huì)被要求提高速率,爭(zhēng)取在理想發(fā)布日期前完成所有特性想许。按照這種提高速率工作伶授,團(tuán)隊(duì)必須慎重決策,承擔(dān)技術(shù)債流纹。
誤區(qū):減少測(cè)試可以提高速率
現(xiàn)實(shí)的是減少測(cè)試即增加債務(wù)又減少速率糜烹,因?yàn)閱?wèn)題潛伏得很深,越晚發(fā)現(xiàn)漱凝,修復(fù)所花的時(shí)間越長(zhǎng)疮蹦。
誤區(qū):債累債
舊債如果不還,很快會(huì)累計(jì)新債碉哑。如果一直延續(xù)下去挚币,有效速率會(huì)趨于零的程度。一旦發(fā)現(xiàn)深陷技術(shù)債務(wù)危機(jī)扣典,所有的選擇都是退而求其次的難難選擇妆毕。
技術(shù)債必須加以管理
技術(shù)債和財(cái)務(wù)債一樣,必須管理贮尖。沒(méi)有哪個(gè)產(chǎn)品能夠做到無(wú)債一身輕笛粘,認(rèn)識(shí)到這一點(diǎn)也很重要,鑒于此湿硝,也不建議努力達(dá)到無(wú)債狀態(tài)薪前。即使如此,達(dá)到無(wú)債狀態(tài)的經(jīng)濟(jì)理由也不夠充分关斜。技術(shù)債的管理要求綜合考量技術(shù)和業(yè)務(wù)因素示括。
管理應(yīng)計(jì)技術(shù)債
使用良好的技術(shù)實(shí)踐
管理技術(shù)債務(wù)的增長(zhǎng),第一種方法是停止向產(chǎn)品增加低級(jí)債務(wù)痢畜。使用良好的技術(shù)實(shí)踐是一個(gè)非常好的開(kāi)端垛膝。
對(duì)于積累下來(lái)的技術(shù)債,代碼重構(gòu)是一個(gè)非常重要的減輕債務(wù)的工具丁稀。重構(gòu)用于改變既有代碼主體的一種技術(shù)吼拥,在不改變軟件外在前提下調(diào)整其內(nèi)部結(jié)構(gòu)。
使用強(qiáng)完成定義
有些工作本來(lái)應(yīng)該在構(gòu)建特性的時(shí)候就去做线衫,結(jié)果卻拖到后期才做凿可,它們是產(chǎn)生技術(shù)債的重要根源。我們希望用一個(gè)強(qiáng)完成定義來(lái)指導(dǎo)團(tuán)隊(duì)在每個(gè)沖刺結(jié)束時(shí)給出一個(gè)低負(fù)債或零負(fù)債的解決方案授账。
正確理解技術(shù)債經(jīng)濟(jì)
為了有計(jì)劃地改善技術(shù)債枯跑,我們必須正確理解它是如何影響決策的經(jīng)濟(jì)考量的。
讓技術(shù)債可見(jiàn)
讓技術(shù)債在業(yè)務(wù)層面可見(jiàn)
讓業(yè)務(wù)人員看見(jiàn)產(chǎn)品的技術(shù)債狀態(tài)很關(guān)鍵矗积。
讓技術(shù)債在技術(shù)層面可見(jiàn)
- 缺陷跟蹤系統(tǒng)
- 產(chǎn)品列表里
- 技術(shù)債列表
償還技術(shù)債
并非所有的技術(shù)債務(wù)都應(yīng)償還
- 行將就木的產(chǎn)品
- 一次性原型
- 短命產(chǎn)品