技術的負債について

概要

技術的負債とは、ソフトウェア開発プロセスにおいて、早期の利益追求や短期的な開発速度向上のために、コードやシステムの品質を犠牲にしてしまった状態や、後で修復や改善が必要な状態を指す。
これは、コードの不適切な設計、不十分なテスト、技術的な妥協などによって生じることが多い。

例として、以下のようなコードが積み重なると技術的負債になる可能性が高い。

class a(){
	val b = 2
	var c = ""
	
	getInfo(){
		val p = getPath() + c;
		cp(b, p)
	}
}

Fail

変数名が良く分からない。
ぱっと見て何をしているか分からない。
果たして何をgetしているのか。

モジュール結合度が高いと負債がとても溜まっているとも言える。

蓄積

技術的負債が蓄積すると、次第に開発速度が低下し、バグや障害が増える可能性がある。また、新機能の追加やシステムの拡張が難しくなり、保守性や可読性が低下することもある。
このような状態は、長期的な視点から見ると、開発コストの増加や競争力の低下につながることがある。

解消

技術的負債を解消するためには、コードのリファクタリングテストの改善、適切な設計手法の導入などが必要となる。

成長による技術的負債について

人間は学習していく生き物で、ましてはエンジニアは継続的な学習が特に必要な職業である。
自身が以前書いていた際は最善のコードだと思っていても、勉強していくうちに実はそんなことなかった、という状況がかなりある。プログラムには最善というものがケースバイケースで変化するので、絶対的な銀の弾丸が存在しない。日々、勉強して、成長による技術的負債を貯めていきたいものである。もちろん、貯めるだけでなくリファクタリングも必要にはなるが。