生産性5倍の壁(と組織全体としての利益)

Joelさん曰く、マイクロソフトではプログラムマネージャ1名に対してプログラマが5人っていう編成だったそうで、そう考えると、生産性には5倍の壁があるんじゃないかと思った話。

プログラマの延長がプログラムマネージャでもないし、プログラムマネージャはプログラムを知らなきゃいけないなんてことはない。けど、マネージャはプログラムを知ってた方が仕様を決めやすいし何より話が早い。ということで、とあるプログラマがプログラムマネージャへの転向を目指すべきか、プログラマとしてプログラムを続けるべきかの判断について、簡単に考えてみます。

彼(以後面倒なので、仮に子飼さんとしておきます。)の元に集まった5人のプログラマは全員とも並級のプログラマである場合、生産性を何らかの形で定義したとして、チーム全体の生産性は

5*100%=500%

となります。はい、難しく考えない、単純にどうぞ。

ここで、子飼さんは通常の3倍の生産性を誇るプログラマだったとします。が、子飼さんはプログラムを作りません。チーム全体の生産性は500%です。子飼さん一人がプログラマとして働いても高々300%の生産性しかありませんが、子飼さんがマネージャとなることで、500%の生産性を生み出すことができたわけです。生産性が向上しました。

じゃぁ、子飼さんが通常の10倍の生産性を誇るスーパープログラマだったとします。もちろん、子飼さんはプログラムを作りません。チーム全体の生産性は500%です。子飼さん一人がプログラマとして働けば(雑用その他はあるにしろ)1000%の生産性を子飼さんは弾き出すかもしれないのに、生産性は500%です。はい、生産性が低下しました。

つまり、チームを組むべきか一人でがんばるべきかは、子飼さんの生産性が通常の5倍を境に切り替わるわけです。チームとして働かない決意ならば、他の人の5倍以上の生産性を見出さなければ、組織全体としては生産性が落ちてしまうわけです。単純に、ですよ。これが、生産性5倍の壁です。

じゃぁ、生産性が5倍未満だからお前はマネージャを目指すべきかというと、そうでもありません。プログラマとして低級のメンバしか集まらなかった場合、例えば生産性が通常の半分だった場合、チーム全体の生産性は250%に落ちてしまうわけです。「腐ったメンバを率いるくらいなら、自分で書いた方がマシだ」って状況です。逆に、通常の3倍の優秀なプログラマが集まるチームでは、その生産性を凌駕するためには通常の15倍を誇る超スーパープログラマじゃなきゃなりません。通常の10倍程度の並のスーパープログラマなら、マネージャに転向するのも考慮に入れてもいいかもしれません。

つまり、優秀なプログラマがマネージャに転向すべきかは、チーム全体の質によるわけです。

無視した前提としてトラックナンバーやメンバの育成、一人で動く場合の雑多な作業とかもあるから、単純に一人ならいいってわけでもありません。一人だと行き詰ったときにどーしようもないし。また、腐ったプログラマ相手だとコミュニケーションも破綻する心配もあるから、単純にチームを組めばいいってもんでもありません。優秀なプログラマなら優秀なマネージャになれるとも限らないし。第一、生産性っていっても単純に数値化できるものでもないし、例えば取り扱うドメイン、仕様とか言語とかフレームワークとかによって生産性は極端に変わります。とまぁ、日本的な企業だとこの辺の判断は上級マネージャの仕事になると思いますが、人月商売やってる限りじゃ不要な判断でしょうね。(と、いちいち毒付く俺の性根ってwww)

組織全体としての利益では…

契約金額が1000であり、500の仕事がある案件に対して、2つの組織を考えます。

  • 生産性が100で給料が100である5人のプログラマと、給料が200であるプログラムマネージャ
  • 生産性300で給料が200、しかもセルフマネジメント可能な2人のお買い得プログラマ

を比較すると、前者のコストは700、後者のコストは600であって、後者には400の利益が期待できます。全然本気じゃねーのにな!

ところが、せっかく優秀なマネージャに転向できる能力があるプログラマが2人もいるんだから、同じ金額で同じ規模の仕事をもう一つ入れましょう。欲張って、契約金額が2000で、1000の仕事がある案件を取りました。優秀なお買い得プログラマは滅多にいませんが、並のプログラマは幾らでも調達可能です。

  • 生産性が100で給料が100である10人のプログラマと、給料が200である2人のプログラムマネージャ

という体制のコストは1200です。利益がなんと800!倍増ですよ!お父さん、どうしよう!あれ?コストは1400で利益は600ですよ!あちゃー。でも利益は増えるよね。

というわけで、組織として考えた場合、可能な限りチームを編成して、仕事をバンバン入れてあげた方が喜ぶわけですよ。

って、単純すぎて申し訳なくなってきたwwwwこれでいいんだろかwwwww