シアトル生活はじめました

20年以上すんだ東海岸から西海岸に引っ越してきました。MicrosoftのUniversal Storeで働いてます。

プログラミングは1/4以上が「独学」- 大切なのは「学び方を学ぶ」こと。

 

f:id:watanabe_tsuyoshi:20191213115105p:plain

ソース : https://info.hackerrank.com/rs/487-WAY-049/images/HackerRank-Student-Developer-Report-2018.pdf

これ、HackerRankという求人系の会社がまとめたレポートの一部ですが、

27.4%がコーディング(プログラミング)を「独学で学んだ」

37.7%が「独学と学校で学んだ」

 とあります。

おそらくは50%以上が「独学」をしている

「独学と学校で学んだ」の37.7%中、どのぐらいの割合で独学なのかは分かりませんが、自分自身の体験から言うと学校がクラスとして提供するプログラング言語が「時代にそぐわない」という理由で、別のプログラミング言語を独自で勉強する、という状況はよくあると感じます。ざっくりと言って2人にひとりはある程度の独学をしていると思いますし、卒業して5年、10年、15年と経つと当然ながらその時点での知識の多くは独学になっていきます。

私の場合(古い話ですが)、ADAという言語のクラスを取りつつ(教授がアンチC++で、ことあるごとにDisってました)、ADAが防衛産業でしかほとんど使われていないことと、C++が当時のオブジェクト指向言語の主流だったことから、独自にC++を学びました(MITにC++言語の設計者、ストロブストラップ博士が講義に来た時は授業そっちのけで聞きに行ったものです)

今の学生は「pythonの人気」を当然意識してますから、大学でpythonのクラスが無かったとしたら当然独学しているはずです。今はYouTubeなので無料で講義やチュートリアルが学べますし、GitHubなどからいくらでも参考になるコードは探せますし、ハマったらStackoverflowで質問するだけですから、この傾向は強まる一方でしょう。

独学しなくてはならないのはコーディングだけではない

そもそも、プログラミング言語はたんなる「言語」であって、その言語を駆使して「様々な対象」をプログラミング(=自動化)していきます。その対象は、例えばデバイスなどのプラットフォームとそのAPIであったり、ビジネスのドメインに関連したワークフローであったり、セキュリティー関連の取り決め(プロトコル)であったり、様々です。そういったものは、変わるものは本当にあっという間に変わっていきます。もう廃れてしまって使っていない技術は、数え上げたらきりがありません。学ぶ→廃れる(別のものにとってかわられる)→学ぶ、のループが永遠に続きます。

簡単に言うと、ソフトウェア開発者とは「終わりのない学び屋」なんです。

「学び方」を学ぶ方が大切

よく親御さんが「うちの子供にどうやってプログラミングを学ばせるか」悩んでいたり、どのプログラミング言語を学ぶのがいいかを子供自身に代わって聞く人がいます。子供の将来のために親が出来ることをやるという意味で、それはとても良いことです。

ですが、実際に世の中では「独学スキル」の方が特定のプログラミング言語を学んで知識を身につけるよりも大切かもしれません。独学とは言うまでもなく、自分でサブジェクトを学ぶことで、その「方法」は自分で自分に教えるということです。

ここで「自分なりの学び方」が分かっているかどうかで、そうでない人と大きな差が出て来ると思います。

どんな学び方があるか

というと、これはまさに十人十色ですが、プログラミングに関して言えば「習うより慣れろ」が王道だと思います。私もそれが基本戦略ですが、加えて私に向いたやり方として「隅から隅まで、じわじわ学ぶ」とうのもあります。例えば去年の今頃Fusion360という3D デザインツールを独学で学びましたが(このブログでも紹介しました)、そのやり方の1つに「知らない」をひとつずつ「知ってる」にして、オセロのように進めていきました。これは私が昔から不慣れなシステムやソフトウェアを使う時の戦略です。周りでこの方法で学んでいるひとはあまり見かけないので少数派だと思います。周りには「天才派」の方が多いので、その人たちはその場その場でどんどん学んでいるようですが、地頭的に普通レベルの私はコツコツやっていくやり方があっていて自分もそれが好きです。

要は、こういう感じで「自分はこうやって新しいことを学ぶ」と人に説明できるのであれば「学び方」をすでにある程度習得していると言えます。

親ができるもっとも大切なこと

は学ぶことが楽しいということを実践を通して見せることだと思います。親自身が「分からない」が「分かる」になって、「出来ない」が「出来る」になって、それが喜びを伴うということを示すこと。これは別に親がプログラミングを学ぶべきだというわけではなく(好きならそれもあり)、大人になっても学びは続けていける、続いていくものなのだ、という風に思えるようになることが大切だと思うのです。