【ひたすら座学はNG】プログラミングが出来るようになる最短の道
私は小学生の頃にゲームを作りたくて独学で学んだのが、プログラミングの始まりでした。
また大学も情報系だったため周りにも根っからのプログラマーが多く、「プログラミングなんて独学でできるでしょ!」っていうスタンスでした。
さらに今はインターネットに情報も溢れていて、便利にプログラミングできるツールも充実しています。
しかしスクールのメンターをやって初心者に教えていると、だんだんその考えにも疑問を抱くようになってきました。
今回は、その理由とどう学習したら良いかを書いていきたいと思います!
今の方がプログラミング学習が難しい3つの理由
今までの歴史が重い
私が始めた頃は歴史もまだ浅く、私の成長とともに技術の進歩もしてきました。
しかし今からプログラミングを学ぶ人は、何十年間の歴史の全てをいきなり覆いかぶさることになります。
私は算数を勉強して、中学数学、高校数学と学んできたのに対して、今の人たちはいきなり高校数学から学ぶようなものです。
これではスタートラインに立つまでが遠すぎますよね...。
便利になりすぎて細かい部分が見えなくなっている
今まで私たちがやっていたようなことも、今はツールがやってくれるようになってきました。
たとえばRailsはもはや魔法のように、1行のコードで色々なことをやってくれます。
しかしそれは何をやっているのかわからなくなったということでもあります。
こんな感じでモヤモヤしながら学習を進めている人たちばかり目に入ります。
もちろんチュートリアル通りに作業して何となくわかった気にはなることは出来るでしょう。
しかし1からものを作ったり、問題が起きたときに対処することができません。
正解にとらわれてハードルがあがっている
昔は情報もなかったため、「こんな書き方が良い!」とか「これはダメな例」みたいな情報になかなか出会えませんでした。
なので今でいうダメな例を思いっきりしていました。
けれども、今は調べると「こういう作りかたが良い」「こう書くべき」「これはダメ」なんて情報がすぐに見つかります。
そのため初心者のうちから、変に理想が高くなっちゃうんです。
料理もしたことない人が「塩をつけて何分寝かせてキッチンペーパーで拭き取って...」みたいなことばかり考えて動けなくなってるような感じです。
まずは料理を作れるようになって、美味しさはそこから追求するものですよね。
ハードルあげると何もできない
実のところ、私自身これでなんども失敗してきました。
なにか新しい技術を触ったり、新しいサービスを作るとき、「テストコード書かないと」とか「Googleのひとの書きかた参考にしよう」とか欲を出してしまいます。
そうして、なにも完成しないまま辞めてしまったことがなんどもあります。
なので最初はどんなに汚くても良いから最小の努力で動くものを作ると心に決めています。
あえてあまり正解を調べないで、答え合わせは作り終わってからにすることもあります。
とにかく情報が溢れてるからこそ、インプットよりアウトプットを重視するのが大事な時代ではないでしょうか?
プログラミング学習の方法
最小の勉強でものを作る
さて、これまでの点を踏まえてどう学習すれば良いのでしょうか。
それは最小の勉強でものを作るということです。
学習しきらない
たとえばWebサービスを作りたいと思ったときに、
なんてのは最悪です。
ってなってます。
HTMLだけでサービスを作る
なんで、まずHTMLを勉強してHTMLだけでホームページを作って公開しちゃいましょう。
これなら、早ければ1日で自分のサービスができます。
このとき欲を出して見た目にこだわったりしちゃダメです。
あとで改善するつもりで、まずは必要な機能だけ持たせて公開しましょう。
改良してみる
作り終わったら、どんどん改良していきます。
具体的には、CSSの勉強してデザインを良くしてみたり、JavaScriptの勉強をして動きをつけてみます。
ある程度作りたいものが作れるようになったら、「こういう書き方が素晴らしい」みたいなものを追求してみたり、「SEO対策をしてアクセス数を増やしてみる」、「独自ドメインをとってみる」みたいなこだわりも良いかもしれません。
そして行き詰まったら次の技術を勉強していきましょう。
遅延評価学習法
「どのタイミングで、なにを勉強すればいいの?」についてなんですが、オススメの学習法は遅延評価学習法です。
遅延評価学習法は、その知識が必要になったときはじめて学習する方法です。
「これを勉強したから、その知識を使ってなにか作ってみよう」ではなく、「これをやりたいからやり方を調べよう」というものです。
前に一流のハッカーの学習法がこれだと話題になったもので、まわりを見渡してもアウトプット優先で勉強する人は優秀な人が多いです。
たとえば本を買っても律儀に全部読まないで、目的を達成するのに必要なところだけを読めば良いです。
暗記は必要ない
また「HTMLタグ多すぎて覚えられないー」ってひともたまにいるんですが、まず覚える必要はまったくないです!
学校のテストと違ってすぐに検索できるし、本をみながら作業もできます。
「覚えている」「覚えてない」の違いは、かかる時間が数秒違うってだけです。
そもそも使ってるうちに、自然と覚えます。
実のところプロのエンジニアも覚えてること自体はそんなになくて、みんな必要になるたびに調べてます。
ようするに調べるのがむちゃくちゃ速いだけなんです。
おわりに:プログラミングが出来るようになる最短の道
なぜ今のプログラミング学習は難しいの?というお話から、どう学習すれば良いの?というお話までしていきました。
プログラミングを教えていて、できる人とできない人の一番の違いはアウトプットの量です。
一度もアウトプットせずにひたすら座学を続けても、その知識はスキルとして定着しません。
繰り返しになりますが「ものを作る」ということを何より優先して学習を進めていきましょう!