見出し画像

プログラミングは何から始めるべきか論争

プログラミング言語をどこから始めるのが良いのかというのは昔からある問題です。大学の情報教育の変遷からプログラミングスクールの動向も踏まえ、2000年以降を中心に私が見聞してきた範囲で掻い摘んでお話していきます。

【情報教育の変遷】2000年頃 C言語→Java

私が大学(慶應SFC)に入学したのは2000年ですが、この年はプログラミングの初級授業がC言語からJavaにシフトした時でした。情報処理教室にはSolarisがずらりと並んでいた頃です。

アセンブラ原理主義は居ましたが私の居たネットワーク界隈では「Cでも良いんじゃない?」という温度感でした。しかしJavaへのシフトについては満場一致だったわけではなく、先生方の思想込みで喧々諤々の議論が行われたようです。Javaが選ばれた背景としては、「これからはオブジェクト指向だから早期に身に着けてもらおう」という意見が強かったようです。また、Servletを利用することプログラムや数式のアウトプットを視覚的に分かりやすくして初学者の気を引くこともまた狙いだったようです。

一方で基礎を知るべきだ、メモリ管理を知るべきというC言語を推す一派は継続して存在し、基礎授業とは別の授業でC言語を教えていました。構造体やポインタなど理解しなければならない論理的な仕組みに対して挫折する人は少なくありませんでした。また、C言語単体では画面に文字列が出るだけなので一部の人以外には響きにくいというのも傾向としてありました。

HTML/CSSは情報基礎の一角で数時間やるに留まりました。90年代後半まではHTML 1ページ 5万円という大学生のアルバイトが成立していましたが、2000年にはそのムーブメントは去りました。perl、PHPのアルバイトがチラホラ存在したり、SOAP通信のプログラミングアルバイトも見たことがあります。

マイクロソフトが開発環境を無償提供していたこともあり、VC++などで3Dプログラミングをする授業もありました。生協の前でCD-ROMを配っていた記憶があります。Azureの教育機関への対応も手厚いですがマイクロソフトはあのあたりはうまいですね。

【情報教育の変遷】2006年頃Java→JavaScript

次の転機があったのは2006年頃です。それまでJavaが7クラス、Cが2クラス、Perlが1クラスなどのクラス割合だったかと思いますが、メインのプログラミング言語をJava Scriptにしようという動きがありました。

JavaScriptが採択された理由は下記です。

  • 普段慣れ親しんでいるブラウザというアプリケーション上で動くことによる身近に感じてもらいやすい

  • 多少エラーが起きても動くため成功体験を積みやすい

先生方の中にも後者の理由を元に「Javaはまだ許せたが、JavaScriptは許せん!」「エラーを無視するな!」と息巻く人は少なくありませんでした。

【情報教育の変遷】2015年頃 RoRとプログラミングスクール

時は下り、民間のプログラミングスクールが登場し始めます。ハローワーク界隈で助成金付きのAndroid講座などもあり、量産されたこともあります(その後iOSも登場)。当時はAndroidJavaだったわけですがJavaの概念の理解とAndroid特有のお作法はハードルが高く、職業訓練校経由で採用したできる人材は元々SIerでJavaを2年ほどやっている方でした。やがて助成金目的で「皆勤賞だがずっと寝ているご年配の方々」が増えていきました。

そしてWeb系プログラミングスクールの流れがやってきます。RoRのテキスト(ソースコード)を写経)して良しとするプログラミングスクールが2015年頃から増えていきます。下記コンテンツでもこのあたりは掘り下げていますのでご覧下さい。

【情報教育の変遷】WordPress、JavaScript、HTML/CSS

2018年頃からだと思いますが、新卒採用イベントなどで「Reactでポートフォリオを作りました」という方が増えました。よくよく話をお聞きすると既に地元企業のコーポレートサイトを作っていたりもします。しかし「どの部分をReactで作ったのか」と質問すると答えられないという事象をよく目にするようになりました。彼らが頑張ったのはReactではなくHTML/CSSだったのです。

2019年後半からは情報商材やオンラインサロンの文脈で未経験から数ヶ月で売り上げて年収一千万という言説が出てきます。未経験から直ちにマネタイズしたいというモチベーションもまた、これらの技術を浅く学んで換金していくムーブメントに繋がっています。

身近なものや普段直接触っているものから始めることの是非

プログラミング教育において「成功体験」というのは重要ではあります。全くのゼロから始めて理解しないまま文字列を書き、その結果が黒い画面で「Hello, World」だと地味過ぎて訴求しにくいというのは分からなくはないです。

スキルセットの拡張と難易度(抜粋)

昔寄稿した記事でも書いたことがあるのですが、キッカケは何でも良いとは思うものの、自学自習を前提にするとコンピュータに近いものからユーザーに近いものへ向かう人はそれなりにいるのですが、ユーザーに近い方からコンピューターに近いものへ深掘するとなると途端に実現する人が減ります。

グラフィカルな結果としての見た目の華やかさは魅力的ですし、コンピュータの基礎に近いものを後から取り組もうとすると多くの人の場合は「先に習得した(ユーザーに近い)スキルセットで事足りるのでは?」と心が折れがちです。人間だもの。

プログラミング言語にせよ、インフラにせよ、技術革新の一つの側面として「考慮が必要で面倒なことのマスキング・代行による構築コストの削減」があります。以前、CakePHPエンジニアを自社フレームワークを採用したJavaエンジニアに仕立てた事業を見たことがありますが、socketの概念を知らないままリリースされ、socketがopenされっぱなしになりインフラ障害に繋がったことがあります。CakePHPを使っている分にはマスキングされて意識しなかったネットワーク周りの知識を急に問われたことによる壁です。先にややこしいところを丸めてくれたものにどっぷりと浸かると、考慮が必要な対象が増えることは苦痛を伴います。

コーディングから始めてフロントエンドに進むのも難しいですし、フロントエンドからサーバーサイドに行くのも難しいです。インフラも同様で上位レイヤで動作するクラウドからオンプレミスに行くのも結構な忍耐に近い学習が必要です。これを実現しようとすると一部企業でCOBOLを新卒に教えるように、半年〜1年クラスのきっちりとした研修を企業が実施する必要があるでしょう。自学自習の場合であれば何か酔狂な理由やモチベーションが必要です。例えば突然CPUとメモリ管理に目覚めたとか、古いコンピュータやゲーム機器を使いたくなったとか、どうしてもハッキングしたいプロダクトがあるなどです。

「最初に習得する言語は何が良いか」というのは宗教戦争に近いものがあります。短期的に得られる成功体験の必要性もあるでしょう。ただ人間という怠惰な特性を鑑みると、後から感じる面倒臭さを念頭において裏に近いものからやっておくことをお勧めします。C言語でポインタに涙する経験はあって損は無いですし、数年後にやるとなると当初以上のハードルを感じます。

執筆の励みになりますので、記事を気に入って頂けましたらAmazonウィッシュリストをクリックして頂ければ幸いです。
https://www.amazon.jp/hz/wishlist/ls/COUMZEXAU6MU?ref_=wl_share


頂いたサポートは執筆・業務を支えるガジェット類に昇華されます!