Scribble at 2022-06-21 09:07:50 Last modified: 2022-06-21 09:22:42

プログラマがプログラミング言語に関心をもってもいいが、全てのプログラマがプログラミング言語に関心をもっているわけでもないし、そうあるべきでもない。先に紹介した "Street Coder" という本でも書かれているように、目的志向のエンジニアであるフリーランサーや独学の日曜プログラマの多くは、そもそもにおいてプログラミング言語を何らかの目的を果たすための道具だと思っている。そして伝統工芸士のような人々とは違って、道具そのものへの愛着はない。不可避的に習得せざるをえない面倒な道具だと思っていたりするので、何か別の方法があれば即座にそちらを選ぶ。そして、そういう志向を非難する資格など誰にもないのである。

したがって、street coder というものは、自分でコーディングするという hand making な操作をしている自分自身に恍惚や全能感や自意識プレイなど無関係だし、安く簡単に短時間で解決するなら無料のオンライン・サービスや出来合いのソフトウェア、あるいは手伝ってくれる他人にやらせてもいいとすら思っている。それが、多くのクラウド・ワーカーやフリーランサーの現実でもあろう。僕らもしばしば彼らにコーディングやデザインや営業活動といった業務を委託しているが、一人の人物に依頼しても成果の出来栄えに頭を抱えるほどの違いがあるのは、たいてい自分で手掛けていないからだ。それは受発注の関係においてはありふれた事実にすぎず、僕はそれを批判したいわけではない(*)。

もちろん、企業のコーダであれフリーランサーであれ、中には道具に関心をもつ人もいる。しかし、そういう人々の多くは、残念ながら大学や専門学校で一通りの体系的なコンピュータ・サイエンスやプログラミング言語論という俯瞰した観点を学んでいないせいで、たいていにおいて〈関心の持ち方がアマチュア〉である。たとえば、他人の知らないマイナーなプログラミング言語をウィキペディアのリストで物色して、それをむやみに習得しようとしたり、あるいはそういう言語があるのでインストールしてみた、などと唾を付けるだけのブログ記事や Qiita の記事を書いては何らかの優越感に浸ったりする。そんなことをしても人類の叡智や産業、あるいは人々の暮らしにとって何の役にも立たない。そういう、プログラマやコーダとして以前に人として未熟な連中のやることを、特に若手の技術者は CGM だソーシャルだと適当な言い訳を作ってイージーに真似るべきではない。

たとえば、マイナーかどうかの評価はもちろん人によって異なるが、FORTH や Racket や Ada といったプログラミング言語を、現代のソフトウェア開発で使われているプログラミング言語の実績という状況において、わざわざ習得する強い理由があるだろうか。もちろん、コンピュータ・サイエンスという理論的な観点で言えばあり得るし、あってよい。あれば、それがわかっている人々は堅実かつ丁寧に習得して、その成果を出せばよい。しかし、そういう理由を知らないか知ろうともしていない、単なる好奇心や虚勢のために、わざわざ「マイナーな」プログラミング言語を知ろうとするのは、端的に言って無駄であり有害ですらありうる。理由は次のとおり。

第一に、そんな時間があれば自分が会社から運用能力の向上を求められている、既存のプログラミング言語のスキルを高めるよう訓練したり、更に色々な事項を学んだり、上司や同僚と議論するべきだからだ。たかだかプログラミング言語の資格を手にしたとか、あるいは IBM や Google のエンジニアとして就職したとか、そのていどのことでプログラマやソフトウェア・エンジニアとして「ゴール」に着いたなどと思い込んでいる時点で、あなたは既に次回の人員整理の対象者である。

第二に、プログラミング言語には、その設計や使われ方について色々な方針とか用途がありうる。その想像しうる方針や用途を最大限まで集約したり抽象化しているのが、学問としてのプログラミング言語論である。こういう形式的で抽象的な扱い方の訓練を大学や専門学校で叩き込まれずに、必要に応じて(まさに NEC や富士通へ就職するために)プログラミング言語を習得した人々は、常に道具を捉え扱う観点が偏りすぎている。もちろんコンピュータ・サイエンスの学術研究者であっても色々な意味で偏っていることが多いのだが(それは数学者が特定の公理系を想定しているのと同じであろう)、素人やアマチュアの偏り方は次元や質が違っており、だいたいにおいて当人にとっても〈料簡の狭さ〉という意味で有害である。よって、むやみに色々な言語を学ぼうとするのではなく、既にそれらの素人が陥りがちな思い込みや特定の用途だけに向けられたような「ベストプラクティス」や実装例の紹介記事などだけを眺めて、最初から持っている偏見をいたずらに増幅したり強化しないよう、やはり「枯れた」道具にかかわる色々な意見や実装例を学ぶ方が自分自身の見識を広めたり相対化できる可能性が高い。本来、「ソーシャル」であることの効用とは、自分の仲間や同調者を見つけて安心するためだけではなく、自分の考えが間違っている可能性を指摘してもらったり再考の余地を見つけるためでもあろう。

==========

* 僕がこれまで当サイトでウェブ制作の業界について書いてきたように、プロジェクトの成否は結局のところ発注側にある。成功が何であるかを受注側が知っているわけでもなく、そして知っていたとしても成功へ導けるか導く能力がある受託企業なんて殆どないからだ。たいていのオンラインのキャンペーンやプロジェクトが、資金と知名度だけの打ち上げ花火でしかないのは、要するに発注する側がバカだからである。もちろん受注側もたいてい無能や凡庸ではあるが、受注側には発注側よりも多くのリスクがあるため、凡庸なりにも自然と色々な対策が出てくる。それに対して、極端に言えば発注側の多くはプロジェクトやキャンペーンの成否など興味がなく、予算を消化できればいいとすら割り切っている人々も多い。

  1. もっと新しいノート <<
  2. >> もっと古いノート

冒頭に戻る


※ 以下の SNS 共有ボタンは JavaScript を使っておらず、ボタンを押すまでは SNS サイトと全く通信しません。

Twitter Facebook