技術債

影響

技術債會造成修改或擴展系統的困難,使得花費的 CoC(Cost of Change)

擊開發團隊的士氣,若技術債不斷地累積,程式將變得難以修改,導致開發團隊開始氣餒、鬱悶,而當償還全部的技術債不再是兩三天就能完成的任務時,開發團隊的士氣會受到更深一層的打擊

種類

程式碼

靜態程式碼分析工具的違規,Coding Style不一致

註解

忽略編譯器所顯示的警告,那可能是淺在的未爆彈

設計

壞味道和違反設計原則

測試

忽略測試案例

文件

不要讓它失控

由資深開發人員評估

分析技術債是否有消弭的必要性

排定時間實作,消弭

為什麼會有

時程壓力

為了搶市

缺少優秀的程式設計師

人月神話裡面說「研究顯示,高手與庸手的表現有著極大的差異,而且往往是一個數量級的表異。」

沒有遵守原則

如果開發人員不懂設計原則或沒有實踐過設計原則的經驗,寫出來的程式碼往往難以修改及擴展

沒有重構

壞味道可以顯示出設計在結構上的品質有問題,會帶來技術債,即時地重構,可以消除這種壞味道,可是,如果開發人員不懂也不進行重構,那麼技術債就會隨著時間越積越多。

沒有Code Review

經驗不足的開發人員往往不知問題在甚麼地方,需要由資深的開發人員進行Code Reviw,但往往資深的開發人員不願意做這件事

團隊應該固定時間進行Code Review

主管不在意

一個團隊的文件是由主管決定,替團隊建立好習慣,能帶來極大的效應;反之,若團隊的養成了壞習慣,也很難拋棄

主管扮演著團隊文化的關鍵人物

要不要還

看情況

人月神話裡面有說到「現代軟體系統中都少不了的天生特質:複雜性、配合性、易變性、隱匿性。」,這種天生特質導致軟體設計本質上的困難,為了解決這個難題,我們必遵循良好的設計方式,而技術債就是因為做了不良的設計決策所帶來的其中一種結果,因此消弭技術債將有助於我們解決軟體設計的困難。

為了搶市而有意留下的技術債,在產品確認有其市場時,應該儘快安排資源還債,以確保後續的產品開發不會因為技術債而受到拖延

不影響產品的開發,這類的技術債可以延後償還,甚至不償還都沒有關係

怎麼還

在償還技術債的選擇也應該從利息最高、影響開發最深的開始處理