#暗記ってダメなの?
学習をしていく中で1度は耳にする
「暗記」はダメ
といった論調があると思います
最初に結論を言っておくと私はこの記事で
**暗記を全面的に否定するのではなく、拾ってくる情報リソースの多くで頻出している「単語」や「概念」を意図的に暗記したほうが(集中的に学習する)後の学習効率、開発効率が上がる。**と伝えたいです。
#想定読者
・自分が初学者と思っている方
・暗記してる事に自覚がある方
・PHP初学者
#私の背景
半年前の私は
・HTMLって何
・PHP何それ弱そう
・プログラミング=ホームページを作る事でしょ?
といったようにプログラミングに関してほとんど無知の状態でした。
今では半年間毎日8時間の学習を継続しているので、流石にその状況からは抜け出せたのですが、当時は全くの初学者でした。
学習方法に関しては効率は置いといて挫折しない自信はあったので独学を選択し、主にネットでPHPの教材を購入して学習を行っていました。
少し話がそれますが、この半年でオンラインなどの交流会で10人前後の方にスクールを卒業されての感想を伺ったのですが、その方々の満足度は大変高い印象でした。
ただし、接頭辞的な感じで「挫折しない為には」といった言い回しをされる方が多い印象でした笑
私が半年間独学をしてきた経験と周りの卒業された方の意見を合わせて考えると時間効率を求めるならスクールは大いにありだと思います。
スクールを通う段階としてはプロゲートで5つくらいの言語を一通りやってみてからでいいのかな〜といった印象です。
お金に余裕があって少しでも一人でやる自信がないと思っている方は即決でスクールに通う事を選択した方が絶対にいいです(別にスクールの回し者ではありません笑。なんならエンジニアyoutuerみたいに一回くらい企業案件やってみたいです。この動画はテックアカ、、、、💰)
さて本題に戻ります。
私はスクールには通いませんでしたがネットで教材を購入しそれを独学しました。その教材の中には「暗記してください」などとは書かれて言いませんでしたが、重要ポイントとして取り上げられているTipsはたくさんありました。今教材を見返してもその部分(その周辺の知識)を学習初期の段階で、暗記しておけば後の開発効率はよくなるだろうなー。というのが私の意見です。
(ただし、最初からそこだけを集中して学習するよりかは、一般的な書籍や、Udemyなどの動画講義を一通り終えた後に重要部分を集中的に学ぶ感じが良いかと思います。)
要するに何が言いたいかと言うと
単語レベルの理解はもちろん、多くの人が共通して主立って「重要」と言っている事は四の五の言わず暗記した方が後の開発効率がスムーズになる。
と言うのが私の意見です。
そんなの当たり前だろ。。記事にすることじゃないよね。。と思われるかもしれませんが
プログラミング初学者の方で
・「暗記」をひとまとめにして「悪」と捉えている
・「暗記」って本当にダメなのか疑心暗鬼になっている
方は少なくないと思い、この記事を書きました。
少なからず私は学習初期の段階で様々な情報に触れて
**「暗記は効率悪いんだ」**と一括りに悪いイメージをもっていました。
#暗記しなくてもいい事
こんな事を偉そうに言っていますが基本、暗記する事は圧倒的に効率が悪いと思います。
そこで、具体的に効率が悪くなる項目を大きく3つに分けて解説していきたいと思います。
※前提として忘れないで頂きたいのはこれは学習して半年程度且つ実務未経験者の意見です😷また、PHPやLaravel以外の言語に関しては詳しくないのでご了承ください。笑
1. コードの書き方を暗記する
私が考えるに暗記してはいけないと情報発信されている方の本質的部分はここだと思います。
ここは私が細かく言うまでもないですが、効率が悪く、キリがないですよね。笑
これをやってしまっている方がいたら今すぐにその習慣を辞めて、コードを書いて覚えましょう!
無心で書き続けていればいつの間にか覚えます。必ずです。
2. 開発環境の構築の仕方
これはキリがないとか効率が悪いとか言うより初学者のうちにここを重点的に覚えようとすると、挫折率が上がってしまうかと思います。
サーバーやネットワークの知識が必要となってくるので初学者の段階は
**「そう言うものを使っているんだな」**程度の理解でいいのではないでしょうか。あなたの目的に沿った学習を優先しましょう
3. 関数を全て覚えようとする
これもコードを暗記するに近いですが、仮に全て覚えても一生使わないものも出てくる可能性があり且つ効率が悪いからです。
経験上、使用頻度の高い関数はコードを書いて入れば勝手に覚えます。つまり使用頻度が高い=重要度の高い関数と言う認識で良いかと。
#暗記した方がいい事
さて、今度は逆に暗記した方がいい事について少しみていきましょう。
冒頭でも述べましたが、暗記をした方が良い内容は 拾ってくる情報リソースの多くで頻出している「単語」や「概念」の事でしたね。
では具体的にはどう言った単語や概念が当てはまるのでしょうか。
私の経験から「早めに覚えておいてよかった」「ここは早めに覚えておけばよかった」という主観から例をあげ解説します。
※ここからはさらに個人的主観が強くなりますでご了承ください
一応以下の内応は、PHP言語を対象としていますの
if文/繰り返し文/関数/引数/戻り値/変数
と言ったどのプログラミング言語でも共通する基礎の部分は除きます
ざっくりですが私は以下2点の理解を優先的に深める事をお勧めします。
1.$_GETと$_POST(HTTP通信とスーパーグローバル変数の扱い方)
2.データベースは何をしているか
詳しくは次の段落で書いていきます。
#$_GETと$_POST
[なぜこれを覚えておいた方が良いのか]
それはPHP言語でCRUDを実装する時に超頻出の概念だからです。
CRUDとは、システムに必要な4つの主要機能である
「Create(生成)」
「Read(読み取り)」
「Update(更新)」
「Delete(削除)」
の頭文字を並べた用語です。CRUDはWEBアプリ制作する上で基本的な考え方になります。
PHPとよく比較されるプログラミング言語が、JavaScriptです。この両者はスクリプト言語でも、動作については全く異なります。
JavaScriptはHTMLやCSS、画像と同じようにブラウザを表示しているPCにファイルをダウンロードしてから実行し動作するのに対し
PHPはWebサーバ上にファイルを置いて、以下の順で実行されます。
1.ブラウザを見ているユーザがクリックなど何かの操作をする
2.その動作を受けたプログラムがサーバで動作する
3.動作結果をレスポンスとして、インターネット経由で送り、ブラウザ上にHTMLを表示する
このようにPHPのような言語は、サーバサイドのプログラミング言語と呼ばれ、PHPはサーバー側で動くプログラミング言語でこの全体の処理の中でも、$_GETと$_POSTは超頻出です。つまりこの2つの処理が何をしているのかを意識的に「暗記」する事はPHPを早く上達する上では効率が良いと言えます。(暗記より理解という言葉を使う方がいい気がしてきました笑)
GETやPOSTについてもっと詳しく知りたいと言う方はこちらの書籍を読んでみるのもいいかと思います。
HTTP通信についての理解が深まりクライアントとサーバーが裏でどんな事をやっているかのイメージがつくかと思います。
www.amazon.co.jp/dp/4774142042
#データベースは何をしているか
データベースを扱うアプリケーションでは「CRUD」のアクションが基本となります。
つまり、データベースに対して行うアクションは、
・データベースにデータを「新規登録」する、
・そのデータを「読み出す」、
・そのデータを「変更し上書き」登録する、
・そのデータを「削除」する、
という、「基本この4つしか無い」ということです。
つまりこの流れのイメージを意識的に暗記する事でコードを書いている時に、今何やっているかの把握ができ結果として開発効率が上がると考えます。
[補足]
個人的にはSQL文法もスラスラ書けるようになるまで暗記しておいた方が効率が良いのではと思っています。これも超頻出なので。笑
#最後に
まとめとして、頻出する単語や概念、その周りの流れを最初に覚えてしまった方が結果的に効率が上がると言う事です。
本記事とは少しずれますが、影響力のある発信者の意見や、ネットに転がっている情報を全て鵜呑みにするのではなく、その情報を一度は自分の頭に持ち込んで、処理して自分なりの答えを導き出すと言う事も重要です。
この**「脳に意識的に負荷を与える習慣」**ができていると、例えばエラー時にもイライラしなくなると思います。(エラーでイライラしてしまう人は他責思考が強い人だと思う)
この事は自戒を含めて書き残しておきます思います。