人人月の寓話
2010/03/09 17:00:00
わたしがまだ新人プログラマだった頃、キックオフミーティングで渡された仕事の割り振り表のメンバーの欄に「X」と書かれていたことがありました。
「Xって誰ですか?」と尋ねると「そのうち現れるであろう誰か」という答えが返ってきました。要するにエンジニアを確保するつもりはあるんだけど見つかっていないということです。「ホントに現れるのか?」とわたしは疑っていましたが「X」は現れました。
ていうか、わたしでした。
リーダーから「X」と命名(?)された先輩とわたしは2人でその担当分を片づけることに(もちろん本来の担当分も片づけた)。
「結局見つからないんだったら、最初っからXなんて書かなければいいのに」とグチったら、一緒に担当分を増やされた先輩に「上の人間もぎりぎりまでがんばって探してたんだよ。いないものはいないんだから仕方ない。いる人間でがんばって片づけよう」と諭されました。
その後、さまざまなプロジェクトを経て、いない人を「X」と書いたあのリーダーは正直者だったんだなあ、と思うようになりました(苦笑)。
なんとかして頭数があっているようにみせかけますもんねえ、普通(←簡単にバレるけど)。
それからさらに数年経って、その時点でのリーダーに「X」の話をしたところ、「そうやって頭数を合わせるのも大変だけど、結局のところ重要なのは仕事量を合わせることなんだよ」という話をしてくれました。
リーダー「開発能力は足し算じゃなく掛け算だ。1の仕事ができる人と0.5しか仕事ができない人を組ませると、普通に考えれば1+0.5で1.5だけど、実際には1×0.5で0.5になるんだよ。それなら1の人が1人で仕事をした方がマシ。もしくは0.8が2人で0.64の方がまだ数字がいい」
わたし「でもそれだと、1未満の人は数字を減らすだけだから、いない方がいいってことになりませんか?」
リーダー「うん、そうなる。だから労力と金をかけて人を足すより、できないヤツを引く方がいいってこともある。でも、今は1未満でも育てて1以上にしとかないと将来的に苦しくなるから我慢して使うという判断もある。それでも苦しい時は仕事の割り振りを変えて、掛け算の枠からはずれるように仕向ける。1未満でも足し算にすれば数字はあがる」
わたし「それと、その計算だと1の人はどれだけ集めても1にしかなりませんけど」
リーダー「いわゆる力仕事的なプログラムは話が別だけど、そうじゃないものは1の人間がどれだけ集まっても1の仕事しかできない。おかしいと思うかもしれないけど、そういうもんだ」
わたし「じゃあ、1ってのは一人前って意味じゃないんですね。人の足をひっぱらないレベルということですか?」
リーダー「まあ、そんな感じ」
わたし「これまで、そういうことまったく考えたことなかったです」
リーダー「君はそんなことまったく考えなくていいから、もっと自分の数字をあげておれを楽にしてくれ!」
要するに頭数「X」よりも、その人が持っている能力値の変数「x」の方が、リーダーとしては問題だということらしいです。
仕事量を現す「人月」(=頭数×月数)という言葉がありますが、そのリーダーの計算方法は「人人月」(=能力値×能力値×月数)ということになりましょうか(←「能能月」という言い方もできるけどなんか音の響きがイマイチ)。
人月計算は「頭数×能力の平均値×月数」な考え方なので、1の人が10人いて1カ月だと10になりますが、人人月計算方式でいくと1にしかなりません。これはものすごい差ですね。10の人が1人と1の人が9人で1カ月なら10になりますけど。
チームでシステムを作っている限り、人と人の係わり合いが作業量に影響するというのは自然なことで、この「人人月」理論の方がなじみやすいというか、納得しやすいというか。
評価する人間の考え方や、与えられる仕事内容で、数字はずいぶんと違ってくるでしょうし、そのリーダーだって厳密に部下を数値化しているわけじゃなくって、目安としてそういうとらえかたをしているだけだと思いますけど。
そんなリーダーの話をきいてから、わたしは折に触れ、そのことについて考えるようになりました。
わたしの「x」は今どれくらいなんだろうか。誰の「x」に助けてもらってるんだろうか。誰かの「x」を支えてあげられているんだろか。わたしはわたしの「x」をまだ上げることができるんだろうか。
それを考えたからって何がどうなるものでもないと思いますが、なんだかちょっと気持ちが落ち着くというか客観的になれます。
それに、誰かに「x」を補ってもらいながら、誰かを補う「x」を獲得していく。そうやってエンジニアたちの係わり合いはリレーされていくのだなあ、とか想像すると、なんか楽しい気分になったりしません?(←わたしだけかも)
ところで、そんな話を聞かせてもらった当時は、「1の人間はどれだけ集まっても1」の理由がさっぱりわからなかったんですけど、仕事を続けているうちに、それっぽい現象に何度か遭遇しました。
わたしが観察した印象では、推進力がないんですね。誰かが指示を出してあげればそこそこ仕事はできるんですけど、指示なしではどこに向かっていけばいいのかわからなくて、その場に立ち尽くしてしまう感じです。なるほど、その場に立ち尽くしてしまう人間が何人いても、やっぱりその場から動けないんだなあ、と納得してしまいました。
でも、こういう場合はここに向かえばいい、というパターンをある程度、覚えれば、そういう子たちもいつかは自分から動きだすようになります。それがレベル1からの脱却ということなのかもしれません。
エンジニアの頭数は有限、時間も有限(ていうか常にタイト)です。
けれどプログラマとしての「x」は自力で増やせるのだから、青天井を目指してしまおう! とか元気な時には思ったりします(苦笑)。そして、年で「x」が減った、と定年までは言いたくないなあ、と常に思っているのです。




ひでみ
