技術者と作業員

技術者(エンジニア)という言葉を多用するのは良くないと思う。
最近、特にコンピュータ関連の職業に携わっている者のことを総称してエンジニアなどと呼ぶようになってきている。
しかし、ここ数年間コンピュータ界で色々な仕事や経験をしてきた結果、以下のようなことがわかった。
まず、技術者(エンジニア)と呼ばれる人たちは、2種類に分けることができると思う。

  • 1. 本当の意味での技術者
    • 通常、大勢の人たちが無理だと思っていたり、どれだけ試行錯誤してもうまくいかないような (たとえばコンピュータに関連する) 技術的な難題を、人並み外れた凄まじい問題解決能力で解決し、たちどころに目的を達成してしまう能力を持つ特殊な人たちのこと。多くの場合、置換不可能である。誰でも勉強すればなれる訳ではない。
  • 2. 作業員的な技術者
    • 上記を除いたその他大勢の、コンピュータに関する仕事に携わっている人たちのこと。たとえば特殊な装置(もともと上記の技術者が設計したものである)を扱う専門技能を勉強して身につけていたり、プログラミングに関する知識を勉強して身につけていたりして、そうやって身につけた能力を、与えられた指示通りに使って仕事をして給料をもらう。多くの場合、置換可能である。ほとんど誰でも勉強すればなることができる。運良くコンピュータ業界はまだ儲かっているので、他の同様の職業(たとえば工事作業員とか)と比べると、報酬は割高である。この潮流に便乗した産業が、人材派遣ビジネス・資格ビジネスなど。

ここで、コンピュータに関する分野で、『1. 本当の意味での技術者』対『2. 作業員的な技術者』の人数比は、たぶん20年前とかであれば、前者のほうが比較的多かったのだと思う。そんな大昔は、1. のような能力を持った人たちでなければ、わざわざコンピュータに関する職業に手を出そうとは思わなかったからだと思う。以前は、コンピュータに関する仕事は極めて人気が低く、開発者というのはとくに偏見の目で大衆から見られていたに違いない。
だが、ここ10年間の間でコンピュータに関する事業が儲かるようになってきて、それに伴い、『2. 作業員的な技術者』の人たちの就職先と支払われる報酬の金銭が十分に確保できるようになったので、雇用機会が創出され、多くの 2. のような人たちが増えてきたのだと思う。
しかし、2. のような仕事をするには、確かに若干の専門知識が必要であるが、それ位であればよほどやる気が無い人以外は少し勉強するくらいで身につけることができる程度の専門知識であり、誰でもそのような職業に就くことができる。もちろん会社から見ればそういう人は掃いて捨てる程溢れているので、気に入らなければいつでもクビにして別の人を雇って置換することができる。
こういうのはたとえばコンピュータに関すること以外の職業についてもあてはまる。たとえば建築業だと、神業的な技能を身につけていて、かつ他人がどれだけ真似しようとしてもどうにも真似できないようなすごい大工さんがいて、それ以外に大勢の作業員がいる。その他でも同様だろう。コンピュータに関する職業が特殊な訳ではない。ただIT業でその傾向が強いのは、単純に偶然今最も儲かっている産業の1つになっているからだと思う。

両者を分離する良い表現は無いか

ここで誤解されないように断っておくと、私は上記の『2. 作業員的な技術者』の存在を批判している訳では決して無い。彼等は至る所でIT化された社会の拡大のためのスケーラビリティを確保するために必要であり、現在の社会システムは大勢の彼等によって支えられている。いくら凄い技術者がいても自分一人では作業量に物理的な限界があるので、大勢の作業員技術者をとりまとめて最適に仕事を配分しているのである。
だから、現在のコンピュータ産業においては、作業員技術者が増えるのは好ましいことで、それによってコンピュータ産業が拡大していく間はスケーラビリティの増加を維持する重要な要因となっている。


しかし、私が問題だと思っているのは、『1. 本当の意味での技術者』と『2. 作業員的な技術者』との違いを明確にすることができる、適切な表現が無く、両者とも一般に "技術者(エンジニア)" と呼んでいることについてである。
たとえば、IPA の資格で「テクニカルエンジニア(ネットワーク)」というものがあるが、これに合格したとしても高々ネットワークの設計や機器設定が適切にできるようになるくらいで、それくらい勉強すれば例え合格していなくとも誰でもできる。中学生でもできる。しかし、合格した人のほとんどが、たとえば現に存在する問題を解決する通信プロトコルを設計したり、これまでに無い斬新で革新的な通信システムを開発したりすることができるかといえば、絶対にそのようなことは無い。
両者の間では月とすっぽんくらいの違いがあることは明白である。
だが、両方とも「エンジニア」と呼ばれている。これを正しく区別してどちらかの名前を変えてわかりやすく普及させるということが必要ではないかと私は思う。
たとえば、システム開発でいうと、「SE」より上位のものとして「アーキテクト」という呼び名などもあるが、分野が限定されてしまう。


ちなみに、理系のAC の人たちの多くは、『1. 本当の意味での技術者』の予備軍である(またはすでに大学入学時にそうなっている人たちもいる)。


あと、IPAの認定する「スーパークリエータ/天才プログラマー」についても、だいたい 1. のような人たちを指し示す用語であると言える。ただし、まだあまり普及していない。

どうすれば作業員ではなく技術者を育成できるのか

私自身は、『2. 作業員的な技術者』にはなりたくないので、『1. 本当の意味での技術者』を目指している。目指すといってもゴールがある訳ではなく限りなく漸近線的にそれに近づきたいということである。
では実際にそういう技術者を育成するにはどうすれば良いのだろうか。
日本がコンピュータ産業において、諸外国に対しての遅れを取り戻すためには、『1. 本当の意味での技術者』を大幅に増やす必要があるのではないだろうか。
たとえばIPAがやっている未踏ソフト事業は、そういう人たちを「発掘」するものであり、「増やす」(何らかの形で指導・教育して育成する)ものではないようだ。そもそも、教育だけでそういう人たちが増えるのであれば、苦労はしない筈だ。
本当の意味でのIT技術者を育成する方法といえば、あまり良くわからないけど、幼少時からコンピュータなどを与えてプログラミングを自主的にするように仕向ける(ただし強制してはいけない)とか、変な知識を与えるとか、13歳までに感電させる とか、そういうくだらないことしか思い浮かばないのだが、諸外国ではどうやってそういう人の割合を(日本に比べて)増加させてきたのかということを今度よく調べてみようと思う。

ちなみに、社長としては

『1. 本当の意味での技術者』を探しているが、やはりなかなか見つかるものでは無い。作業員的技術者が必要になったときは、筑波大学内の豊富な人的資源(アルバイトを探している学生)を活用すれば良いのだろうが、ソフトイーサ社の特性としてあまりそういう必要は無い。
逆に 1. のような人たちは是非とも(特に筑波大学内で)見つけたら確保したいのだが、大変難しい。