2006-10-24

[][]仕事の効率の最大化 仕事の効率の最大化 - Nao_uの日記 を含むブックマーク はてなブックマーク - 仕事の効率の最大化 - Nao_uの日記 仕事の効率の最大化 - Nao_uの日記 のブックマークコメント

他人との相互作用イコール効率の低下というイメージが私には厳然としてある。人にやらせるより自分でやった方が速いし、人を教育する効果の不確実性は耐え難いものだ。しかし、一定以上の規模になればそうは言っていられなくなる。問題は私がそのような規模に責任を持つ立場になりたいかどうかだ。私が自分の仕事だけで満足して、それが全体の中でどう位置づけられるかに興味を持たなければ下っ端のままでもいいのだが、全体として品質や開発効率に問題がある状況は見ていて腹立たしいわけで、それらの非効率を改善する権限がないことにはやはり苛立ちを覚える。偉くなることを選んだ人はきっとその苛立ちが大きな人なのだろう。

仕事の最終的な目標が「決められた時間内に最大の成果を上げる」ことであると仮定するとして、自分自身の作業効率のみを考えるのなら「他人との相互作用イコール効率の低下」と考えるのは自然。その範囲内で考える分には、他人に仕事を中断されたり、他人の仕事を中断したりするのは非効率な行為となるのだろう。

しかし、多くの場合、仕事の最終的な成果物は自分自身の作業だけでは完結しない。作業する上での目標を「自分自身だけでなく、チーム全体まで考慮したうえで、時間内での成果を最大化すること」にまで広げると、他人との相互作用抜きには成果が最大化できないことに気づく。むしろ、それが自分個人の作業効率の低下に繋がったとしても、他人との相互作用をいかに上手く行うかこそがチーム全体の効率を上げるうえでの最も重要なポイントになってくる。健全な組織であれば、このような改善を行うための権限は、適切なタイミングで行動を起こすことで組織内の役職に依存せずに自然に得られる場合が多いのではないかと思う。

とはいえ、「ものすごく天才的な一人の人間と、その他大勢の全く成長しない凡人」のような編成のチームでは、この考えは成り立たない。チームの人数が少なくて天才な人の作業割合が大きい場合には尚更。たいていの場合、現実はそこまで極端ではない、とは思いたい。そのために自分自身も他人の足を引っ張らない程度に成長していく必要があるのだろうし。

私がやれば1時間で終わることに別のある人が5時間かかるとする。しかしもし私の一時間のコストよりもその人の5時間のコストが安ければその人がやるのが正しい。それが比較優位というものだ。だが、出来たものの品質がそんなコストの問題を吹き飛ばすくらい重要なことは結構ある。結局そのシステムの効率はいろんな人の作業効率に大きな影響を与えるからだ。メッセージウィンドウに出すテキストデータをどう作ってどう読みこんでどう画面に出すか、というような大したことのないシステム一つ取っても、適切なシステムと不適切なシステムの間には天地の開きがある。そして実際今になって私が作り直すハメになっているわけで、だったら最初から私がやるべきだった。だが、それでは人が育たない。

他人の5時間を無駄にした挙句にそれを捨てて自分が1時間で作り直したのでは、下手すると誰も成長できないままにチーム全体の時間だけが浪費される事態に陥る危険がある。たとえ自分が2時間ほど余分な時間をかけてでも、思考の枠組みや設計を示して実装は委ねつつ、できあがった成果物のレビューを行うなどの手段をとることで、自分自身の作業効率は落ちるしそのやり方で100%の成果が出るとは限らないものの、実装者が適切な設計による実装経験を経ることで、チーム全体の長期的な効率を改善することができるのではないか。これを上手く行うには、設計を伝えてレビューする側のコミュニケーション能力も多分に必要とされるだろうけど。*1

自身の作業効率を落としてでもそのような手段をとるべきかどうかの判断基準は、この先同一のメンバーで一緒に仕事をする時間がどのくらいあるのか、に依存する。もし、同じチームで何年も仕事を続ける予定があるのであれば、このような手段をとることでたとえ今現在の効率が多少落ちようとも、長い目で見ればチームや組織が確実により大きな成果を上げられるようになっていくはずだ、と思う。各自の相互作用が働く状況下で効率よく仕事を回していく手法に関しては、それはそれで何かしらうまいやり方を考えていく必要はあるのだろうけど。

何にせよ、自分自身が最大限の成果を上げたいと願い、チーム全員もそのように考えているような状況であれば、長期的な視点での「仕事の効率」を上げるには、各自が自分自身の効率のみを追求するのとはまた違ったやりかたを取るべきなんだろう。

突き詰めて考えれば、最終的にはチームの全員が「各自の能力と責任の及ぶ範囲内で、チームや組織全体が上げられる効率・成果を最大化すること」が目標である、と認識していかなくてはならないはず。プログラマに限った話ではなく。

*1:もちろん、リンク先ではおそらくこのような状況になったどうしようもない様々な事情があったに違いないけど。