「反省」の落とし穴

 「なぜ同じ間違いをするのか」

 「前回の反省会で、その問題の原因が明らかにされたのではなかったのか」

残念ながら、上のやり取りは開発組織の中で、よく見掛ける光景です。

 どうして要求が漏れたのか?

   取り掛かりが遅れたため、顧客との打ち合わせの時間を多くとれなかったから。

 どうして納期が3ヶ月も遅れたのか?
   インプリメントの段階で、主機能の要求が変わったから。
   新しいOS環境に慣れるのに意外とてこずったから。
   一部を外注に出したが、そこで分担モレが生じてしまったから。

 どうして、プログラムサイズがオーバーしたのか。

   設計段階でレビューができず、どのように設計されているかチェックできなかったから。

 この種のやり取りが、「反省会」の場で行なわれます。そこで明らかにされる「原因」は、決して的を外してはいないのです。でも、それで原因が取り除かれることは殆どないのも事実です。それは一言でいって「反省」に終わっているからです。

  失敗のトレーニング?

 反省会の場で行なわれているのは、皮肉にも、「失敗のパターン」を何度も何度も焼き直し(レジストし)ているだけで終わっているということです。彼らは、失敗しようとして失敗したのではありません。その方法しか知らないのです。それしか思い付かないし、それしか見たことがないのです。そしてそれをやっていったところが、納期が遅れる結果となったのです。途中、彼等には「選択肢」はありません。

 彼らには、“ここでもう一度顧客と念のために打ち合わせをやっておこうか、それとも、このまま設計に入ってしまおうか”という選択肢は無かったはずです。ある程度、この種の「反省」を何度もやらされている人は、“再度顧客と打ち合わせの機会を作った方がいい”と感じていても、それは「選択肢」のレベルではありません。打ち合わせをするための適切な資料は、その時点では存在していないし、今からそれを作る時間となれば、それこそ確保できないわけです。こうして“気にはなりながら”も、そのまま設計作業に突っ込んでいくのです。それしかないのです。

 そうして、再び顧客の要求モレが発覚し、その修正のために納期が遅れるといった結果になるのです。同じことの繰り返しです。その後の反省会では、1年前と同じ「原因」が、ボードに書かれることになるのです。まったく同じでは格好がつかないので、先方の窓口の担当者が替ったとか、こちら側のメンバーに新しい人が2人も入って来た、というように、多少は修飾されると思いますが、根本的なところは何も変わらないのです。

 なぜ、こうなるのか。

 それは、先の反省会で行なわれた行為は、「失敗のパターン」の焼き付け行為に過ぎなかったからです。

  バグの報告書も同じ

 同じことが「不具合報告書」にも見ることが出来ます。そこでは発症のメカニズムが「再現」という行為を繰り返しながら、何時間もかかって追及され、ようやく掴んだ仕掛けが「原因」として書かれ、それを修正したことが記されています。

  修正前の設計書に基づいてパラメータを渡してしまった。
  事前の打ち合わせミスによって、同様の関数が複数個作られてしまったことによる・・
  テスト・データが十分でなかった。
  入力されるデータの取り得る値の確認が甘かった。

