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