いとうです( ˙-˙ )!
今回はプログラミング学習は基礎文法の理解よりも、「言語やツールでできること」を勉強した方が結果習得が早くなるということを書いていきます。
最初に基礎文法から入ってしまうと「作れるようになる」という目的から遠ざかる
エンジニア転身を目指してプログラミングを学んでいる人は凄く多いと思うのですが、教科書を読み進めるがごとくProgateや入門書等を最初から読み進めていると仕事ができるレベルになるまでの道のりは険しくなってしまうと思います。
これは既存の学習教材が悪いと言っているのではなく、カリキュラムを順番にこなしているだけでは一人で開発を進めていけるだけの知識を身につけるためには非常に効率が悪いんです。
たとえばどの言語を学ぶにしろ、最初は画面やコンソールに”Hello, World!”と表示して、if文やfor文の書き方を学んで行く。というようなスタイルのものが多いと思います。
学習の最初の過程がこのようなものだと、プログラミングを使ってどのようなことができるのか、学んでいる側はあまりイメージが湧かないと思います。
結果、文法を一通り学習する→何か作ろうとする→うまく行かずまた教材を学び直す→書き方は分かったもののなぜか作れない。。。
という流れの中で挫折してしまう人が大半かと思います。
なぜこうなってしまうかというと学習の過程で目標物と機能についての理解がおろそかになっているからですね。
基礎文法を学ぶのは一番最後で良い
基礎文法(手法)を学ぶ→ユーザー登録機能を作る(部分)→掲示板アプリを完成させる(目標物)
という流れで学ぶと上記のような挫折になってしまいやすいと思います。
個人的な意見としてはプログラミングの基礎的な文法を学ぶのは最後の最後で良いです。(どうせ現役のエンジニアでも文法(書き方)が完璧に頭に入っているような人なんてほとんどいないです。その都度ググったりドキュメントを読んでいます。)
正しい流れとしては
①掲示板アプリを作るために必要な機能を確認する(ログイン、テキスト投稿、投稿内容の編集、削除等)
②必要な機能を実現するための処理の流れを確認する(例:テキスト投稿なら...画面から文字入力→送信→画面に表示)
③②の処理を実現するためにどんな技術が必要か調べる(入力フォームの存在や、POST送信、バリデーションチェックなど)
④③を実装するための書き方を調べる(HTMLのフォームタグの書き方など)
となると思います。
作るものが何なのか明確に分かっていて、それを実現するための部品→技術の種類→具体的な書き方と細分化して学習した方が圧倒的に理解は深まります。
ただ漠然とプログラミングの文法の学習を進める人よりも、明確に作りたいものが決まっている人の方が圧倒的に習得が早いのは上記の流れで理解を進められているからだと思います。
やはり必要に迫られないとプログラミングも身に付きづらいんです。
書き方よりも処理の順序を理解できていることが大事
「書き方はその都度ググれば良い」ということは良く聞くと思いますが、作りたい機能を実現するための処理の流れはある程度頭に入っていた方が良いです。(慣れるまではそれもググってOKですが)
ある程度プログラミングを続けていると、毎回新たに斬新な処理の流れを作るということは少ないと思います。
大体はよくある機能をよくある技術で実現しているだけです。
(※世の中では新しい技術が日々生まれていて、プロとしてはそれらをキャッチアップしていく必要はありますが、仕事としての業務をこなせるようになるまではまだそこまで意識しなくて良いです。)
だからこそ、そのよくある処理の流れ(WEBの技術)を理解するだけでもプログラミングの習得スピードは圧倒的に早くなりますよ