2019年1月23日水曜日

技術的負債は致命的だけど致命的じゃない

ソフトウェア開発の色々な法則について調べていたときのことです。
ふとコンウェイの法則が目に止まりました。

コンウェイの法則とは、
「システムを設計する組織は、その構造をそっくりまねた構造の設計を生み出してしまう。」
という法則です。
これが言いたいことは、例えば官僚主義的な組織がソフトウェア開発を行うと、
出来上がったソフトウェアもどこか官僚主義的になる…という具合です。

コンウェイの法則そのものは前から知っていましたが、
今回は技術的負債と組み合わせを考えついたのです。

技術的負債とは、
「いきあたりばったりの開発を続けていくと、ソフトウェアの保守にかかるコストが、借金の利息のように雪だるま式に増えていく。」
という比喩表現です。

つまり…

  1. 何らかの問題を抱えた組織が、ソフトウェア開発を行う。
  2. コンウェイの法則により、組織の問題がソフトウェアに反映される。
  3. ソフトウェアに反映された問題が、技術的負債を生み出す。
  4. 保守を続けていても、コンウェイの法則がある限り技術的負債が再生産される。
という連想ゲームを考えついたのです。

これが発生してしまうと、表面的な問題は技術的負債ですが、
本当に解決すべきは、開発している組織の構造なのです。
組織の構造が解決されない限りは、
例え技術的負債を一時的に返済できたとしても、
技術的負債はすぐに溜まってしまうのです。

技術的負債を生み出すのはプログラマーのレベルの低さにも起因していますが、
そもそも低レベルのプログラマーしか集められない組織だという考え方もできます。

そう、技術的負債は致命的だけど、本当に致命的なのはそこでは無い…のかも?