2015年11月16日月曜日

汚れた豹と臆病者の恥

 「私は何でも手に入れてきた、だが同時に私は何も手に入れられなかった」

 この言葉は時折私の頭に浮かんでは消える。いつから考えだしたのか、あるいは何処かの書物に書かれていたセリフなのか? まあどちらでも良い。私は時々そのようなジレンマを想像する事がある。
 とある金持ちは言う。此の世に金で手に入れられないものなどないと。だが本当にそうだろうか? 少なくとも私の考えは少し異なる。金だけで全てが手に入れられると誤解する者は、本来の姿が持つ価値を知らぬ者である。この事を忘れないように記しておこうと思う。


 時折私は次のような想像をする。

 ただ一人で深いジャングルを散策する。辺りに充満するのはむせるような土と緑の匂い。皮膚は熱気で濡らされる。薄暗い茂みの中で不意に覆われた枝をぬって差し込む強い光が射す。
 そこは荒々しい野生の世界。よそ者である人間を圧倒する。打ちのめされるような熱気まみれ、思考はやがて意味をなさなくなる。圧倒的に無力である事を知らされ、やがて己を知る。

 だがその足が不意に止まる。森の奥から一匹の豹が現れ、爛々と輝く金色の瞳が暗闇の中からこちらを認めているのに気が付いたからだ。しなやかで艶やかな毛並み、まるで何千年もそうしていたかのような自然に立つ姿は、まるで賢者のような聡明さに満ちている。

 しかしこの身体はその神々しい姿に感銘を受けると同時に震える。説明しなくても理解しているからだ。もしも彼の機嫌を損ねたならばこの身はたやすく引き裂かれるだろう。遥か昔から定められているかのごとく、反論すら許さずに、あの鋭い牙は喉を噛み切りもできる。それらの権限と判断が全てあの美しい姿に委ねられている。息を殺してただひたすらに裁きを待つしかない・・・。


 このように野生のジャングルで出会う豹の姿はどれほど神々しいだろう。また美しく、力ずよい事だろう。人の手では再現しがたい荒々しく繊細なものがそこにはある。これらには本来値段をつける事ができない。
 だが仮に金持ちが大金をはたいてジャングルで豹を捕獲し、自宅の庭にある檻に入れたとする。
彼はそうやってあの美しさを自分の物にできたのだろうか? 
 おそらくは違うだろう。そうやって檻の中に閉じ込めたのはただの汚れた大きな猫でしかない。どれだけ大金をはたこうが、どれだけの数を捕らえようが、あのジャングルで見た神々しい美しさを手に入れる事はできない。

 しかし愚かな者達は、豹の本来の美しさが損なわれた事にすら気づかずに次のように言うかもしれない。「ほら、豹と言ったところでただの大きな猫じゃないか」と。
 彼らは愚かさゆえに世界をくだらないと嘲笑し、そして汚れた靴で聖なる場所を台無しにする。だがいったい今までにどれだけそのような愚か者を見てきた事だろう。

 空想から覚めて私は考える。

 いったいどうすればあの神々しい豹の姿に会えるのだろう。

 どうすれば本来の世界の美しさを理解できるのだろう。

 その方法はすでに解っている。「世界をありのままに向き合って理解する」事だ。

 だが私にはジャングルで豹と対峙する勇気が無い。そのことが自分でもよく解っている。ゆえに私は常に恥じているのである。あの森で出会うはずの幻の豹に。

2015年11月1日日曜日

実は重要な文系の能力「物語を作る力」について

 私自身がソフトウエア開発者(プログラマー、設計者)として度々悩む問題の一つに後輩の教育というテーマがある。思うように伸びない後輩に苦労したり、あるいは逆に他所の教育を見て「いや、そこはも少しちゃんと教育してよ」とか心の中で突っ込んだりなど、このテーマについては思う事が多い。ちなみに、最近はちょうど私の近い席に新人がやってきて、3年目ぐらいのメンバーが教育担当をしているのを眼にするので、とりわけこのテーマについて考えさせられる。

 よって今回は教育というテーマで少し話をしようと思う。だがいまさら教育一般論をしてもつまらないので、少し解りにくい点があるかもしれないが、私自身のIT技術者としての経験によって具体的に考えたり気が付いた点を書こうと思う。



