何をもって「プログラマ」と定義するのかという話になるが。
これ書いた人絶対プログラミングできない😇 pic.twitter.com/jVHVlByUU9
— Mana (@chibimana) November 16, 2021
かつて、昭和の時代のマイコン少年は雑誌に掲載されていたゲームのソースコードをパソコンに打ち込んで遊んでいたり、場合によっては自ら開発したゲームを雑誌に投稿し、それが掲載されるような強者もいたとされる。
義務教育の範囲を超える高等数学の知識が必要となる人工知能や信号処理、暗号、3Dグラフィックス関連製品の中核部分の開発、より深いレベルでコンピュータ工学や低レイヤーの知識が要求されるプログラミング言語やコンパイラ、データベース、OSやブートローダ、BIOS、デバイスドライバ、CPUやそれのエミュレータ、組み込み系の開発ならいざしらず、ライブラリの寄せ集めでどうにかなる(と「技術系インフルエンサー」が主張しているような)Webアプリケーションの開発や同じように出来合いのライブラリであるWordPressでのWebサイト制作(これは「技術屋」ではなく「ホームページ屋」、すなわち「Webデザイナ」の領域と思う)で「プログラマ」や「エンジニア」を名乗れるのであれば、前述のマイコン少年のように小学生どころか幼稚園児や数字を理解できて数が読める賢いゴリラやチンパンジーでもちょっと勉強すれば「プログラマ」や「技術系インフルエンサー」になれるのではないだろうか。
現実問題、ゴリラやチンパンジー程度の知能しか無い私も(自分でサーバ機やルータを用意し、自らルータを設定した上でサーバにCentOSをインストールし、自ら設定した)WebサーバにWordPressを導入してこのWebサイトを運用している以上、「プログラマ」や「エンジニア」と名乗って問題は無かろう。
世の中には「技術系インフルエンサー」ほど前に出てくることは無く、彼らほど目立たないものの、彼らが習得している技術をちょっと学び直せば簡単にそれを習得し、何かが作れるレベルに到達できるようなエンジニアなんぞざらに存在することであろう。
例えば止めることが許されないミッションクリティカルな業務システムやフリーズしたら不良品として返品を要求されるような組み込み機器のファームウェアの設計やコーディングを行っている優秀な人がWeb界隈でよく使われる言語やツールの使い方を覚えれば、一通り学んだとされる「初学者」やプログラミングスクールの卒業生、一流大学の理系学部やそこの計算機関係の専攻ではなく畑違いの文系学部を卒業し、新卒で入社した未経験者よりも効率的に動作するソフトウェアを開発出来る可能性が高いのではないか。
そういった目立たないものの高い技術や知識を持った人々がいる以上、ライブラリの寄せ集めで「いっぱいいっぱい」と言うてるような「技術系インフルエンサー」はもう少し謙虚になるべきではないだろうか。
今すぐ辞めて欲しい、「Ruby on Rails勉強してます」「CakePHP勉強してます」 – sumyapp
ちなみに、私がプログラミング「らしいこと」を始めたのは学生の頃。自動制御の一環としてシーケンス制御などと一緒にマイコン(H8)のプログラムをアセンブリやCで開発したのが初めてのプログラミングらしいことである。
同時に当時話題となっていた「ユビキタス」、今で言う「IoT」にも興味があったことから、学校の授業とは別にWebやサーバ、それ向けのOS、当時主流であったサーバサイドの言語の一つであるPerlも学習していた。丁度その頃、ケータイゲームの爆発的な普及により、サーバサイドで処理を行うアプリケーションサービス、今で言う「クラウド」の有用性が人々に認識され、イーモバイルがサービスを開始したことでデータ通信料の低廉化が始まった頃でもある。
同じCで書くとはいえどもマイコンにprintfやそれ用のstdio.hみたいなライブラリは存在しない。そのため、液晶表示器に文字を表示させるためにはその表示器の仕様を確認した上でどのようにデータを送信すれば表示させるかを理解してprintf関数相当の物を自ら実装しなければならない。
そういった経験のある人がWebプログラミングをいざ触ってみると、単に”print”(Perl)や”println”(Servlet)と書けば文字が表示できる言語や環境、POSTやGETで送信されたデータをデコードし、自動的に配列に格納して簡単にアクセスできるフレームワークやSQL文をほとんど書かずともデータベースから情報を引っ張ってこれるActiveRecordのようなORマッパーを実際に触ってみると「くそ楽」ということになるのは言うまでも無い。
Tomoaki Nagahara
1 年前(編集済み)
まぁ、低レイヤーを理解できなかった人の逃げ口上やね。我々なんかは、低レイヤーを理解した上で、 Web系なんてめっちゃ簡単やん!ってスタンス。 Web系でもういっぱい、いっぱい、難しいですわーってレベルの人がメンターやってるサロンの養分ってもうあかんやろ。
Webエンジニアが知るべき低レイヤーの技術とその学習方法 – Qiita
その「くそ楽」なライブラリやフレームワーク、ORマッパーを使ってしまえばHTTPやその上で行われるデータの送受信、SQLについて何も理解せずとも簡単なWebアプリケーションが作れてしまう。
すなわち「軽」自動車の燃料は「軽」油と思い込み、軽油を給油する人々のWebエンジニア版みたいな人々や事例が今後続出していくのでは無いだろうか。
そう考えると、今のWeb業界では技術で課題を解決しようと考える「技術屋」や新しい技術が登場した際まずはそれで何が出来るかを考え、あくまで課題の解決はおまけと考えるような「技術オタク」ではなく、技術への興味や深い理解はなくても一見すると小綺麗に見え、気持ちよさそうなことばっかり言う「営業屋」やド派手な「チンドン屋」みたいな人々が求められているのでは無いだろうか。
この例を、数学にあてはめてほしい。
本気で言っているのだが、学校で学んだ数学は、本当に実生活の役に立っている。といっても、こと数学に関しては、高校でぼこぼこにされてしまったクチなので、あまりたいしたことは言えないのだが、それでも、実生活のあらゆる場所で、考え方、方法論、判断等に数学的概念は利用され得る。
因数分解にしても、足算の羅列を乗算のまとまりにするというそれだけの行為が、いかに生活にとって応用可能範囲が広いことか(ばかな人間をマッカーとしてくくりだし、東京湾の埋め立てに使うとか……あ、この例は前にも使ったな)。
もっと踏み込んだ例を言えば、VRMLの記述は簡単にできるが、その技術的背景には、行列があり、そこを知っているのと知らないのとでは、雲泥の差がある。3Dソフトを使って、簡単にリアリスティックな立体を描くことはできるようになったが、それも行列やベクトル演算の恩恵あってこそである。それをエンドユーザには、関わる必要がないように構築するのが、技術者の能力であるが、その部分をまったく無視して利用するのが、果たしてまっとうなユーザの在り方であるかどうか。(どこが悪いん?って言うんだろうなぁ、くされマッカーが)
TV受像機の技術的背景など知らなくても、テレビを観ることはできる。ギアチェンジの技術的方法論など無視しても、クルマは運転できる。インターネット・プロトコルについて具体的に知らなくても、インターネットにアクセスできる。でも、それでいいの? と問いたいのだ。最低限ワタシは、テレビがなぜ見えるのか、その概念だけでも知りたい。オートマチックのギアチェンジのために、どれだけの技術者が頭と身体を使ったのかを聞きたい。インターネット技術の軍事的背景を理解してから、アクセスしたい。
すぐに「使いやすさ」とか「インターフェイス」とかいうセリフを吐くマッカーには、理解不能な言説であろうけれど、これは、見解の相違といったものではなく、知性の使い方がマッカーにはわからないというだけのことだ。「学校で学ぶ数学なんて、社会生活の何の役にも立たない」とかいう考え方をしていると、あっというまにマッカーができあがる。日本で、知性の抜け殻のようなばかマッカーが多いのは、たぶんそういう理由だろう。