ソフトウェア開発における知の整理・体系化と伝承
―JSQCソフトウェア部会「遺言」プロジェクト―
(社)日本品質管理学会ソフトウェア部会前部会長
兼子 毅
4.ソフトウェア部会形式知化プロジェクト生産物の構造
議論の結果『メイン目次』とされたものの表題のみを示す。
- 1)物事の真実・原因をつかむ方法を考えたい
- (ア)現地現物
- (イ)原因分析
- (ウ)レビュー
- 2)対象をモデル化して問題解決の方法を考えたい
- (ア)システム化対象のモデリング
- (イ)開発プロセスのモデリング
- (ウ)組織設計のモデリング
- (エ)モデル化と推定
- 3)人に動いてもらう方法を考えたい
- (ア)コミュニケーション
- (イ)育成
- (ウ)仕組み
現在のソフトウェア開発に置いて重要な「知」は、以下のような三種類に大別できる、というメッセージだと受け取って欲しい。
- 1)問題解決(日本的品質管理の考え方・実践)
- 2)モデリング
- 3)人
開発対象が硬いか柔らかいかにかかわらず、日本的品質管理における問題解決の考え方や実践は、極めて重要だ。どうもソフトウェアの開発をされている方達は優秀なひとが多いようで、話を聴いて、頭の中で思考実験をして、簡単で有効性がはっきりしたものだけを「やってみたいな」と思う、そういう方が多い気がする。地道にデータを集めるなどというようなことは、どうも苦手ではないだろうか。そのくせ、どこかの雑誌の特集などで「次世代のなんとか」というような特集を見ると、すぐに飛びつく。ちょっと試してみて、直ぐに効果が出ないと、さっさと諦めて次を探す。
もう一度「事実に基づく」という言葉を考えなおしてみて欲しい。これは、「事実」と「感想」が常に分離できる、ということだ。そして、「感想」を裏打ちする「事実」を集めるのではなく、「事実」を説明する「仮説」を懸命に探し出す、という態度だ。一般的に優秀な技術者や管理者は、ある「事実」を見つけると、その「事実」の原因となる問題を、過去の経験などから即座に引っ張り出し、その「原因仮説」を補強する「事実」だけを集めて眺める、という極めて厄介な癖を持っている。これはおそらく、人間そのものが本質的に脳の中に持っている思考パターンだ。それがいつでも自在に使えるからこそ、あまり世の中が変わらないという前提では、問題解決能力が高い優秀な人、と周囲から思われる。このような人は、未知の問題に出会ったときに、いきなり破綻する。しかし、その時には結構偉くなっていることが多いので、その発言には権威があり、組織全体がその破綻にお付き合いすることになってしまう。もう一度「事実に基づく問題解決」を学び直して欲しい。
モデリングに関しては、様々なソフトウェア工学の教科書を、まずは勉強して欲しい。我々が集めた「知」は、その上手な使い方、である。
最後は「人」である。最初の方で述べた「実世界の本質的非論理性」に対処するためには、「人」のコミュニケーションの質向上しか方策がないように思える。コミュニケーションにおける「記号(=文字や言葉)のやりとり」と「情報・知識のやりとり」を、もう一度考え直し、研究する必要がある。「あれ、よろしく」という一言で、相手が全てを理解し、こちらが期待することをすべてやってくれる、というのはいったい何故なのか。どうすれば、そのような関係になれるのか。逆に、そのような関係にないことを「お互いが理解する」ためにはどうすればよいか。どのようなコミュニケーションの作法が必要とされるのか。
ある人から尋ねられた。「一緒に飲みに行く」ことが有効だということは皮膚感覚的に分かるし、いろいろな人も言っている。では「一緒に飲みに行かない」ときでも、同じような効果を上げるためにはどうすればよいのか、と。私たちは、二つの方向から問題を解かなければならないのだろう。「仕事の文脈で、どうすれば『仲良く』なれるのか」という方法論、そしてもうひとつは「『仲良し』でなくても良好なコミュニケーションを維持する」方法論である。特にオフショア開発の問題などを考える上では、真面目に後者を考える必要がある。
5.知識伝承の難しさ
近年の開発では、業務が細分化され、それぞれ専門性が高まってきているが、同時に「これは自分のこととは関係ない」と、他者の経験を「学ぶ」姿勢が希薄になってきている。これは想像力が欠如しただけなのかもしれないが、忙しい現代の開発者に対し、自分にとっての問題であると興味をもたせることが極めて重要である。また、体系化されていない「知」をどのように「教える」のかは極めて難しい問題で、「経験しなければ分からない」というだけでは物事の解決にはならない。
一般的な教育の理論では、新しい事柄を教えるときに、生徒側の情報処理が多ければ多いほど、定着しやすい、と言われている。目で追うよりは、声を出して読む、それよりはノートに書き写す、というように、同時に多くの情報処理が行われる方法のほうが、記憶に定着しやすいということである。最も脳を活発に使うのは「考える」ということだ。何かを教えたいと思ったときに、どうすれば生徒に「考え」させることができるか、が教える側のポイントとなる。
人材育成では、「自分で考えることができる」という目標を立てて欲しい。「考える」ためには「知識」が必要だ。家を建てる時のレンガのようなものだ。しかし、多種多様なレンガを持っていたとしても、家はできない。それらを組合せ、場合によっては加工し、手元にない場合は漆喰を固めて応急的な塊を作ることも必要だ。知識を組合せ、場合によっては仮説を立てることもあるということだ。
それらを組合せ、構造を築かなければならない。その構造がいい加減なら、すぐ崩れてしまう。論理的な思考が極めて重要、ということだ。その前に、そもそもどのような家を立てるのか、事前にイメージできていなければダメだ。言い換えれば、どのような問題を解決しようとしているのか、目的が見えていないと論理を組み立てられない。
最後のメッセージは、結局「考えろ」という言葉になった。普段の暮らしでは、あまり考えなくても済むようになっている。脳は、そのように、多くのことを習慣化して省エネ、はやりの言葉で言えばエコなのである。しかし、新しい状況や問題に直面したときには、「習慣化された行動」だけでは解決できない。その時には一気にエネルギーを投入して「考える」しかないのだ。その時には大量のエネルギーを消費するかもしれないが、良い答えを得ることができたのなら、その後はまた省エネで進むことができる。
部下に「考える癖」をつけてあげること、これが最も優れた人材育成の方針ではないか、と思う。