Fight the Future

Java言語とJVM、そしてJavaエコシステム全般にまつわること

ソフトウェア開発では常に規模の不経済が適用されるってことを忘れるな!

規模の不経済って言葉はマコネル先生のソフトウェア見積り―人月の暗黙知を解き明かすで出てきた。
10倍大きいシステムは10倍の工数が必要かというと、必ず10倍以上になるって話。
大きなグループになるほど、より多くのコミュニケーションが必要になるから。
2人だとコミュニケーションパスは1本。3人だと3本。4人だと6本。n人だと[n * (n - 1) / 2]*1本。
2人から4人は倍だがパスは倍どころじゃない。


(プロジェクト)マネージャであれば、規模の不経済は絶対に頭に入れておかなければならない。
つまり、ソフトウェア開発はいかに少ない人数で作れるかが勝負だ。
そこに納期という制限がある。納期までに作るために最も人数を少なくするにはってのを考えなきゃならない。
少なくするためには、メンバーが優秀である必要がある。
プロジェクト成功のキーは当たり前の結論だけど「人」だ。
優秀ってのは技術だけじゃないけど(もちろん技術も大きな割合だ)。


でも悲しいかな。渡り歩いたプロジェクトではまだまだ単に人を増やせばいいって判断が多いなあ。
何人いる、とか。
もちろん僕自身も優秀なわけがない。人数中心のプロジェクトではなく、人中心のプロジェクトに入れるように、磨き続けなければ。

ソフトウェア開発においては、チームメンバとのコミュニケーションが重要なのである。
ソフトウェアチームにおけるもっとも大きな課題は、他のメンバが何をしているかをチームメンバ全員が確実に理解することである。
そのため、チームサイズが大きくなるにつれて、生産性は低くなるのである。

Martin Fowler's Bliki in Japanese - 優れたほうが安い説

アジャイル開発がこの効果を一層加速させる。
優れたチームは、平均的なチームよりも速いスピードで開発サイクルをまわすことができる。
これにより、チーム全体が、構築、評価、最適化の選択肢をより速く見つけることができる。
この高速化によって、より良いソフトウェアを構築できる。結果として、より高い価値を生み出すことになる。

Martin Fowler's Bliki in Japanese - 優れたほうが安い説


優秀なエンジニアが生産性が高いって証明はできないんだよね。。。
プロジェクト失敗のコストに比べれば、安いもんなんだけどね。

雇用者は、高価なプログラマが実際に生産性が高いという客観的な証拠を持っていない。
コストが高いということだけが客観的だ。
結果として、雇用者は、価値が高いという主観的な判断と、コストが高いという客観的な判断とに折り合いをつけなければならない。
多くの雇用者は、個人的に優れたプログラマに価値があると信じていても、マネージャや人事部や購買部に対して、そのコストの全額を正当化する覚悟ができないのである。

Martin Fowler's Bliki in Japanese - 優れたほうが安い説

*1:数学で習ったコンビネーションってやつだ。nC2←2は小さい