技術債
影響
技術債會造成修改或擴展系統的困難,使得花費的 CoC(Cost of Change)
擊開發團隊的士氣,若技術債不斷地累積,程式將變得難以修改,導致開發團隊開始氣餒、鬱悶,而當償還全部的技術債不再是兩三天就能完成的任務時,開發團隊的士氣會受到更深一層的打擊
種類
程式碼
靜態程式碼分析工具的違規,Coding Style不一致
註解
忽略編譯器所顯示的警告,那可能是淺在的未爆彈
設計
壞味道和違反設計原則
測試
忽略測試案例
文件
不要讓它失控
由資深開發人員評估
分析技術債是否有消弭的必要性
排定時間實作,消弭
為什麼會有
時程壓力
為了搶市
缺少優秀的程式設計師
人月神話裡面說「研究顯示,高手與庸手的表現有著極大的差異,而且往往是一個數量級的表異。」
沒有遵守原則
如果開發人員不懂設計原則或沒有實踐過設計原則的經驗,寫出來的程式碼往往難以修改及擴展
沒有重構
壞味道可以顯示出設計在結構上的品質有問題,會帶來技術債,即時地重構,可以消除這種壞味道,可是,如果開發人員不懂也不進行重構,那麼技術債就會隨著時間越積越多。
沒有Code Review
經驗不足的開發人員往往不知問題在甚麼地方,需要由資深的開發人員進行Code Reviw,但往往資深的開發人員不願意做這件事
團隊應該固定時間進行Code Review
主管不在意
一個團隊的文件是由主管決定,替團隊建立好習慣,能帶來極大的效應;反之,若團隊的養成了壞習慣,也很難拋棄
主管扮演著團隊文化的關鍵人物
要不要還
看情況
人月神話裡面有說到「現代軟體系統中都少不了的天生特質:複雜性、配合性、易變性、隱匿性。」,這種天生特質導致軟體設計本質上的困難,為了解決這個難題,我們必遵循良好的設計方式,而技術債就是因為做了不良的設計決策所帶來的其中一種結果,因此消弭技術債將有助於我們解決軟體設計的困難。
為了搶市而有意留下的技術債,在產品確認有其市場時,應該儘快安排資源還債,以確保後續的產品開發不會因為技術債而受到拖延
不影響產品的開發,這類的技術債可以延後償還,甚至不償還都沒有關係
怎麼還
在償還技術債的選擇也應該從利息最高、影響開發最深的開始處理