100%線の攻防
デマルコ・ナイトの後、ずーっと頭の中でひっかかってたことがありまして。ずーっと考え事してました。
デマルコ氏曰く、「TOCはあくまで生産の効率化を図るためのもの。この場合ゆとりは経営者側がその所有権/実行権を握るため、ソフトウェア・プロジェクトに適用するのは好ましくない」とおっしゃる。講演でも言ってたことだし、「熊とワルツで」で挙げている参考文献にも「必ずしも賛成ではない」ときっぱり明記してあります。
でも。実のところTOC自体も過度の要求をしているという訳ではないんだよな。そもそもTOCの場合100%を超える負荷そのものを「実施不可能」とバッサリと切り捨ててる訳だし。「過負荷」という観点に関していえば、両者の主張はかなり似通ってる、というかほぼ同じと決め付けてしまっても構わない位。
じゃあどこからTOCとゆとりの両者には違いが出てくるんだ・・・?そのきっかけとなるのはどこ・・・?
答えを求めるべく、ちょっと書籍漁ってみました。以下今回の参考文献。
- TOC
- デマルコ&リスター
- その他アジャイル関係書籍も随時拾い読み
その時間と集中力を本業に向けろと袋叩きにあいそうですが。今はこっちの方が大切(開き直り)。
まぁいろいろと視点が見えて有意義でしたよ。個々の文献に関してはまた時間あるときにでも稿を改めて書いてみたいと思いますが、今回はこの両者の着目点の違いに話を絞らせてくれぃ。あ、あとTOC云々の説明とかもここでは省きますんで。各々で調べれ。ひでぇな>俺。
で、「両者似通ってる」という点に関してはどうやらだれしもが思うことのようでして。現に解説書である「最速で開発し最短で納めるプロジェクト・マネジメント」の中では、参考文献として思いっ切り「ゆとりの法則」が取り上げられてますし。少なくとも上でも挙げたとおり、「負荷が100%を超えた状態」に関しては両者とも言ってることは同じと考えていいような気がしてきます。
ただ、問題はその後なんだよな。「負荷が100%を切った状態」に関して言えば、TOCの考え方って踏み込みが甘いな、という風に思ってしまいましたな。デマルコの講演を聞いた後となっては。
まず違和感を感じたのがリソースに対する考え方。生産で言うところの(←ここ重要)ボトルネックは、ドラム・バッファ・ロープの考え方の基点となると同時に、常にほぼ100%に近い稼働率/効率性を要求されます。100%を超えるなんざ論外だけど、100%を大きく割り込むのもまた問題外。TOCの場合これがあらゆる理論の基底となってる。これに関しては異存はございませんことよね?
ただし、ここで「あれ?」てのが出てくる。「ザ・ゴール」にも出てくるボトルネックとなった工程はいずれも機械が主に仕事をして、人間がそれをサポートする。一方のソフトウェア・プロジェクトの場合は大抵の場合、人が仕事をする。
つーことは、工程ではなく、人がボトルネックになる。言い方変えるならボトルネックの中の人。
そうゆうことになりやしませんかねぇ?ほらそこ「中の人」に過剰反応しない。
機械なんぞに感情はありませんから(一部反論も起きそうな気もしますがここはスルーすんぞ(笑))壊れさえしなきゃいっくらでも仕事はしてくれますが、こちとら人間ですわ。メシも食うし眠くなる、病気になれば動けなくなる。仕事がイヤになっちゃったら辞めちまう。
そこに常に100%近くの稼働率/効率性を要求すること自体に、無理が生じちゃいませんかね?それこそ9ピースのパズル、曲がれない車。
ここで頭をTOCサイドに切り替えてみて、この前提に対する反論点を考えてみましょうか。とりあえず2つ思いついた。
- そもそも無理をさせないためにバッファがあんだろーがどこに目付けてんだテメーは。
- ボトルネックは段階ごとに変わってくるんだよ。その結果従来の作業が過負荷とわかった時点でロープの対象となるだろーが。お前ホントに本読んだんかよ馬鹿。
いや何もケンカ口調にする必要はないんだが>俺。でも反論としては真っ当そう。
ただちょっと考えてみると真っ当に反論に対する反論が浮かび上がってきてしまうんだよね、残念ながら。
まず前者に対しては冒頭のデマルコ氏の引用が全てを物語ってます。ボトルネックの中の人自身にはバッファを使う権利が無い。病欠にしても不意の割り込みにしても「仕方無いからバッファを使おう」という消極的理由でしょ?積極的にバッファを使うことはほぼ許されないです。そんな暇があるんだったらボトルネック作業に手をつけろ、と罵倒されるのがオチ。
あなたもありません?職場で技術本読んでたり、セミナーに行こうとしたら「そんな暇あったら仕事しろ」と言われたこと。下手にボトルネックと認識されてしまうことで、ますます鎖の締め付けからは逃れられなくなるという矛盾を生んでしまいかねないんですな。
一方後者の場合ですけど。ここはちょっと卑怯だけどソフトウェア・プロジェクトの特殊性を使わせてもらいましょ。一般的にボトルネックの中の人ってのは、そのプロジェクトの中でもっともスキルを持った人でもあることが多いと思います。ていうかほとんどそうではないかと。この人の技術/スピード/判断能力がないとこのタスクはこなせない、その判断があるからこそボトルネックの中の人にタスクが集中する訳で。
その状態でTOCの言うように、ボトルネックの移動を生じさせようとするならば、どう行動する必要があるのか。
- ボトルネックの中の人の実力をさらにアップさせることで時間を捻出させる。
- ボトルネック外の人や新しい人を難しいタスクがこなせるように教育または調達し、ボトルネックの中の人にタスクがこないようにする。
いずれも基本ステップでいうところの第4段階、制約条件の強化ですな。多分この2つしかないんです。あくまで人ありきのモノ作りですし。さらにはこのいずれかの手段を講じるためには、ボトルネックこなす能力を持った人が持ってない人に技術なりノウハウなりを、手を止めて伝授する必要が出てくる。
つまり将来のボトルネックを解消するために、現在のボトルネック処理能力を捨てる必要に迫られる。
この矛盾と対峙しなきゃいけなくなると。違います?
逃げることは許されないですよ。だってこの2点、どっちかでも放置しておいたら間違いなくボトルネックの中の人壊れますもん。
そしてもし壊れちゃったら。遅延なんかよりもっとおぞましい結果が待ってますわ。プロジェクトの崩壊。場合によっては組織の崩壊。
十分に予測可能な未来のような気がするんですけどねぇ?
んさてと。
こっからさらにTOC側からの再反論とかやるといつまで経っても終わらなくなっちゃうんで、後はTOCのえらい人とかにお任せして、とっととまとめに入ろうかなと思うんですが。個人的には両方の差異の根底が垣間見られただけでも収穫と思ってますし。
で、まずはじめに一つ言い切っちゃうと。TOCのほうがすごい、いやデマルコだ、そんな比較対象論なんぞ心の底からどーでもいーわ早くこの残業地獄から脱出させてくれというのがおそらく心の叫びのはずなんです。現場サイドからすれば。つべこべ言ってねぇでとっとと医者と看護婦とクスリとベッド寄越しやがれまた一人死人が出るぞ、の野戦病院状態。悪いけど今のソフトウェア業界ってここまで地に墜ちてる、もっとストレートに言えば腐ってると思うんだ。あちこちで死臭がぷんぷん漂ってる。
じゃあテメェのその上100行は一体なんだったんだよというツッコミもでてくるんですが。実はこんなこと考えてたりしてて。
このTOCとデマルコの言うところの「ゆとり」、さらに言えばTOCとアジャイル。これらって掛け合わせできねぇかなぁ?なんてことを考えるんですな。で、更に言うと別にか掛け合わせなんかしなくとも、XPだろうがTOCだろうがとっとと好きなもん使うなりして、まずは「100%以下に抑える」ための緊急止血手術する方が先だろうと。まずは手を打たないと死人増える一方。
で、実際のかけあわせは100%切ってからそん時にやりゃいいじゃねぇかと。ついでに言っておきますとTOCとゆとりとの対立解消図もおぼろげに浮かんできております。多分、「ヒューマンバッファ」みたいなのが鍵を握ってるのではないかと。今勝手に作りましたけど。
おそらくTOCからアジャイル、アジャイルからTOCみたいな横方向への横断も考えて動けば可能なんじゃないのかなぁ?そんな気がしてくるぞ、いろいろと見てると。
まぁ長々と書いてきましたけど、結局最後は、いいと直感できたものを取り込める、味方にできる、そんな能力がモノを言うのかな、と。そんなことを思ったりしますな。うん。
欲張りなだけという説もありますが。それを言うなそれを。