SSブログ

コンピュータの基礎はいつ学ぶのか? [プログラマー現役続行]

かなり前になりますが、「ソフトウェア開発組織が持つべきカルチャー」と題した一連の記事で、「コンピュータの基礎を教える」という記事を書いています。

その中で、コンピュータの基礎として以下の3項目を挙げています。
  • コンピュータの基本原理 CPUの基本構造、メモリー回路、割り込み動作、etc
  • オペレーティング・システム Linuxなどのオペレーティング・システムの基本的な仕組み
  • データ構造とアルゴリズム リスト、木構造、ハッシュテーブル、探索、O標記、etc
今日、これらの知識がなくても、ソフトウェア開発ができてしまいます。米国の大学のようにきちんとコンピュータサイエンスを学んだ多くの学生がソフトウェア開発に従事するのと異なり、日本では、文系の学生を採用して、社内で数ヶ月教育して、後は現場に任せる企業もまだ多いのではないかと思います。

長年、JavaやGoの技術教育を行っていますが、ソフトウェアを実行する環境における「スタックとは何か」、「スタックには何が積まれるのか」、「スタックのアドレスはどこに保持されているのか」といった「CPUの基礎」をきちんと分かっていない人がほとんどと言っても過言ではありません。

過去のブログの記事にも色々と書いていますが、さまざまな技術書の読書会や強制的な学習を通して、対象は限定されていますしたが、1998年から2017年ぐらいまでは、コンピュータの基礎を若手のエンジニアに学んでもらいました。

2018年6月からはメルペイ社でソフトウェアエンジニアとしソフトウェア開発を行っています。昔と違って、昨今はさまざな技術に関する勉強会、イベント、Meet Upなど盛んに行われており、メルカリ/メルペイでも多くを主催しています。それらのほとんどは、最新のソフトウェア技術に関する内容が多いです。
※ 平日の19時以降とかに開催されることが多いため、私は一切参加していません。

そのような勉強会やイベントに参加している若手の人達は、最新のツールやフレームワークを学び、ソフトウェアを開発し、さまざまなツールやフレームワークを使いこなしていると思います。しかし、一方で、どれだけきちんとコンピュータの基礎を学んでいるのでしょうか。

今日のウェブ系のサービス開発では、フロント側もサーバー側も、コンピュータの基礎を知らなくても開発できてしまいますし、マルチコアの時代になっても使っているプログラミング言語の「メモリモデル」を知らないまま開発している人も多いと思います。そうなると、いつ「コンピュータの基礎」を学ぶのでしょうか。あるいは、一生学ぶことなく、ソフトウェアエンジニアのキャリアを終えるのでしょうか。

私自身がすべてを知っているとか学んだとかは思っていませんが、60歳を目の前にして、日々自分自身でプログラミングしながらソフトウェア開発をしていると、今の若い人達が60歳になる頃には同じようにソフトウェア開発している人がどの程度残っているのだろうか、ソフトウェアエンジニアとしてのキャリアを終える前に「コンピュータの基礎」を学ぶのだろうかと思うことが多くなっています。

コメント(0)