技術

【ひたすら座学はNG】プログラミングが出来るようになる最短の道

私は小学生の頃にプログラミングを独学で学んだのが始まりでした。

また大学もそっち系の学部だったため周りにも根っからのプログラマーが多かったのもあり、「プログラミングなんて独学でできるでしょ!」っていうスタンスでした。

 

さらに今はインターネットに情報も溢れていて、便利にプログラミングできるツールも充実しています。

ここまで至れり尽くせりで、なぜ独学でやらないのか全くわからない!

 

しかしスクールのメンターをやって初心者に教えていると、だんだんその考えにも疑問を抱くようになってきました。

 

今の人達の方がプログラミング学習大変そう

 

今回は、その理由とどう学習したら良いかを書いていきたいと思います!

今の方がプログラミングが難しい3つの理由

今までの歴史が重い

私がプログラミングを学んだ頃は、プログラミングの歴史もまだ浅く私の成長とともに技術の進歩もしてきました。

しかし今からプログラミングを学ぶ人は、何十年間の歴史の全てをいきなり覆いかぶさることになります。

 

例えるなら私は算数を勉強して、中学数学、高校数学と学んできたのに対して、今の人たちはいきなり高校数学から学ぶようなものです。

いきなり算数も知らないのに高校数学の教科書をみて、解けるわけないですよね。

なのでいきなりRailsの勉強をしようとしても、「データベースってなに!?オブジェクト指向って何!?」と、途方に暮れてしまうわけなんです。

便利になりすぎて細かい部分が見えなくなっている

今まで私たちがやっていたようなことも、今はツールがやってくれるようになってきました。

例えばプログラミングでメモリを意識することはなくなりましたし、Railsはもはや魔法のように1行のコードで色々なことをやってくれます。

つまり何をやっているのかわからなくてもツールに任せることで実現できるようになりました。

しかしそれは何をやっているのかわからなくなったということでもあります。

 

「何が起きてるのか分からないけど、これを書けば動く」

 

そんなものばかりなわけで、モヤモヤしながら学習を進めていくことになっていきます。

おそらく、チュートリアル通りに作業して何となくわかった気にはなることは出来るでしょう。

しかし1からものを作ったり、問題が起きたときに対処することができなくなってしまっているのです。

情報が溢れているせいでハードルがあがっている

昔は世の中に情報もなかったため、「こんな書き方が良い!」とか「これはダメな例」みたいな情報になかなか出会えませんでした。

そのため今でいうダメな書きかたで思いっきり書いていました。

 

けれども、今は調べると「こういう作りかたが良い」「こう書くべき」「これはダメ」ってすぐ言われてしまいますよね・・・。

そのため一度もコーディングをしたことない初心者でも、変に理想が高くなっちゃうんです。

 

そういったものはあくまで動くものが出来た上でもっと良い実現方法はないのかというものです。

余裕がある貴族たちの遊びです。

それを動くものが出来ない状態が気にしていたら、いつまでたっても動くものはできません。

 

料理もしたことない人が「塩をつけて何分寝かせたら美味しくなる」みたいなことばかりを勉強していてもしょうがありませんよね。

最初はまず料理を作れるようになってから、そこからどうやったら美味しくなるのかを考えれば大丈夫です。

 

実のところ、私自身これでなんども失敗してきました。

なにか新しい技術に触るとき、「テストコード書かないと」とか「Googleのひとの書きかた参考にしよう」とか欲を出してしまいます。

そうして、なにも完成しないまま辞めてしまったことがなんどもあります・・・。

 

なので最初はどんなに汚くても良いから動くものを作るのがまず第一です。

知ってしまうと「ダメな書き方してる…」と考えてしまうので、むしろ最初は知らない方が良いんです。

とにかく動くものを作りましょう!

プログラミング学習の方法

最小の勉強でものを作る

さて、これまでの点を踏まえてどう学習すれば良いのでしょうか。

それは最小の勉強でものを作るということです。

 

例えばWebサービスを作りたいと思ったときに、

