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

冥冥乃志

ソフトウェア開発会社でチームマネージャをしているエンジニアの雑記。アウトプットは少なめです。

follow us in feedly

チームへの増員にかかる時間的なコストを大まかに見積もるモデルを考えてみる

今まで体感で「ブルックスの法則」について理解していたのですが、まあこんなことでは人を説得というか、増員して形だけでも整えたい鶏を説得することはなかなか難しいですよね。増員の時間的コストについて少しでも理論的なモデルがあれば、説得力を持ってくるのではないかということで、いくつかの元ネタから考えてみました。

正確にコストを見積もることが目的ではなく、このくらいかかることを見込んでいないといけないという話のきっかけや予測のためのモデルなので、細かい変数は無視しています。入る人によっても変わるのではないかと思っています。というか、特定のポジションにいる人たちのためのネタ。あの手の方々はこういうもっともらしい話が大好きですから。

ブルックスの法則

ブルックスはかの有名な「人月の神話」で、人員投下をしてもスケジュールの遅れは取り戻せないという「ブルックスの法則」を提唱しました。内容については以下が詳しいのでそちらをご確認ください。

ブルックスの法則 - Wikipedia

かなり実感を伴って納得する方が多いのではないでしょうか?

タックマンモデル

ブルックスの法則はかなり実感を伴っているのですが、すべてのコミュニケーションコストが0から再構築になるとは思えません。そこでここにタックマンモデルを絡めて考えてみます。

タックマンモデルは、チーム形成の期間と成果の相関関係を見るためのモデルです。チームがチームとして機能するまでには段階があり、それを一つずつ乗り越えていくことによって単なるこの集合ではないチームができるというものです。

kotobank.jp

これも、多くの方が実感を伴って納得されると思います。

モデル

では、実際の算出モデルです。

前提

タックマンモデルで時間とともにフェーズが進行して成果が上がってくる理由を、各コミュニケーションパスのS/N比が大きくなるためであると仮定します。チーム形成がコミュニケーションの質、精度に依存すると考えて良いモデルなのであながち外していないのではないかと。次のフェーズの移行はS/N比閾値を超えることで発生するイメージです。

ここで、1コミュニケーションパスあたりの形成期から機能期に至るまでの時間を T 、形成期から混乱期の期間を Tf 、混乱期から統一期の期間を Ts 、統一期から機能期の期間を Tn とすると、

{ \displaystyle
T = T_f + T_s + T_n
}

となります。

また、コミュニケーションパスの本数を P 、現時点でのチームメンバーの人数を n とすると、

{ \displaystyle
P = \sum_{i=1}^{n-1} i
}

となります。

そして、n人のチームで機能期までS/N比を高めるまでに要した時間的コスト C は、

{ \displaystyle
C = P \times T
}

となります。

なお、チームはフラットな状態であるとします。

増員によって発生すること

では、今機能期まで進んでいるn人のチームがあって、増員をしたいと思っていると仮定しましょう。増員をすることによって発生することが考えられる事象は、以下の2点です。

  • コミュニケーションパスが増える
  • 増えたコミュニケーションパスのS/N比は形成期と同じ

話をシンプルにするために、既存のコミュニケーションパスには影響がないものとしています。

どんなにドキュメントを充実させていてもこれは変わりません。ドキュメントに書かれていない知識ややり方も当然ありますし、「ギョウムマニュアルガー」とかいったところで、そもそも混乱期と統一期にそのマニュアルに相当するものを学習していくのでマニュアルだけあっても無意味でしょう。追加されたコミュニケーションパスについて、機能期まで持っていく時間的なコストがどれだけあるかということをおおよそ見積る必要があるわけです。

増員のケース

さて、m人の増員をするケースを考えてみます。増加するコミュニケーションパスの本数を Pa とすると、

{ \displaystyle
P_a = \sum_{i=n}^{m-1} i
}

で求めることができます。

つまり、単純にm人増員する場合に、チーム全体が機能するまでにかかるコスト Ca は、

{ \displaystyle
C_a = P_a \times T
}

となります。このコストから必要な期間を一番シンプルに求めるとすると Ca/m となるでしょう。

サブチームを形成するケース

次に、m人をサブチームとして増員し、リーダーのみが既存チームとつながるケースを考えてみます。なお、サブチームは新規に形成されるものとします。

当然、サブチームのコミュニケーションパスの本数を Ps とすると、

{ \displaystyle
P_s = \sum_{i=1}^{m-1} i
}

が成り立ちます。

それから、チーム全体として増加するコミュニケーションパスの本数を Pa とすると、

{ \displaystyle
P_a = P_s + n
}

となります。今までの計算と同様に、チーム全体が機能するまでにかかるコスト Ca は、

{ \displaystyle
C_a = P_a \times T
}

となります。この場合に必要な期間はよくわかりません。おそらくサブチームの形成期間の方が長くなるのではないかと思いますが。(そこまでやる必要もないので、面倒になったともいう)

まとめ

上記の通り増員により見込まれるパフォーマンス向上は、増員のタイミングからはかなり遅れることになります。また、元チームの人数や増員される人数が多いほど要する時間的コストが大きくなることもお分かりいただけるかと思います。階層的なチームでも追加されるパスの本数がましになるだけで本質は変わらないこともわかりました。

細かい変数を無視していますので既存のメンバーのS/N比低下をモデルに含んでいませんが、そういう事象が起こることも頭に入れなければなりません。そのため、実際にはこのモデルで表される時間的コストよりもよりチーム形成に時間がかかることになります。

要は何が言いたいかというと、必要になってから増員したのでは遅いわけです。必要になった時にちゃんと増員込みでチームができるようにその前からチーム形成しておこうね、という話にしかなり得ないと思います。もしくは、すでに機能期に入っているチームをサブチームとして編成に加え、コミュニケーションパスの増加を抑えるという形が一番怪我が少ないという話かと。チーム編成を途中から変更するということは、この時間的コストと残り期間と予算のバランスで決めないと意味がないということです。

まあ、だいたいブルックスの法則ってあってますわ。で、未来のいつ必要になるかとかそんな予測は無理ゲーなので、スコープやスケジュールを調整する方がよほどコストが低いというのも納得出来る話ではあります。