といった具合に、上手く行かなかった「パターン」が書かれています。というより、それしか書かれていません。これも結局、「失敗のパターン」をレジストする結果となり、問題の解決には繋がらないのです。

 このようなことを防ぐために、「不具合報告書」に「所見」の欄を設け、担当者やリーダーが、「この事態をどのようにして避けるべきだったか」「次の機会にはどうするか」というように、「上手く行く為のパターン」を書くことが必要なのです。体に染み付いた「失敗のパターン」を消すためには、それ以上に「成功のパターン」をレジストしなければなりません。もちろん、この時点では「成功」の確証はないのですから、「上手く行くはずのパターン」と言うことになります。

 そこで考えた「上手く行くはずのパターン」で、簡単に上手くいかないかも知れません。でも、大事なことは「上手く行くこと」をイメージすることであり、その分「失敗のパターン」を薄めることです。不具合の数だけ、そしてその度に「次の時はこうしよう」ということを考えているうちに、現実的にものが見えるようになってきます。

 100件バグがあれば、100回考えることになります。100件あっても、パターンは10〜20です。したがって、同じパターンに5〜10回出くわすわけで、そのとき、所見の欄に「不具合#79と同じ」と書くようでは、この人は、将来の見込みがないと言うことになります。不具合報告書の「原因」の欄には、毎回「失敗のパターン」を書いているのに、それを打ち消すための「成功のパターン」は「不具合#79と同じ」では、事態が変わるはずがないでしょう。

  本当の原因を掴んでいるか?

 不具合報告書にしても、反省会にしても、本当の「失敗の原因」を掴んでいるか、ということも問題になってきます。「原因」と言うのは、それが改善されれば症状が出ないものです。しかしながら、本当の「原因」が他にある場合、それに気付かなければ症状は改善しません。

例えば、上の例で、

  設計段階でレビューができず、どのように設計されているかチェックできなかったから。

と言うとき、対策としては、これをひっくり返した形でまとめられることがしばしばあります。つまり、

  次回は、設計段階でちゃんとレビューをする。

というものです。

 しかしながら、このレビューが出来なかったことは、実は「原因」ではないかもしれません。もし、それが「原因」であるという場合は、「レビューが出来たのに、しなかった」ということになります。それなら、「次回はちゃんとレビューす」れば、この事態は改善されるはずです。でも、実際にはそのようなことは殆どなく、「レビューしようと思っても、出来なかった」のです。したがって、このような場合、「次回はちゃんとレビューしよう」では「成功のパターン」にならないことを認識してほしいのです。

 「反省会」は、そこで提案された「改善案=本来は成功のパターンになる」が、単に「失敗のパターン」を裏返しただけのものか、本当に「原因」に触れるものであるかどうかを議論する場でもあるのです。そうして、それが上手く行きそうだとすれば、何度も「レジスト」して焼き付けることです。

  普段から「成功のパターン」を繰り返す

 上に述べたことが、自然に行動として出るためトレーニングとして、普段から「上手く行ったパターン」を繰り返しイメージ・トレーニングすることです。

 要求の書き方を変えてみたところ、お客さんとの打ち合わせが非常にスムースに運んだとか、バグの報告を受けたあと、「再現」に頼らずに、逆流法でしっかりと推論を働かせて、可能性を絞り込んで上手く行ったとか、設計書の構成を変えたことで設計書が書きやすくなり、結果としてインプリメントやテスト作業が捗ったとか、何でも言いから、「おっ、上手く行った!」ということを文字にするのです。

 「なぜ上手く行ったのか」「何が効果を発揮したのか」を、文字にすることで確かめるのです。そしてそれを人に話すのです。そうすることで、「成功のパターン」を焼き付けることになり、次も同じように上手く出来るのです。組織的にこのような「運動」に取り組む方法もあります。さらには、そのような「事例」を掘り出して、『上手く行ったで賞』として評価することもできます。何も難しいことではありません。上手く行ったことを見つけて誉めることです。

 これは、「評価」についても「上手く行くパターン」を探し、繰り返すことに外ならないのです。多くの組織では、評価は「失敗のパターン」を見つけては、それを一層焼き付けることに精力を費やしているのです。エンジニアがバグを出したことで、自ら「反省」と称してその「失敗のパターン」を焼き付けているのと同じように、「評価」においても、「失敗のパターン」を焼き付けることに力を貸しているのです。こんなことを何時まで繰り返しても、何も変わらないのです。

 組織をあげて、「成功のパターン」を探し、それを評価し、皆で“レジスト”することです。これが、そんなに難しいでしょうか。


「Index of SE の為の講座」へもどる