サバイバルするプログラマー ~メルマガ連載記事の転載(2013/06/24 配信分)
この記事は、メルマガ「デジタル・クリエイターズ」に月1回連載中の「データ・デザインの地平」からの転載です。
連載 「データ・デザインの地平」第31回 サバイバルするプログラマー
コンピューターに手綱を握られないために
この数年、プログラマーを取り巻く環境は大きく変わりました。コードレス化、オフショア化、短納期低予算化が進み、検索エンジン、SNS、ブログ、クラウド・アプリ、投稿システムなど、ありとあらゆるものが無償あるいは安価で提供されています。
筆者は、2006年に書いたコラムの中で、コードレス化の時代にプログラマーが口を糊するには、「ヒトにしか出来ない、1から自分の頭を使って考えてみることが、重要になる」と述べました(※1)。
また、DTPソフトの進化によってデザイナーがDTPデザイナーとDTPオペレータに分かれたように、開発ツールの進化はプログラマーの仕事を二分すると述べました(※2)。開発テーマや新しいアルゴリズムやプログラミング技法を考案する者と、仕様に従って実装する者に分かれ、その後、内部情報(=脳内情報)から湧くイメージを形にする者はプログラマーを継続し、論理的思考で外部情報(=技術情報)を扱う者はディレクターになると述べました。
そして、ふたたびプログラマーの仕事を問う大きなハードルが、プログラマーたちの前に立ちはだかります。
それは、自律型のコンピューターとの差別化です。
いまやネット上には、多数のサンプルコードがあります。近い将来、それらをデータベースとして蓄積し、利用できる、人工知能を持つコンピューターが現れるとき、それはユーザーのもとめに応じてカスタマイズしたコードを短時間で出力し、プログラマーの地位を脅かすことになるでしょう。
そして、お掃除ロボットが自らを充電するように、コンピューターが自らを充電し、故障したパーツを 3D プリンタで自作して自らを修理するようになれば、24時間疲れ知らずのコンピューターは、ヒトからコーディングの仕事を奪っていくでしょう。
しかしながら、次の3つの仕事は、コンピューターに奪われるとは考えられません。
これらは、人間らしさを要する作業です。
(1) 自律型コンピューターを開発・制御するプログラミング
(2) ユーザーとビジネスパーソンにもとめられる企画立案
(3) プログラミング入門者への対面指導
※1 2006年11月刊「Visual Studio 2005 ASP.NET 2.0 Webアプリケーション プログラミング・テクニック」付録コラム「Web 2.0 以降の時代を読み解くためのヒント」(Webサイトで公開。30ページ、xps形式)
Windows 8 では、展開後、xpsファイル上を右クリックし「プログラムから開く/xpsビューア」を選択。
※2 日経IT Pro 連載「コラボレーションから始めよう!」第2回 生き残るWebサイト構築プロジェクトの条件(2006年6月22日)
「しぶくて、コア」をきわめれば、仕事には困らない
コードだけで口を糊していくには。前述の(1) のスキルを持っていれば安心です。
それには、ハードウェアへの理解が必須です。ウェアラブル・コンピューターや各種センサー、ゆくゆくは量子コンピューターについても知る必要があるでしょう。
えっ、プログラマーならハードウェアを熟知しているのでは?と驚く人もいるでしょう。
業界外の人は少なからず誤解しているようです。
すべてのプログラマーが計算機のしくみを知っているわけでもなく、通信技術やOSに造詣が深いわけでもなく、アルゴリズムを意識しているわけでもなく、また、計算機科学を修めているわけではなく、数学ができるわけでもありません(※3)。
文系出身のプログラマーも少なくありません。外国語で文章を書くように、プログラミング言語で作文するのです。
そもそも、優れた開発ツールがあり、ネット上のリソースも充実しているのですから、カンの良い人なら、基本的な処理は書けるのです。ここでいう「カン」とは、参考になりそうなサンプルコードを素早く見つけ、どの部分を組み合わせてどこを変更すればよいか目星を付ける能力です(※4)。
「プログラムは動いてなんぼ」といいます。それは、知識偏重への戒めであり、「処理を論理的に説明できなくても、動けばそれでいい」という意味ではないのですが(※5)、なぜか誤解されているようで、カンで継ぎ接ぎするプログラマーは今後も増え続けると思われます。筆者は、技術を広めるには「敷居は低く、壁は高く」あるべきだと考えていますが、その壁が既に低くなっているのですから。
自律型のコンピューターが機能し始めるとき、生き残るのは、コンピューターを理解して論理的思考でプログラミングできる、しぶくてコアなプログラマーたちです。
そういった人たちは、自律型コンピューターを開発・制御するためのプログラマーに移行できます。
しぶくてコアで地味な仕事作業よりも、ビジュアルの華やかな派手な作業の方が、サバイバルできそうに思われがちですが、そんなことはありません。ホンモノのエンジニアは、時代が変わっても、社会にもとめられる人材であり続けることでしょう。
そして、その中から、コンピューターには不可能なプラトン的世界へのアクセス方法を究め、数学的発見をする人も輩出されるでしょう。
※3 スキルの高いプログラマーが「数学はできなかった」というとき、その言葉を真に受けないほうがよいでしょう。それは、本人基準であって、社会基準ではないかもしれないからです。当人の他の得意な学科に比べれば成績が振るわなかったというだけで、世の平均に比べれば良い成績だった可能性もあります。「数学はできなかった」のではなく「数学は苦手だった」のかもしれません。
※4 サンプルの継ぎ接ぎでプログラムを作り上げているときの脳の領域は、おそらく、本来の意味でのプログラミング作業に使われる脳の領域とは異なると筆者は推測します。
※5 処理を論理的に説明できない処理は、「正常に動作しているかのように見えている」だけかもしれません。いまやプログラムは社会生活基盤を支えるものであるので、そのようなプログラムは社会のリスクになりかねません。重大案件を受注するような企業では、レビューア(プログラムコードの査読者)がチェックして指導するので、リスクは抑えられています。また、ベンダーが公開サイトを運営しているケースでは、審査を通過しないアプリは公開されません。
「ヒト」と「社会」のニーズに応える発想
いくらコンピューターが進化しても、「限りある」はかないヒトのもつ複雑な感情や、文化的背景に根差した美意識を満たす開発は難しいものです。ヒトを驚かせ、楽しませ、感動させるアプリやコンテンツが、この社会には必要です。
前述のような計算機科学に基づくプログラミングであり、且つ、ユーザーに喜ばれ、ビジネスシーンでも利用されるものならば、そういった企画の立案は、コンピューターが取って代わることのできないものです。
そのような性格のアプリを、筆者は、先般行われた「エイッと作ろうアプリ選手権」に見つけました(※6)。(プログラマーではない筆者が、プロのプログラマーの皆さんたちのアプリについて何か言える立場ではないのですが、この記事の説明のための例示です。※7)
それは「エッシャーパターン」というアプリで、1個のタイルの上にドローイングすると、リアルタイムでユークリッド平面を覆うかのようなイメージが表示され、さらにはビットマップ形式のファイルとして保存できるというものです。
タイリングというテーマだけみると、玄人受けしても万人受けはしないもののように思われますが、このアプリは、ユーザーにとってはお絵描き系の楽しいツールであり、テキスタイルやインテリアのデザインの現場での活用も考えられることから、ビジネスパーソンの関心もひきます(※8)。
このアプリは、これからのプログラマーとしての方向性を考えている人にとって、参考になるものだと思います。
※7 筆者は多数の技術解説書や記事を書き、いくつかのアプリも公開していますが、XMLエンジニアであって、プログラマーではありません。
※8 線の色を白にしてアルファ値を設定できるようにし、さらには背景色や画像を設定できたり、作成された図柄を再マッピングあるいは画像処理ソフトのように変形して「円の極限」のようなイメージを作成できるならば、レースのカーテンや壁紙のラフデザインにも利用しやすく、Epressiion Design などにもあるとうれしい機能だと思いました。
「ヒト」の心を知って個別対応できるのは「ヒト」
計算機科学から離れた位置にいたり、アイデアを出すことは苦手という人が、何らかの形でプログラミングに関わる仕事を継続するには、教育に目をむけるとよいのではないでしょうか。
それは、プログラミング未経験者への少人数あるいは個別ので指導です。会場を借りての定期講習だけでなく、企業への出張指導や家庭教師、自宅での塾などが考えられます。
いまや無料の講座は多数あります。大学の講義すら閲覧できます。それらの講座は増え続けるので、自学自習のできる人は、指導を必要としなくなるでしょう。
しかしながら、仲間とともに学ぶ楽しさを尊ぶ人もいれば、自学自習の苦手な人もいます。特に後者にとっては、いくら無料の講座が増えても、ビデオカメラ越しの個別指導が普及しても、対面指導の必要性は残ります。
そういった人たちに寄り添うスキルを身につければ、需要はあります。つまり、多種多様な生徒に個別に寄り添い、足並みを合わせてともに成長できる教師になれるように、心理学(とくに発達心理学)やコーチングの方法を学び、「プログラミング・スキルだけでなく、人間力と指導力」を身に付けるのです。
いまやネット上には多数の無償教材があり、「自ら学ぶ」種の児童(幼稚園児や小学生)にとっては、IT教育の実施を待つまでもありません(※9)。彼らが新しいアイデアを語る時、頭のかたい先達は、自分が想像できないからといって、「そんなことはできるはずがない」などと足を引っ張ることが少なくありません。
そういった大人たちから幼い人材を守り、自主性に任せて伸ばす教育方法を先駆けて構築できる人は、その教育システムとノウハウの伝授だけで口を糊していけるでしょう。、
n年後に必要になることは、その n年前から準備する必要があります。今すぐ準備を始めるのが賢明です。
※9 2007年に、筆者は、小学生も読者対象とする「実習 Windowsプログラミングはじめの一歩」という本を書きました。当時は、児童専用の楽しく平易な教育方法が散見され、筆者はそれに疑問を持っていたからです。
究極のサバイバル・スキルとは
このような記事は、社会の大きく急速な変化に戸惑っている人には、考えたくもない将来を見せつけているように感じられるかもしれません。しかし、ヒトならではの力を発揮すれば、口を糊していく方法は必ずあるはずです。
ヘルマン・ヘッセ著「シッダールタ」(高橋健二訳)には、主人公の思索家シッダールタが、商社の経営者カーマスワーミとの面接にのぞんで、次のように自己アピールをする場面があります。
「私は考えることができます。待つことができます。断食することができます。」
そして、業績を上げて共同経営者となった後、方針の違いから(シッダールタは長期報酬系、カーマスワーミは短期報酬系)商社を去ることになる直前に、シッダールタは次のような言葉を口にします。
「私があんたから習ったのは、ひとかごの魚がいくらするか、貸した金にどのくらい利子を要求することができるか、ということだ。それがあんたの学問だ。考えることを私はあんたに学びはしなかった。カーマスワーミよ、むしろ私から考えることを学ぼうと試みるがよい。」
商社を退職して、シッダールタは無一物になりますが、生きていくのに困ることはありません。なぜなら、先にあげたスキル「考えること」と「待つこと」ができるからです。プログラマーがプログラミングに関わる仕事で生き残っていくにも、このふたつがあれば大丈夫でしょう。
ヒトでなければ考え付かない独創的な処理を考え、先見性がありすぎて先走ってしまったアイデアであっても世の中が受け入れるまで待つ姿勢、それらがあれば、未来は憂えるものではないでしょう。
我々は、新たな技術潮流に乗って、自身を変え続ける必要があるのです。
>>無料オンラインブックのご案内
ダウンロードページ
>>Free Download Books, Applications, Samples, Tools, and Materials by SeiSeinDesign
(フリーの本やアプリのコードやサンプルや素材データ)
ダウンロードページ