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等)

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


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

<参考リンク>



0 件のコメント:

コメントを投稿