見出し画像

Web系上場企業CTOが考えるプログラミング初学者の学習について

こんにちは、GMOペパボ株式会社 CTO室 鹿児島オフィスチームのよしこです。


今回は弊社CTO 栗林健太郎(通称: あんちぽ。以下、あんちぽさん)の言葉をご紹介しつつ、プログラミング初学者の独学について、私の思いをお伝えしたいと思います。

※ このnoteは、あんちぽさんから引用しているものの基本的に私一個人の考えに基づいた内容です。
弊社やあんちぽさんの考えを代弁するものではありません


きっかけは数日前、Twitterでプログラミングの独学についての投稿を見かけたときでした。
次のように初学者の独学に対して否定的な見解が述べられていました。

- プログラミングの独学にはメリットがない
- 独学は無駄な時間が多くて非効率である
- なるべく早く優良なスクールに通うべきである

「主張に関して理解できる部分も多く、反論するほどディスカッションの余地が残されているような気もしない。なのになぜかモヤモヤする

私は、そんな感想を持ちました。


そして、一昨日
弊社Slackのあんちぽさん一挙手一投足レポートチャンネル(通称CTOジャーナル)に、あんちぽ流 未履修分野学習法が流れてきました。
それを読んだとき、このモヤモヤが言語化できた上にスッと飲み下すことができました。

あんちぽさんご本人から公開承諾をいただいているのでご紹介します。


(引用)学習効率が下がってきてうれしい

以前に書いたが、僕があらたなジャンルを勉強するときのスタイルとして、とりあえず入門書をたくさん読むというのがある。

いきなりちゃんとした教科書を読むより、自分でも理解できるものを何冊も読むほうが挫折しない。また、何冊もよむことで、入門書とはいっても多少は扱う範囲がバラけているので、そこそこちゃんと全体像を得られるだろうと思う。
そして、何冊も読んでいくとだんだん初めて見るようなことや理解できないことが少なくなっていく。つまり、学習効率が低くなっていく。そうなるとうれしい。次のステップへ行く段階だということだからだ。そんなわけで、いまやってることも次のステップへ。

このやりかたは効率は悪いしお金もかかるかも知れないが、挫折はしにくい(もちろん、本を何冊も読むことに抵抗がないという前提はあるが)。
どんなに効率がよくても自分が挫折するとゼロなので、それなら効率悪くても挫折しないほうがいい。

(引用終わり。原文ママ)

本人のブログに詳しい内容が投稿されましたので、そちらもご参考ください!


結論

今回、私がお伝えしたいことはこの一言に集約されます。

どんなに効率がよくても自分が挫折するとゼロなので、それなら効率悪くても挫折しないほうがいい。

何を当たり前の事を言っているんだと思われるかもしれません。
挫折についての言及は「そもそも論」の議論になってしまうので無意味であるとお考えの方もおられることでしょう。

しかし私は、プログラミング学習について――こと初学者に限った話では、まず「挫折しない」ことに全力を上げるべきであると考えています。


もう少し具体的に落とし込みますと、次のような主張です。

学習方法について、つまるところ正解や間違いはない。
(避けるべき道はあるにしても)

プログラミング初学者が模索・選択すべきは、
「自分に合っている学習方法」であって
「効率的な学習方法」ではない。

なので、プログラミング初学者の独学は、自分に合っていると本人が判断した上で継続できるのであれば、有力な選択肢の1つであると私は考えます。


本来、当noteではこのことについて述べようと思っていたのですが、あんちぽさんの言葉を最後までお届けしたいので別の機会に譲ろうと思います。



あんちぽさんが考えるプログラミング初学者の学習について

さて、上記のあんちぽさんの引用は、何もプログラミング初学者の学習方法について言及したものではなく、あくまであんちぽさんの自己流学習方法について述べられているものです。
それを私がプログラミング初学者の独学について置き換えただけに過ぎません。

そこで、このnoteを作成するに当たり、あんちぽさんからプログラミング初学者の学習に関する補足をいただいてきました。
併せてご紹介いたします。


学習するものは「何なのか」

学ぶ対象が学術的な裏付けのあるものなら、独学でも人に教えられるのでも、良い学び方はあるとは思います。

その前(筆者注:学び始める前)に、自分の取り組む対象が学術的に体系化された領域であるという認識を持つ必要があるでしょう。
たとえばマネジメントを勉強するといって、どこかの社長が書いたこうやったら成功したみたいな本ばかり読むひとがいますが、それももちろんいいけど、そもそも当該領域が学的に体系化されたものである認識をまず持つ必要がある。
そうすると、やるべきことは変わる

「学術的な裏付けがある」とは、学問(体系化された知識)を学ぶということです。

別の言い方では、個人や特定事例による主張や経験則によるもの、知識に偏りがあるものを対象に学ぶことを避けるとも言えます。
(本当は避けなくてもいいんですが、偏っていると自覚する)


第一に概論を把握する

