技術的負債(Technical Debt)

先日参加したBayXP Meetingにて、座長のJeffreyがCruiseControl 2.8について「新たな付加価値はゼロだけど、リリースした」という話をしていた。Jeffryのブログ「CruiseControl 2.8 Released」を読むと、そのココロがわかる。

This release felt like we were paying off technical/hygiene debt at the same time, at least in a small way. Not major refactorings, just lots of small changes to make things better.

  • 大規模なリファクタリングではないが、細かい変更をたくさん加えた。
  • 「技術的負債(technical debt)」をちょっとだけど返済したようなもの。

技術的負債というのは、「動いているし、今は問題はないけど、今後の機能追加や拡張の際に足をひっぱりそうな設計・実装」と思ってよい。そして、放置しておくと「利息」がたまってくる。無理に無理を重ねて機能追加したコードってのは、どこかの時点で保守不能になりがちだ。

そうならないように、予防措置として技術的負債を返済していく。それも一気にではなく、持続可能な速度で継続的に...

学ぶべき点は多いと思うんだけど、契約ベースで仕事を進める文化では無理かも。

  • 契約に技術的負債を減らすための継続的保守を盛り込む。
  • 契約ベースで開発する現場は、技術的負債を返すことができず、職場は荒んだままになる。

ま、後者だろうな...