「HTMLの勉強してCSSの勉強してJavaScriptの勉強してRubyの勉強してRailsの勉強してMySQLの勉強してGitの勉強して…じゃあ作ろうか!」

なんてのは最悪です。

その頃には「HTMLって何だっけ…?」ってなってます。

 

なんで、まずHTMLを勉強してHTMLだけでホームページを作って公開しちゃいましょう。

それでまずあなたの作品が1つ出来上がります。

 

何ヶ月もプログラミングの勉強をしてる人から「私はいつになったら作れるようになりますか?」って質問を受けたことがありますが、ものを作るだけなら1日勉強すれば出来ます。

HTML書いてそれをインターネット上にあげればホームページができるんです。

昔のホームページは全部こうですし、今もそういうホームページはあります。

変にハードルをあげてるから、作れなくなってしまっているだけなんです。

 

なんで、まず何か1つを作りきりましょう。

変えてみる

作り終わったら、どんどん改良していきます。

具体的には、CSSの勉強してデザインを良くしてみたり、JavaScriptの勉強をして動きをつけてみたりするのです。

 

ある程度作りたいものが作れるようになったら、「こういう書き方が素晴らしい」みたいなものを追求してみたり、「SEO対策をしてアクセス数を増やしてみる」、「独自ドメインをとってみる」みたいなこだわりも良いかもしれません。

 

そして行き詰まったら次の技術を勉強していきましょう。

ここまでの知識だけでも、GoogleCalendarみたいなものも作ることができます。

遅延評価学習法

「どのタイミングで、なにを勉強すればいいの?」についてなんですが、オススメの学習法は遅延評価学習法です。

 

遅延評価学習法は、その知識が必要になったときはじめて学習する方法です。

「これを勉強したから、その知識を使ってなにか作ってみよう」ではなく、「これをやりたいからやり方を調べよう」というものです。

 

一流のハッカーの学習法がこれだというお話もありまして、まわりを見渡してもアウトプット優先で勉強する人は優秀だったりします。

 

そもそも勉強ととらえてなくて、実現方法を調べると考えたほうが良いかもしれません。

本を買っても律儀に全部読まないで、目的を達成するのに必要なところだけを読めば良いです。

 

こういった目の前のことだけ学習する方法に限界もありますが、それは目の前のことが当たり前にできるようになった先の話です。

とにかくものを作るのが第一というわけですね。

暗記する時間はもったいないです

「HTMLタグ多すぎて覚えられないー」ってひともたまにいるんですが、まず覚える必要はまったくないです!

 

なぜかというと、学校のテストと違ってすぐに検索できるし、本の持ち込みもできるからです。

「覚えている」「覚えてない」の違いは、かかる時間が数秒違うってだけです。

頻繁に使うようなものだと差が出てきますが、そういうものは自然と覚えます。

逆に頻繁に使わないようなものは、そもそも覚える価値もないってことです。

 

実のところエンジニアも覚えていないことが多くて、わりと必要になるたびに調べてたりします。

ですので大事なのは、「調べられるようになること」と「それを使えること」です。

 

教科書を持ち込まずに良い点を取れるようになる必要はなくて、教科書を持ち込んだうえで良い点数が取れるようになりましょう。

そのためには、「良い教科書を集める」とか、「教科書の調べかたを知る」というのが覚える以上に重要なのです。

おわりに:プログラミングが出来るようになる最短の道

なぜ今のプログラミング学習は難しいの?というお話から、どう学習すれば良いの?というお話までしていきました。

 

プログラミングを教えていて、できる人とできない人の一番の違いはアウトプットの量です。

知識はアウトプットすることで身につきます。

一度も使わずにひたすら座学を続けても、その知識はスキルとして定着しません。

 

この辺りは、ベストセラーにもなった「学びを結果に変えるアウトプット大全」に乗っていまして、「本当に?」と思われるかたは一度読んでみることをオススメします。

というわけで、繰り返しになりますが「ものを作る」ということを何より優先して学習を進めていきましょう!