どんなジャンルでもそうですが、全体感をもつこと。
そのためにはその分野の歴史的ななりたちや、扱われてる話題の大雑把でもいいから見通しが必要。

学問の知識量は莫大ですので、初学者が細微に至るまで学習するのは非効率ですし、必要ありません。
なので、まずは学問的な概論を学習することで、全体像(感覚)を把握に務めるべきです。
各論の学習は全体像を把握した後にしたほうが効率的ではないでしょうか。


私はプログラミングをよく建物の建築に例えて学習しているのですが、
まず「家はなぜ建っているのか」「建築方法にはどのようなものがあるのか」「家の基礎はどのような役割なのか」などを大まかにでも理解することが大切であるということです。
いきなり、「家の柱にはどの木材が適しているか」や「電動ドリルの使い方・おすすめ商品」から学習する必要は初学者にはないのです。


また、これまでの建築方法の変遷を大まかに理解することも大切です。
それによって、現在の成り立ちの理由が時系列的な根拠をもって理解できます。加えて、これからの流れ(変化)を見通す力にも繋がります。


初学者にとってのスクール(先生)の役割

独学か先生につくかという議論は、先生につけるならその方がいいとは思いますが、そもそも上記に議論したような前提があるわけですね。しかし、先生がそこを担保できるかどうかというのは自明ではないということは自覚した議論がなされるべきでしょう。
で、世の中のだいたいのことは学問になっているわけで、あることの専門家だからといって必ずしも他の分野に敬意を払えるわけではない。Twitterなどみてると、自然科学の専門家が政治的にはナイーブな話をしたり、社会科学の専門家が自然科学的におかしなことをいうみたいなのは散見される。

繰り返しになりますが、初学者が第一に行うべきは、学ぶべき対象(今回はプログラミング)の全体像の把握です。

そして、全体像の把握には、可能な限り認知バイアス(興味ある対象ばかりを学習・記憶してしまう)を排除しないと、次のような情報を集めてしまう可能性が高まります。

- 優先度が低い情報
- 役に立たない情報
- 誤った情報
- 古くなった情報
- 偏った情報
- 悪意ある情報

そのために(筆者注:初学者が認知バイアスのために全体像を失してしまう)先生という垂直的な外部性があり、自分の興味とは関係なく歴史=垂直性を提供してくれる

優良なスクールに通ったり有識者にレビューをもらうということは、
認知バイアスを避けるためにとても合理的です。積極的にそうするべきです。
加えて、効率よく全体像を把握できるということも見込めます。


スクールも学習のための手段である。

僕は独学よりも先生につくほうが基本的にはいいと考えています
それはさっきも述べた理由で。
そして、先生につくというのはTwitterのひとたちが議論してない前提がいろいろあるというのもさっきいった通り
そうすると先生につくというのは手段であって、本質的なのは、自分とは別の垂直的な歴史性を導入できるかどうか

先生につくということは学習方法の手段でしかない。忘れがちですが大切なことです。
目的を誤っている状態にも関わらず最良の手段について検討したところで、見当違いな結論に至ってしまいます。


ということで、あんちぽさんは基本的に先生につくことをオススメされていました。

今回述べられているその理由は、以下の通りです

- プログラミングが学問である自覚を持って「学問の学び」を行うほうが良い
- 最初に全体像の把握と歴史を大まかに学ぶほうが良い
- 学習の認知バイアスを排除したほうが良い
(具体例として、他人から教えてもらう・複数の入門書を読むなど)
- 以上を担保するために、独学よりも先生の下で学習するほうが良い



あとがき

以上のお話が、弊社CTOあんちぽさんの学習方法及びプログラミング初学者の独学についての見解でした。
私個人の解釈を交えてお伝えしましたが、分かりづらい部分や解釈違いな部分もあるかもしれません。


ここまで読んで「結局あんちぽさんもスクール派じゃん! 独学ダメじゃん!」となった初学者の方、結論はまだ早いです。
なぜなら、ここで述べられているのはあくまで「初学者の効率的な学習方法」についてだからです。
例えるなら「プログラミング初学者が最速でエンジニアになる学習方法」です。これについては私も異論ありません。


しかし、先述しましたが初学者が最優先すべきは「自分に合っている学習方法」であると私は考えます。

もちろん、「効率的な学習方法」は大事です。「非効率でいい」とも言いません。独学が「多くの人に合っている」とは微塵も思わないです

ならばなぜ、ここまで私が「自分に合っている学習方法」を推すのかと言いますと、プログラミング初学者が学習効率を求めた場合のドロップアウト率が圧倒的に高いことにその理由があります。
これについては、また別の機会に。


つまるところ、あんちぽさんのこの一言に全てが集約されていたのでした。

どんなに効率がよくても自分が挫折するとゼロなので、それなら効率悪くても挫折しないほうがいい。


以上、よしこでした。

皆さんのご意見・ご感想をお待ちしております。
お付き合いいただき、ありがとうございました!

この記事が気に入ったらサポートをしてみませんか?