読者です 読者をやめる 読者になる 読者になる

奇特なブログ

「殊勝に値する行いや心掛け」を意味する、奇特な人になる為のブログです

ブルックスの法則を検証するPart1

今回は、ソフトウェア開発者なら誰でも知ってる(はず)の、
書籍「人月の神話」に出てくる「ブルックスの法則」について、
筆者の現在の実作業を踏まえて、検証してみたいと思います。
結論を先に書きますと、法則は「やっぱり正しそう」です。
ただし、まだプロジェクトの途中なので、何とも言えない部分もあります。
あと、ブルックスの法則について、一応以下に書いておきます。

「遅れているソフトウェアプロジェクトへの要員追加はさらに遅らせるだけだ」

では本題。
現在、筆者はココに書いた増員メンバーの教育(と進捗管理)をしながら、自分の作業をこなしています。
で、増員に伴う作業を加えた上での自分の進捗と、
加えない上での自分の進捗に、だいぶん差が発生しました。
その差、「約1.5(多分この数値が妥当)〜2倍」です。
で、実値は出せないので、実値を「アレンジした(もちろん意味は変わらない様に)」数値を用いて、
詳しく分析してみます。
あと、作業内容も若干ぼかします。

1.増員に伴う作業
1-1.増員メンバーへのプロジェクトの説明
1-2.増員メンバーが書いたソースコードのレビュー
1-3.増員メンバーからの質問や相談の受け付け
1-4.増員メンバーの現進捗と今後の見通しの分析

2.増員しなくても行う作業
2-1.自分担当のソースコードを書く
2-2.自分の現進捗と今後の見通しの分析

この内、1-1は基本最初しか行わないですし、
1-3と1-4は大して時間を食わないと思います。
まあ、1-3は本来、結構時間を食われる気もするんですが、
今回のメンバーの場合は、あまり食われないです(苦笑)
原因が筆者にあるのか増員メンバーにあるのかは、読者の皆様のご想像にお任せしますが(苦笑)

なので、今回のポイントは1-2になるのですが、
これが「かなり時間を食う」のです。
なので、ココを更に詳しく見てみます。

増員メンバーが来た2日間は、
プロジェクトの説明と、教育資料的なモノが既にあったので、
それを見てもらって、不明点を質疑応答する形を取っていました。
で、別に筆者はそんなに急がなくても良いと思っていたのですが、
増員メンバーがソースを書き出すと言うので、
3日目からソースを書き出して、それを筆者がチェックする様になりました。
で、そのチェックなんですが、
最初は慣れていないだろうということで、
作業順序を簡単そうなクラス(作業順序の指定はほぼありません)からにして、
徐々に難しくしていく形式にしました。
具体的には、クラスの中の全てのメソッド(関数)を、難易度別に3つ(低中高)に分けて、
最初の数週間(3週間程度)は、全メソッドを(作業フェーズAとする)、
その次の数週間(3週間程度)は、難易度が中と高のメソッドを(作業フェーズBとする)、
その次の数週間(今ココ)は、難易度が高のメソッドのみチェック(作業フェーズCとする)する事にしました。

で、ポイントである筆者自身の進捗(増員メンバーは進捗「は」全く問題なし)なのですが。
上記の作業フェーズAの時と、作業フェーズCの時で、
筆者の日々の進捗に約1.5倍の差が出たのです。
当然といえば当然です。
フェーズAでは、難易度無関係で「全」メソッドをチェックしていたのに対し、
フェーズCでは、難易度高のメソッド「だけ」しかチェックしていないわけで、
チェック量がかなり減っていますから。

さて、ここからが数字(実値をアレンジしたもの)を使います。

A.増員メンバーの今回の作業量→130
B.筆者の今回の作業量→310
C.上記作業フェーズC(ただしチェックはしていない日)の時の筆者の日々の進捗→10
D.上記Bを消化するのに、筆者に与えられた作業日数→54
E.上記A + B(筆者と増員メンバーの作業量の加算合計)→440
F.上記C * D(筆者が作業期間内の消化可能な見通しの作業量)→540

えっと、EよりFの方が「圧倒的に」多いですね・・・
実際には、ここまで単純ではない(作業日数は多分51ぐらい)のですが、ここまで「圧倒的」だと・・・
しかし、予想はしていましたが、まさかここまでとは・・・
計算を間違えたのではと思ったのですが、やっぱり合っているんですよね・・・

今回の場合、「現時点では」ですが、
増員メンバーが居ても、増員メンバーは勿論、筆者の進捗も問題ありません。
ただし、増員メンバーが「どこまで」理解出来ているかは「微妙」な感じであります。
というか、そこが一番重要な所だと思うのですが。
「教育コスト」というのは、
まず「教えられるスキル(知っている程度では教えられないと予想)」が必要と思いますし、
相手が理解出来ているかどうかは、
相手との「コミュニケーション」と「ソース」でしか判断出来ないと思います。
で、今回の場合、感触としては、
ソースチェックは十分だが、コミュニケーションチェックが不十分な感じなので、
「進捗は問題無いが、品質に問題が発生するかもしれない」懸念があると思います。
また、筆者自身の「教えられるスキル」がそもそもどうかというのもありますが、
「不明点は遠慮せずに、つまらない事でも何でも聞いて下さい」とは、
「口を酸っぱくして」言ってますし、
質問や相談が来た時には、自分で判断出来なければ、更に上席に判断を仰いでますって普通の事ですけど。

まあ、いずれにせよ。
現作業ではなく今後の作業を見越しての増員という可能性は残されていますが、
増員が「マイナスにはなっても、プラスになることはない」ぐらいは、
現時点でも言えるのではないかと思います。
別に、増員者が他の人でも特に変わりませんっていうか、
増員者のスキルが高ければ高いほど、筆者の進捗に悪影響が出るだけだと思います。
まず間違いなくコミュニケーションコストが増えるから。

タイトルの通り、今回はPart1ということで、現時点での印象を書いてみました。
Part2はあるかもしれないし、ないかもしれません(苦笑)