始めに
こんにちは〜まんじです。
今回はプログラミングの勉強に暗記がいらない理由というプログラミング入門レベルの内容について書いていきたいと思います。
暗記がいらん理由をざっくりと箇条書きにするとこんな感じです。
- 使ってれば勝手に覚えられる
- 暗記しなくてもAIに聞いたり、検索すればOK
- そもそも覚えることがほぼ無限にあるので全部覚えることが不可能
- 文法とか細かい書き方を覚えても技術力は上がらない
- エンジニアで働いてる人で暗記にフォーカスしてる人が皆無
とりあえず使ってれば勝手に覚えられるってのが大事と言うか、、、超定番の文法は勝手に覚えるし、超定番じゃないものはある程度コピペしつつ考えながら組み立てるようなスタイルで大丈夫だょって感じです。
自分なんかもReactを2年仕事で使ってますけど、超ど定番のところ以外は仕事中も普通にググったりAIにコード出してもらいまくりますし、何か勉強しないといけない時もイチイチ覚えたりはしない、、、というスタンスでやってます。
その程度でもフリーランスエンジニアで年収800万円ぐらいのレンジにはのるんで、暗記はいらんって感じです。
プログラミングの勉強で最も大事なのは覚えることじゃなくて使うことです。
使うことによって結果的に覚えてることが増えたり、深い理解が得られることによって、見たことないやつも推測できるようになったり調べて解決できたりできるようになります。
ってことで暗記が不要な理由をひたすら列挙していきたいと思います。
1個目: 使ってれば勝手に覚えられる
プログラミングの文法やらフレームワークの定番の書き方とかいろいろ含めて、使ってると本当に必要な部分は勝手に覚えます。
例えば、PythonとかJavaScriptで関数型の処理(mapとかfilter)とかって入門の頃は難しく感じて処理を知ってからすぐ使えなかったりしますけど、仕事で使いまくってるとやがてほぼ何も考えずに使えるように勝手になります。
文法を覚えようと努力して覚えられるというよりかは、何度も何度も使う必要性に迫られるとその処理を勝手に書けるようになるようなイメージです。
もちろん最初の頃はすぐに出てこないので調べて出てきたコードをコピペしていじったりしながら書くことにはなるんですけど、それを繰り返してくると本当に必要な部分は勝手に手が動くようになります。
覚えようとして覚えられるというよりかは、何度も何度も使いまくってると覚えようとしなくても勝手に覚えている、、、というスタンスでプログラミングを勉強すると効率は良さげです。
忘れたら調べて、また忘れたら調べて、、、ってのを繰り返してると、その項目について慣れてくるのでやがて調べなくても大丈夫になります。
使ってりゃ勝手に覚えるだろぐらいのゆるいスタンス(マインド)がプログラミングの勉強ではすごく有効です。
2個目: 暗記しなくてもAIに聞いたり、検索すればOK
プログラミングの勉強シーズンもそうですし、プログラミングで仕事してからも基本的にAIに聞いたり検索をしながらプログラミング(実装)をすることになります。
プログラミングで仕事してる時間の大半は調べてる時間じゃね?みたいなことはネットでたまに見ますけど、あながち外れてはいません。
どんだけ使い込んでる言語とかフレームワークでもちょっとニッチな処理とか使い慣れてないところは必ず出現するので、その時にはみんな調べながらコードを書きます。
そんでその網羅範囲、厳密には覚えている範囲よりも理解している範囲が広がっていくと、実装が早くなるので技術力が高めな状態になっていくという感じです。
プログラミングでは「エラーにハマる」とか「やり方が分からなくてハマる」とかいうことが言われますが、そこらへんの解決速度やそもそもハマってる時間が短いor皆無っていう状態が特定の領域で技術力が高いと言えます。
とりあえず最初のうちは調べながらコードを書いていって、やがて徐々に慣れてくるとその調べる時間が勝手に短くなっていったりするみたいなイメージ。
3個目: そもそも覚えることがほぼ無限にあるので全部覚えることが不可能
プログラミングの勉強で暗記がいらない理由3つめが、そもそも覚えることが多すぎて暗記に重きを置くと無理ってことです。
例えば、比較的簡単に書けるPythonですら文法1つ取っても、ほぼ無限に書き方(ニッチなメソッドとか)が存在します。
それを1つ1つ網羅的に学校の勉強みたく覚えていくと、キリがない、、、というのと、全部覚えたところでそもそもニッチな書き方とか処理とかは使いません。
なのでほぼ無限に存在するような内容を暗記していこうとすることはすごく効率が悪い、、、というか時間がかかりすぎるし、普通に無理ですし、必要になった時に調べて解決すればいいってだけです。
技術力が上がってくると初見の書き方とか設定方法とかの理解速度も上がってくるので、暗記にフォーカスするよりも、日々実際に使っていって実装力を高めることのほうが実際は大事です。
厳密には大事というよりかは、ある程度プログラミングをしてる人は大体そんな感じになっていきます。
4個目: 文法とか細かい書き方を覚えても技術力は上がらない
プログラミング言語の少しニッチな文法、フレームワークのニッチな書き方とか処理、こういったものを網羅的に覚えていっても技術力は上がらないので意味ないよね!ってのが理由4つ目です。
例えば、JavaScriptの配列のメソッドとかを例にすると、、、
Array.prototype.at()とかArray.prototype.values()とかありますけど、実際こういった配列のメソッドを網羅的覚えていったとして技術力が上がるかって言われると、技術力はたいして上がらないです。
知らないよりは知ってたほうがいいけど、必要になった時に調べてすぐに真似できるってことのほうがプログラムにおいては重要です。
いろんな文法やフレームワークの書き方を網羅的に覚えていった結果技術力が伸びるのではなくて、日々実装しまくっていると技術力が上がっていって、未知の文法とか書き方でもすぐ理解して使っていけるようになる、という感じです。
プログラミングの勉強では暗記にフォーカスするよりも使うことにフォーカスするのが大事。(しつこい!!!)
5個目: エンジニアで働いてる人で暗記にフォーカスしてる人が皆無
そもそも技術力の高いエンジニアの人で暗記にフォーカスしてる人がいない、、、というのがプログラムに暗記がいらない最たる理由です。
経験から来る知識の多さ(暗記範囲の広さ)とかはありますけど、そういった人が常日頃から細かい文法とかを覚えつつプログラミングしてるかっていうと、全くそんなことはないです。
日々仕事とかで使ってて、その結果として、その使ってる周辺の知識が勝手に覚えられていってその知識をベースに考えるから未知の部分も早く理解していける、、、という感じです。
エンジニア駆け出しシーズンとかはメモ取ったりしながら仕事をする人も多いですけど、やがてそういう覚えるべきことを記録するためにノート取るみたいなことは少なくなります。
クソ長いけど覚えられないコマンドをメモったりとか、実装の要件をメモしたりするぐらいにやがて減っていきます。
自分は別に技術力は普通だけど、大体そんな流れになった。
あとは細かいユースケースとかをいちいちメモっていくとメモが増えすぎてそもそも参照できないっていうのはあります。
メモりまくっても参照できないから意味ない、てきな。z
まとめ
プログラミングの勉強に暗記がいらない理由をひたすら書いていったんですけど、とりあえず暗記はいらないです。
覚えるために勉強するってよりかは、とにかく作ることとかのアウトプットベースでコードを書いてれば、定番のところは調べなくても覚えてるよねってスタンスで勉強するのが大事です。
最初の頃はifとかforループとか毎回調べてた人でもやがて調べなくても勝手に手が動くようになってるようなそんな感じ。
ifとかforとかの本当に最初のところだけに限らず他の部分でも大体そんな感じで、使ってりゃ勝手に覚えますし、そもそも細かい部分は覚える必要もなくて毎回AIに手伝ってもらえばいいってぐらいでもあります。
AIに手伝ってもらいまくってるとやがて覚えてきて、わざわざ聞くよりもちゃっちゃと自分で手を動かしちゃったほうが早いみたいな状態になります。(コードによるけど)
とりあえず覚えるよりも実際になんか作ったりするために使ったり、あとは仕事にさっさと入ろうぜ!
ってことで終わりなので、よければ他もぜひ!