1)そもそもIT技術者にはどんな能力が必要か?
 ずっと昔の情報処理試験(二種、一種、特殊)とか言っていた時代には笑い話があって、情報処理推進機構が求める人材は、コンピュータの専門知識のみならず、冷静な分析力と、顧客に要求を解釈して提案する力、包容力があってユーザの悩みに対応できる云々等・・・といった具合に都合の良い要望がずらずらと並んでいて、「そんなスーパーマンみたな人材ならプログラマーにならないよ」と思わず突っ込んだものだった。ちなみに、この記事を書く際に久々に幾つか見てみたが、さすがに今ではそこまで無茶な事は書いてないようである。

 だがこれは、1つの仕事をうまくするには、実に多くの関連する能力が必要であるという事を分かり易く示した例である。例えば天才プログラマーであっても、独りで全てをするのでなければ、顧客ニーズを理解したり説明したりする能力が必須であるし、規模が大きければ計画立案も必要になる。ただコンピュータに詳しければ良いというものではすまないのである。

 ちなみに駆け出しプログラマーだった頃、私は理想的なソフトウエア開発者の能力次の3つだと考えていた。

<理想的なソフトウエア開発者のスキル>
(1)サイエンティストの冷静な分析力
(2)チェスプレイヤーの戦略性
(3)芸術家のような美的センス

 ちなみに(1)はなんとなく理解されそうな気がするが、(2)と(3)は説明がないとピンとこない気がするので解説する。

 (2)の「戦略性」について、ある一定以上の規模や複雑なものを構築する場合には全体を俯瞰した地図のようなものをイメージする必要がどうしても出てくる。それはソフト自身の構造であったり、実際に人を動かす際の人員計画もそうだ。単に日程と工数だけではなく、チームならばメンタル面についても考慮する必要がある。さらには費用計画があって、良い計画にするにはリカバリプランも考える必要があるだろう。重要なのは細かい手順ではなく、全体を俯瞰的に戦略的イメージとして考える能力である。

 例えば、スケジュールが遅延した場合にどこを優先するか(捨てるか)を考えるかで計画進行は劇的に異なる。実際に未熟なマネージャーは全てを優先しようとして大抵は台無しにするものだ。問題が起きた場合は仕切り直しや、一時撤退をするような思考の切り替えも必要なのだが、大抵は精神論で悲劇的な道のりとなる。デスマーチの始まりだ。

 なお私は、トム・デマルコの名著「デッドライン」に載っていたエピソード(パットン将軍のくだり)の影響で、プロジェクト計画をよく頭の中で軍事シュミレーションに置き換えて考える習慣がついている。そのおかげでデスマーチを見かける度に、旧日本軍の悪夢である「インパール作戦」や「ガダルカナル島攻略」をイメージして憂鬱となる。
(いまだに日本のソフトウエア開発は旧日本軍のレベルを逸脱できてなくてヤバイと思う事も多い)

 ちなみに(3)の美的センスだが、何を美しいと思うかは人によって異なる。だがこのセンス(こだわり)が必要だと私は思う。複雑な構造を作る際に、統一されたテーマや美観やポリシー的な物がないとかなり辛い事になる。ここではあえて美的センスという一括りにしておくが、そういった感覚は私の経験上からは必須である。



2)実際に役に立っている能力とは
 上記1)で書いた事は今となっても基本的には間違ってたとは思っていない。だが実際に仕事しているなかで、あまり意識してなかった能力が実は役に立っているなという事に気が付いた。それは次の2つである。

