2012年9月8日土曜日

スキルには二つの種類がある

 システム屋(ソフトウェア開発)の仕事を始めてからもう20年近くになる。そのなかで度々、プログラミングの新人教育をしたり見てき結果、ソフトウェア開発に重要なのは、コンピュータや言語の知識ではなく、本人の教養(地力)ではないのかとだんだん思うようになった。

 そう思ったきっかけは、身近な経験からして結局のところ優秀なプログラマーや設計者というのが根本的に少なく、また他のエンジニアを見てても、そもそもスキルというものを誤解しているのではないかという気がしてきたからだ。

 例えば私は比較的に勉強嫌いなエンジニアなので、ここ数年は業務やシステム知識の勉強は会社以外でする事はない。(やった方がいいのだろうけどね、元々面倒くさがりなもので・・・) そして私とは逆に熱心に勉強会を開いて勉強しているエンジニアや会社などがある。
 しかし一緒に仕事をしていてよくあるのが「なんどその知識を活かせないの?」「ここまで解っていたら、この問題解けるだろうに?」というケースだ。おかげで、結局のところ不勉強な私がネットとかで技術や知識を探し出して、問題解決方法を作る事が多々ある。
 これは仕事を教えてきた後輩だけではなく、他社の関わったエンジニアなども含めてもよくある事だ。

 そういった事を経験してから、だんだんと重要なのは技術知識ではなく各自の地力(教養)だと考えるようになった。そしてこれはソフトウェア開発だけの問題でもないと思うようになった。

 では、何故そのような事が起こるのだろうか?

 過去に内田樹が「トレビアとは1問=1解答に答えること、教養とは1問=複数解答を見つける能力」と書いていたのを読んでなるほどと思った事がある。これが、まさにこの差を生んでいるである。私が例にあげた勉強はしているが問題解決能力のないエンジニアというのは、トレビアは沢山持っている。だが応用力や分析力、洞察力などといった力があまりないので、結局は知識をうまく活用できず、問題解決力が低いのだ。

 これはとても残念な事だ。問題はソフトだけではなく、いまの日本社会全体の教育の問題ともいえるのかもしれない。私が実際に仕事をした経験からすると、本当に使えるエンジニアというのは本当に少ない。例えばプログラマーで本当に仕事をお願いしたいと思う優秀な人材は約20人に一人ぐらいだ、そしてまあまなのが10人に3人ぐらい、最悪なのが10人に二人ぐらい。これが現実で、おそらくは他の業界でも似たようなものなのだと思う。この比率はプログラマーでなく設計者で見てもおそらくは同様だろう。

 ライバルのレベルが低いから、私は勉強をあまりしなくても仕事が無くならないのかもしれない。そういった見方もできるだろう、だがおかげで日本のソフトウェアはレベル低く、デスマーチが横行し、そこで仕事をしていると低次元な作業に足を取られて本当に高度な要求を満たすような設計やプログラミングをする機会を奪われているとも言える。
 だから、私は長い間ずっとソフトウェア業界のレベルがもっと上がって欲しいなと思ってきた。しかし現実はあまり進歩していると感じられない。


では地力(教養)とは、なんなのだろうかという事について考えてみる。彼らには何が欠けているのだろうか? 思いつく部分をピックアップすると次のような点が見えてくる。
  1. 問題そのものを分析できない。(問題の本質を掴めてない)
  2. 分析した情報をドキュメントなどに体系化したりして整理する能力がない。
  3. 分析した情報を全部バラして再構築する事ができない。(上記が出来てないので当然)
  4. 関連する知識を、他に応用する事ができない。(そもそも応用するという発想がない)
  5. 頭が固くて、いまのやり方以外の方法があるとは考えない
  6. 言われた事をやる事以外に発想が思い至っていない

 こうしてまとめると、これはソフトウェア業界だけの問題ではないことが良くわかるだろう。ようは過去にあった事をなぞる事はできるが、応用して新たな道をつくる力が圧倒的に弱いという事だ。

 ちなみにスキルというのも大きくは2種類ある。
  1. 過去に体験した事をそのまま再現する為のスキル
  2. 新たな事柄に対して、新たな方法や手順を行う為のスキル

 これは業界にもよるのだろうが、定型的な仕事を繰り返す(例:事務職)ならば、圧倒的に上記1のスキルを使うのだろう。だがソフトウェア開発などの開発業務は圧倒的に2のケースに相当するので、想像力にまつわるスキルが必要だ。しかも最近の社会は世の移り変わりが激しいので、過去に比べて2のスキルを使う割合が本来は増えてきたはずだ。(現実ではあんまり使っているの見た事無いけど・・・本来は)

 そして前もって述べるが、こういった事を書くと、だいたい誰かが「これは教育のせいだ」などと言い出すものである。

 なるほど、確かに教育はもう一つなのかもしれない。しかしこういった地力というものは、もともと教育して身に付くようなものではない。むしろ定型化された教育以外での幅広い視点や思考方法を学ぶことによるものだ。むしろ次のような趣味を持っている方が地力があがるのではないかと思う。

  • 将棋などの戦略ゲームの趣味を持つ
  • 読書(なるだけ幅広いジャンル)を持つ
  • 歴史を学ぶ
  • 心理学的な知見を持つ、手品を研究するとかもいい
  • 自然科学などを知るとか、自然を観察して洞察するとか
  • 音楽や画のような創造的な趣味を持つ
  • 武術などのような長期的な鍛錬経験を積む
 あえて補足すると、短期的な趣味より、長期的な趣味で1つを極めつつも周りに目を配るというのが理想だと思う。これは一見デタラメに見えるかもしれないが、過去に私は手品のトリックに興味を持って調べた時期があって、その際に「この発想はすばらしい、是非ともプログラマーにこの本を読ませたい」と考えた事もあった。だから、本当に発想そのものを学ぶというのは重要で、意味があると思う。

 ちなみに私自身事を少しだけバラすと、私は元々プログラマーになる前は、小説家や漫画家等のクリエイターになりたくて、過去は宗教、オカルト、科学からなんでも片っ端から興味を持って調べていた時代があったし、ここ数年は楽器の練習も再び始めたりもしている。無駄に思える色んな趣味や知識が結果として、仕事でも役立っているように思う。つまりのところ「同じ物を見たとしても、そこから何を思いつくか」が地力という物の本質なのだと思う。

0 件のコメント:

コメントを投稿