かたちづくり

つれづれに、だらだらと、おきらくに

ソースコードとピーターの法則

世の中にはスパゲッティなソースコードが多い。これも一種のピーターの法則かもしれない。

ピーターの法則とは何故世の中には無能な奴が多いのかを説明する法則だ。ある人がある職能で優秀と認められたとする。その人はきっと昇進するだろう。昇進後の職能でも優秀と認められれば、きっとその次の階層に昇進するだろう。こうして昇進を続け、あるときその人に向いていない職能にぶつかり、そこで無能と判定され、昇進が止まる。つまりその人は自分に向いていない職能に留まり続けることになる。こうして世の中は無能な人材で埋め尽くされるというわけだ。

これをソースコードに当てはめてみよう。ソースコードが綺麗に書かれていれば、機能追加においてベネフィットがコストを上回る可能性が高い。従ってソースコードが綺麗であるかぎり機能追加は続くだろう。しかしいつかはソースコードが乱れ、機能追加に限界が来て、進化が止まる。逆にいえばソースコードが汚くなるまで、メンテナンスが限界に達するまで、機能は追加され続けるということ。こうして世の中はスパゲッティなコードで埋め尽くされる、という仮説。

この仮説に従えば、ソフトウェア技術の進化はスパゲッティコードの減少に寄与しないことになる。オブジェクト指向言語が開発され、関数型言語が台頭し、優れたフレームワークが登場しても、その技術の範囲で限界に達するまで機能は追加され続け、スパゲッティになって開発が止まる。新技術は問題を先送りするだけで、世の中からスパゲッティコードを無くしたり減らしたりすることが出来るわけではない。

もちろんこの仮説は決して、他社との競争に勝つためにより先進的な言語や技術を採用しようという選択を否定するものではない。スパゲッティ化の問題を他社より先送りできれば、それだけ競争に勝つ可能性も高まる。ただ、その先進的な技術を元に開発されたシステムもいつかはスパゲッティ状態に達するだろうという仮説にすぎない。

・・・あくまで仮説ですよ?与太話ですよ?一つの思考実験として面白いかな、という程度です。

ではでは、皆さん良いお年を。