(a)国語力的な能力(読解力、文書化能力など)
(b)物語を作る能力(仮説を立てる能力)

 他業界の人は意外に思うかもしれないが、システム開発をやっていてあまり数学や理系能力の必要性を感じた事がない。もちろんこれは開発のジャンルによるが、主に関わっていた企業向けのシステム開発では対してその部分で苦労した事はない。
 なぜならば、業務のシステム化を考えた場合、あらかじめ必要な算式や手順はほぼ決まっていて、システム化する際のポイントはいかに正確に効率化するかだからだ。逆に必要なのは国語力的な能力である。

 自分の考えを正確に文章で示す、相手の考えを正確に理解する。正確に考えを伝達する。あるいは多くの文書や思考に目を通したり考えを整理したり体系化したりする。こういった能力のベースは理数系的なものよりも、むしろ国語力的な訓練によるものが多いと思う。

 そして意外なのが(b)で「物語を作る能力」である。これは小説を書いたり例え話を作ったりするような創作能力と置き換えてもいいだろう。最近になって案外これは重要な能力なのだなと思うようになった。

 複雑な議論で終わりが見えなくなった場合に、思考実験として「もしも○○○が□□□だったらこうなります」といった、架空ストーリーを作ったり、たたき台としての原案を作って打ちあわせする場合にこの「物語を作る能力」は必要となる。
 それどころかこの能力は登場する機会は考えれば多くある。例えば提案をする場合には、新システムを提案した場合の世界を物語のようにイメージする必要があるだろう。それに大規模なプロジェクトを運営するには、ドラマのように緩急や重要局面を想像して備える力も必要になる。


 ちなみに私は元々はあまり理数系寄りではなく、どちらかというと文系側の人間で過去には小説を書いて何とかお金を稼げないかとやってた事もある。プログラマーとかシステム設計を仕事にしているというとよく理系というイメージを持たれる事が多いが、別段そういうわけではない。なのでイメージとして必要だと思われている能力と、本当に活用している能力が実は異なっているという例もある。

 あるいは理系や文系という区分けに意味がなく、これらは双方で補完しあうものと考える方が良いのかもしれない。だが最も遠いと思われそうなソフトウェア開発の仕事で実は「小説を書く能力」が最も重要な役割を担っていると考えるのは面白い。
 そう考えればあらゆる知識や学問はすべて切れずにつながってゆくと考える方が妥当なのだろう。それはあたかも『なめらかな社会とその敵/鈴木健』に書かれたようなものかもしれない。


3)新人教育、もしくは今後の教育として
 上記のような話を踏まえて現場で新人教育されている姿を見ると、よく「理系的な能力」よりも基本の「文系的な能力」をちゃんとすべきだと思う事が多い。実際に新人が何言っているのか解らない事やホウレンソウ破綻するようなケースも多く見る。色々と個別の理由はあるのだろうが、まずは基礎としての語学力(日本語力)をもう少し鍛えるべきなのだと思う。

 なので私的には、むしろつぎのような教育の方が効果的だし、やる側もまだ楽しいのではないかと考える。

・流行の自己啓発的な本を読ませるより、古典名作小説を読んで感受性と読解力を高めるとか
(読解力UP、説明の語句が豊富になる等)

・あっても無くても支障ないような定型報告書(日報とか)を書かせるより、こっちが思わず見たくなるような読書(映画鑑賞でもいい)とかの感想文書くとか
(表現力UP、提案力UP等)

 もちろん教育についてはもっと色々と考えるべき点があって、特にソフトウェア開発の場合は「もっと基本のコンピュータ知識」とかをやるべきとか色々あるのだが、それは長くなるのでまた別の機会があれば書くことにする。


<余談>
 実は年配でベテランでも国語力が無い為に、ちょっとした事からユーザーとの関係をこじらせたり、変な作業を作ったりして後から頭の痛い思いをする事がある。なので国語力というのはかなり実践的で重要なテーマだと思う。
 ゆえにちょっと前に安倍政権の大学改革で「文系大学を減らす」的な施策が言われた時には、かなり絶望的な気分になった。彼らこそ教養や能力のなんたるか所以をまったく理解していない。逆説的に言えば、こういう短絡的な提案をする輩がいるからこそ真に今こそ「文系教育は重要」だと言うべきだと思う。

<参考リンク>