Written by Manabu Bannai

『プログラミング学習に行き詰まっている』あなたにオススメな1冊

BOOKS

久しぶりにすばらしい本に出会いました。
まずはじめに、キラキラすぎる著者の経歴は以下。

東大法学部3年生時、司法試験に現役合格。4年生時には国家公務員試験に合格。東大法学部を首席で卒業し、財務官僚を経て弁護士となる。

だれに読んでほしいか?それはとてもシンプルで『プログラミング学習に行き詰まっている人』です。というのも、最近のぼく自身の悩みが『プログラミング学習の行き詰まり』でして、この本を読むことでかなり気持ちがスッキリしました。

しかし、ここで疑問が生まれると思います。分かりきっていることですが、本のタイトルから察するに、本の内容がプログラミングとはかけ離れている点です。しかし、実際はプログラミング学習とかなりリンクしています。

当記事では書籍レビューと同時に、プログラミング学習方法を紹介していきます。

『なにこのコード…。意味不明。。。』

プログラミングを学習していると誰でも出会ったことのある感情かと思います。しかし、以下の一文をご覧ください。

一度読んだだけで理解しようとすることが誤りです。反復・継続しなければ、人は学ぶことができません。一を聞いて十を知る人は、私に言わせれば、その能力の高さゆえに異常な人に分類されます。十を聞いて一を知ることができれば、大したものじゃないか、そう思います。

うん。すばらしいです。。東大主席卒業の方に言われると心が安らぎます。プログラミングを学習していると、日々、意味不明なコードに出会います。意味不明なコードに出会った時の選択肢としては、以下2つがあげられます。

  1. 頑張って解読する。
  2. 諦める

1を選択して、がんばって解読することは大切です。しかし、技術書を1ページめくるたびに1のフローを踏んでいたら、心が疲れてしまいます。そこで出てくるのが『8:2の法則』です。

何かを覚えるには反復がもっとも重要で、反復すれば絶対に解けるようになってきます。反復という観点からすると問題のレベルを「今の実力で8割は解けて、解くのに努力を要するものが二割」という比率にすることが重要になってくるのです。

お分かりかと思いますが、技術書を読むにあたって、とりあえずは8割の理解すればよいということです。それも一度読んだだけで8割を目指さなくても良いのです。反復・継続を繰り返すことで8割に近づいていくことが大切です。

読むことに関しては、とにかく回数をこなすのが鉄則です。2時間かけて1度精読するのではなく、30分で4回ページをめくり続けたほうが、頭に入ります。 そして、回数を重ねることで、徐々に頭のなかに入っていくようになり、結果的には1回精読した人よりも学習できているのです。

『この技術書は微妙かも…。買い替えようかな…。』

small__2560603784
これもあるあるかと思います。ぼく自身にもいえることでして、一冊の技術書を続けていると、後半に進むに従って『なんかこの本微妙かも…』という感情がでてきます。しかし、なんで微妙なのかは自分自身でもわかっていません。単純に飽きているだけなんだろうな、と思います。こういった状況を感じたことがある方へ。以下の引用をご覧ください。

私の方針はシンプルで、基本書は1冊しか読まないようにしています。ですから、可能な限り網羅しているほうがいいと考えます。

基本書は1冊と、ここで繰り返すのは、努力をするということには反復・継続が欠かせないからです。この反復をするには、同じものを読み続ける必要があります。「同じ内容でも、違うものを読んだほうが別の角度からの情報も入れられるのではないか」。こういう反論もあると思いますが、別の角度からの情報があると、かえって基本がわからなくなってしまいます。基本がずれてしまうのです。

おっしゃるとおりだと思います。技術書とかっていっぱい販売されているので、ついつい他の本に手を出したくなるんですよね。ぼく自身も誘惑に負けて買ってしまうことも多々ありましたが、最初に買った技術書と内容がほぼ同じ…なんてことは何度も経験しました。

作りたいサービスを明確化する

small__6588022327
『自分はこのサービスを作りたい!』
このように考えることが、プログラミング上達において重要です。しかし、作りたいサービスのことを本当にしっかり考えていますか?だいたいの人は次のように考えているのではないでしょうか?『FacebookみたいなSNSサービスが作りたいなぁ』とか、『めっちゃ流行るアプリを作りたいなぁ』などなど。結論からいうと、これではダメです。次の引用をご覧ください。

「3時間で、集中してこのテキストを精読する」 。こういった目標を立ててはいけません。この目標の駄目なところは「集中」「精読」というワードです。これは評価が入るので、ここの加減を自分の主観で途中で変えることができてしまいます。きつくなってきたら、自然とハードルを下げてしまうのが人間というものです。

すばらしい正論です。これをプログラミングに置き換えると、作りたいサービスの明確化にあたります。具体的には、作りたいサービスに必要な言語の決定、つぎに、どういった機能が必要かを考えます。そのうえで、各機能を実装するにあたり必要な知識を学習していく、といった流れです。プログラミング学習において、最低限の基礎を勉強したあとは、作りたいサービスがもつ機能を明確化し、その実装方法を学習していくことが効率的な学習に繋がります。

まとめ

ざっくり思ったことを書いてみました。今回はプログラミング学習者を対象に記事を書いてみましたが、当然ながら、その他の分野にもあてはまります。現在なにかにむけて勉強をしている人がいましたが、ぜひ一読をオススメします( ◜◡‾)b

※P.S:無料メルマガで発信中:過去の僕は「ブログ発信で5億円」を稼ぎました。次は「30億円」を目指します。挑戦しつつ、裏側の思考を「メルマガ」から発信します。不満足なら1秒で解約できます。無料登録は「こちら」です。