海猿メタファー
ウルシステムズ 林です。ご無沙汰しています。また前回から時間が空いてしまいました。今回は前回の続きになるのですが、なかなか書ききれず、放置している間に時間が経ってしまいました。
さて前回は、システム開発の経験のない経営者やマネージャには、現場のエンジニアが当然だと思っていることが伝わらない場合があることを紹介しました。それを抜本的に解決する手段は、IT技術者が技術の言葉もビジネスの言葉も話せるバイリンガルになることだと書きました。
「そう言われても、それでは時間がかかりすぎる。今すぐにもう少し話が伝わるようにならないだろうか」。そう思われた方も多いと思います。「結局、経験しないと無理なんだよ」というのは1つの真理なのですが、現実問題として、経営者やマネージャに「これからシステム開発を経験しろ」と言うのも無理な話です。だからといって理解されないまま放っておくと、結局どちらも困ることになります。
◇メタファーはロジックを越える
そこで、今回はそんな「分かってくれない人」に分かってもらう方法について書いてみたいと思います。結論から言うとメタファーを使います。
筆者はロジカル・シンキングについての記事なども書いているので、ロジック万能と考えていると思われることがありますが、そんなことはありません。ロジックには限界があります。ロジックは基本的に、お互いに知っている、分かっているという認識を共有している事柄を積み上げていくことでしかありません。受け入れる相手との間で、共有できる認識の土台があまりにも違っていれば、ロジックを組み立てたところで納得してもらえないのです。
こんな時に、有効なのはメタファーです。メタファーは相手が知っていることのイメージを借りてきて説明するので、ロジックの限界を越えることができます。いくらロジカルに説明しても分かってもらえないことを、メタファーによってあっさりと伝えられることがあるのです。
今回、メタファーの例として紹介するのが「海猿メタファー」です。まず、それによって伝えたいことが何かを説明してから、どんなものかを説明していきます。
◇伝えたいけれど伝わらないこと
一部の経営者やマネージャに伝えることが難しく、わたし自身、もどかしく思ってきたことの1つは「システム開発において、IT技術者のスキル差は非常に大きく、重要な開発では高いスキルのIT技術者が不可欠である」ということです。読者の皆さんには言うまでもないことですが、経験を積んだ技術者と経験の浅い技術者とのスキル差は非常に大きなものがあります。しかし、システム開発の経験のない経営者やマネージャには、このことがなかなか理解してもらえません。
システム規模を人月だけで判断し、経験豊かな技術者と入社間もない技術者を大差のない費用で使おうとするのも、障害が生じたときに単純に追加で要員を投入して解決しようとするのも、根本原因はこのところが分かっていないためです。このために、最初にしっかり設計できる要員をいれておかないと、後からは小手先の修正の繰り返しになってかえってコストが膨みます。不適切な設計によって生じたパフォーマンス低下や障害は、技術力のない要員の人数をいくら増やしても解決できないということがどうしても理解できないのです。
こうした技術スキルのレベル差が重要であることを、どうすれば経営者に伝えられるでしょうか? 試しになぜスキルの差が大きくなるのかについてのロジカルな説明を考えてみましょう。
技術スキルの違いは、システム開発の経験から蓄積した膨大な知見にあります。十分なシステム開発の経験があれば、設計や障害時の課題解決の勘所があるため、初めて扱う種類のシステムであっても、仮説を立てて設計をしたり障害の原因を絞り込んだりすることができます。その人自身がすべての情報を持っていなくても、ネットを使って情報を入手したり、製品ベンダーから対処方法を聞き出して解決できます。
ネットには膨大な技術情報がありますが、どうやって探索すればよいのかが分からなければ、欲しい情報に到達することはできません。同様に、製品ベンダから必要な情報を聞き出すのも至難の業です。こうしたノウハウは、実際にシステムの開発の経験を繰り返す中で獲得されるものなので、一人前になるには時間がかかるのです。
しかし、残念ながらこの説明で納得してくれるのは、もともと事情が分かっているIT技術者だけです。
◇伝えたい相手のことを知る
何かを伝えようと思ったら、相手がどんな人なのかという想定が大切です。実は、ここで取り上げているテーマの場合、納得してもらえない相手というのは、必ずしもシステム開発について何も知らないというわけではないということに注意が必要です。ITが企業の基幹業務に導入されるようになってからかなりの年月が経っています。そのため、マネージャが何も知らないというわけではないということが、かえって話が厄介なものにしています。
話が通じなくて困る厄介な人たちのタイプで、著者が考えるワースト3を見てみましょう。
厄介なタイプ(ワースト3): ITにまったく縁のない経営者
「どうしてわたしの言っているグラフを1つ追加するだけで何百万円もかかるんだ? 前にうちのオフィスに来ていたバイトの学生がExcelを使ってプログラムを書いて、いろいろグラフを出していたぞ。Excelとかは数万円で買えるんだろう。その機能を使って作れないのか?」
経営者なので製品の出荷本数が少なくなると、製品の開発コストが大きくなると言う理屈は説明すれば分かってもらえます。分かってもらわなければならないのは、アルバイトの学生と経験豊富な技術者との間には、圧倒的な技術知識の差があるというところです。何かプログラムらしいものを作っている人はみな同じに見えてしまうところが厄介です。
厄介なタイプ(ワースト2): 異分野のエンジニア系マネージャ
「オレも現役時代に何千行もあるプログラムを作ってシミュレーションをやったよ。大変といったって、プログラム書くだけだろ。物理特性が微妙に変化する素子を扱うような仕事に比べると、プログラムするだけでできる仕事って楽でいいなって思うよ」
殴りたくなるタイプですね。なまじプログラミングを行った経験があって、先入観があるため、知らない人よりもずっと厄介です。分かってもらわなければならないのは、扱わなければならない対象の規模と複雑さが桁違いに大きくなっているということです。
厄介なタイプ(ワースト1): 一昔前のシステム開発の経験のあるマネージャ
「オレなんか若い頃苦労したが、結局最後は人数を増やして気合いでこなしたもんだよ。当時は3徹、4徹当たり前だったが、最近の現場は根性がないのかねえ。細かい技術はいろいろ変わっても、システム開発の仕事の本質なんて今も昔も変わらないだろう」
上のタイプよりもさらに現場に根ざした先入観があるので、1番厄介なタイプです。分かってもらわなければならないのは、昔と今を比べると企業システムを作るために必要な知識は、現在のほうがはるかに高度で膨大になっているということです。
◇メタファー使用上の注意
メタファーは、こうした話が通じない人に話をする際に、威力を発揮するものですが、理屈が通じない相手に対処するための最後の手段と考えてください。可能な限り、論理的な説得によって話を進めるべきです。
というのは、メタファーを使う場合はリスクもあるからです。メタファーというのは、本来は説明したものと直接は関係ないものを使って、伝えたい部分を強調して伝えるものです。そのため、想定したのとは思いもよらない文脈で理解されると頭を抱えることになります。
例えば、コンピュータウイルスはメタファーです。このメタファーは伝染性とその結果の重大さを示すのに非常に効果的なものです。一方で、これはメタファーに過ぎず、人間がかかるウイルスとは別のものです。最近はさすがに聞かなくなりましたが、実家の親御さんがコンピュータを触ってウィルスが移らないか心配しているという「事件」はひところ聞いたものです。「豚インフルエンザウイルスだって、人間に移るのに、なぜコンピュータウイルスだと移らないの? 突然変異して移るようになることは絶対にないのか?」と聞かれたりすると、頭を抱えることになります。
さて、システム開発は外からなかなか見えにくいため、理解を促進するためにさまざまなメタファーが使われてきました。しかし、IT業界はこのメタファーのせいでかなり誤解を受けている面があるのではないかとわたしは思っています。
絶対やめて欲しいと思うメタファーが「積木メタファー」です。これは「システムは部品となるプログラムを積木のように組み立てることで簡単に作ることができる」というものです。ある意味でプログラミングの理想像を示すもので、フレームワークなどを使っていかに効率的にプログラムが組めるのかを示すのに使われました。このメタファーは、一部の人にシステム開発が簡単だというイメージを持たせてしまった原因の1つではないかとわたしは疑っています。幼児のおもちゃと一緒にするなと強く言いたい。SOAやグリッド・コンピューティングの説明なども1歩間違うと、システム開発が簡単であると錯覚させるものになりかねないので、要注意です。
もう少し出来の良いメタファーとしては、「建築メタファー」があります。これは、建物を建てるにたとえるもので、「システムは施主の意向に合わせて設計から実装までの何段階かのプロセスを経て作られる」というものです。システムが個別開発であることと設計の大切さを表現するには効果的なメタファーです。しかし、一方で建設現場の物理的労働のイメージがあるせいか、広くて深い知識レベルが各担当者に求められるというイメージは伝えられないようです。これはわたしが建築現場について素人であるがゆえの錯覚で、本当は高度に知的な作業なのかも知れません。ただ、そのイメージが広く伝わらないのだとすると、その点を伝えるメタファーとしては不十分です。このほかに、料理のメタファーなどもありますが、システム開発に必要な知識の広さと深さを伝えるには物足りないと思っています。
◇海猿メタファー
わたしは、この伝えたいところを簡単なイメージで説明できるメタファーはないかと、実はずっと考えてきました。最近になって思いついたのが、「海猿メタファー」です。名前は海上保安官のレスキューダイバーを主人公にしたヒット映画、コミックのタイトルにちなんでつけています。単純に海とダイバーつながりでそう呼ぶだけで、実質は何の関係もありません。
図1をご覧ください。この図では、20年以上前のホストコンピュータと現在の技術の違いを表現しようとしています。
現在のシステム開発は、ホストの時代よりも高度な技術を必要としていることを示しています。ホスト時代のシステムは、メインフレームの一枚岩の上に作られていました。そのため普通の業務システムを作る技術者は、COBOLであれFORTRANであれ、システムによって決められた範囲内でプログラミングすれば良かったわけです。その範囲を超える必要が生じたときには、メーカーの技術者の守備範囲になり、普通のプログラマが関わる必要はありませんでした。
しかし、現在のオープン系のシステム開発では、事情はまったく異なります。OSやネットワーク技術が標準化され多くはオープンソースとして仕様からソースコードまでが公開されています。オープンソースでないパッケージもインターフェイスを公開して複数のシステムと連携して動きます。この環境下で、1つの企業の中で、さまざまなアーキテクチャの組み合わせでシステムが作られています。そのため、一見昔とかわらないシステムであってもシステムの構成は複雑で、いざというときに非常に深い部分まで技術を理解しなければならない状態になっているのです。
次に図2をご覧ください。IT技術者のスキルレベルの差を表現しようとしています。
左端の小さなプールで浮き輪を付けて泳いでいるのが、気の利いたユーザーです。上の例で出てきたバイトの学生のように、エクセルのマクロが書けたり、HTMLでWebのページの簡単な修正をしたりできる人がここにあたります。左から2番目のやや大きめのプールで颯爽と泳いでいるのが、初心者レベルの技術者です。多くの機能をフレームワークやパッケージに依存しているので、あまり深い技術知識は必要なく、短い期間で実用的なシステムを作ることができるようになります。かつてのホスト系システムで業務システムや科学技術計算のプログラムを作っていた技術者もここにあたります。
左から3番目で海に出て泳げるようになっているのが、オープン系技術者です。企業ごとに異なる環境に合わせて、最適なシステムを設計し実現するにはITに関する広い知識が必要になります。もちろん、最初は泳ぎを覚える場合と同様に、最初は守られた安全なプールからはじめて、技術に慣れてから、少しずつ沖合に出られるだけの力をつけていく必要があります。
しかし、ひとたび海に出てしまうと、そこから先には、広く深い外洋が待ちかまえています。ここから先、どんな技術革新や環境変化にぶつかってもそれに対応できるレベルの、この業界でいうアーキテクトという呼び方に相応しい技術者になるには、かなりの年数が必要です。目安として5年と書いていますが、必要な期間は適性や経験内容によっても大きく異なります。もちろん、1年や2年で到達できるレベルではありません。
◇できるIT技術者のかっこよさを伝えたい
いかがでしたでしょうか? 「なるほど」と思われた方もいれば、「ピンとこない」と言う方までいろいろだと思います。「海猿メタファー」にも適しているところと適していないところがもちろんあります。ものを作っていくプロセスをイメージできるという点では、「建築メタファー」にはかないません。それほど「知的」な印象もないぞ、という声も聞こえてきそうです。
著者がこのメタファーに託した気持ちは、「かっこよさ」です。わたし自身の技術力はさておき、これまでにも現在も、アーキテクトレベルの優れたIT技術者と一緒に仕事をしています。こうした優秀な技術者の存在ほど、システム開発において心強いものはありません。できることとできないことを素早く見極め、さまざまなリスクを見通した設計を行い、常人の数倍のスピードでコードを作成し、障害発生時には瞬く間に原因を探り出して対処してしまうところを、わたしは何度も目の当たりにしてきました。まさに、レスキューダイバーの働きだとわたしには思えるのです。
IT技術者の行っている仕事の重要さと高度さが、昨今は過小評価されていると思っています。ストイックに技術を磨くだけでなく、IT技術者自らがそれらを正しくかつ分かりやすく伝えるメッセージを出していかなければいけない時期が来ているのではないでしょうか。そのための1つのツールとして、今回紹介した「海猿メタファー」が役に立ちそうでしたら、ぜひ使ってみてください。