なおキーヌ式プログラミング学習法
様々なプログラミングの勉強法を書いているエンジニア系ブロガーは やれ継続しろ、やれ基礎を覚えろと当たり障りのないような記事を書いてる人が多いです。
理由としては万人受けしやすいですからね。
ってことで私は私自信の勉強法を書いていきます。
勉強してるけどうまくいかないって人は もしかしたらマッチした勉強法かもしれないので 選択肢の1つとしてみてください。
なおキーヌの特徴
まず初めに私の特徴を簡単に説明しておきます。
- 極度の面倒くさがり屋
- すぐ飽きる
- 単調な作業を続けられない
- 興味のあることは時間を忘れて集中
- すぐ意識が違うほうに行く
- 完璧だと思っていたらミスが残っている
- 1回のミスで結構凹んでしまう(脳内でぐるぐる失敗の回想を繰り返す)
- (仕事)プログラミングに疲れたら(趣味)プログラミングを始める
- 酒もたばこはやらない(付き合い酒ぐらい)
- 引きこもっててもストレスにならない
ADHDの特徴詰め合わせたような人間ですね(笑) 診断されてはいない為、ADHDとは名乗れないのでとりあえず怠惰な人間と思ってもらったらよいです。
後半あんまり学習に関係ないことも書いてますがとりあえずこんな人間です。
今回紹介するのは怠惰な人間向きかもしれません。
ただ、1つ違うのはプログラミングに対して楽しみをもっているということです。
仕事でコード書いてて家帰ったらまたコード書き始めるジャンキーだったり
というのもそもそも楽しみを持っていないとすぐ投げる人間ですからね(笑)
要約すると今回の記事は
プログラミングは楽しいけどどう覚えたらいいのかわかんない
って人向けかもしれません。
私は試行錯誤して覚えてきましたが、楽に覚えられるなら楽に覚えてしまいましょう。
三歩進んで二歩下がる手法
何か学習してると特別な人以外は必ず飽きが来ます。
特に基礎勉強で
「これやってて本当に上達するの?」
っていうことはプログラミングにおいて結構出てきます。
プログラミングって結構学校の勉強に似てるんですよね。
数学の公式を学んでるときに「これって何に使うんだ症候群」と同じです。
なので飽きたらやりたいことをやりましょう。
例えばReactを覚えたいなりVueを覚えたいなり。
そしてやりたいことの入門記事を見ながら入門してください。
次にその先(技術の応用)にいこうとすると
「これやってて本当に上達するの?」で投げ出していた基礎の部分が必要だと気付くところが出てきます。
そうすると基礎の必要性を脳が理解してくるので、 その時にもう一度基礎をやり直すと1回学んでるのも相まってスラスラと頭に入ってきます。
まさに「三歩進んで二歩下がる」ってやつですね。
最新のやり方を導入してみる
人気のある技術を覚えるときに、大抵
- 安定版
- 最新版
の2つが存在しています。
入門解説記事には大抵「安定版を選んでください」と書いてることが多いです。
というのも最新版はまだまだバグが含まれていたりします。
素人にはそれがバグなのかどうなのかわからないため どん詰まりになって進まなくなってしまうことが多いからです。
以上のことから、じゃあ安定版のほうがいいよねって入門者は納得するのですが そこで逆に考えてみましょう。
「高確率で壁にぶち当たることができる」
人間一番成長するのは壁にぶち当たってそこを乗り越え、 一度戻って、今度は楽な道を歩んでみた時の振り返りです。
ゲームでいうとノーマルモードをやってからイージーモードをプレイするような感じです。
Qiitaとかで見るような入門記事って、基本的には初学者でも難なく導入出来るように書かれているので 実は「成長」っていう視点で見るとあまりオススメできるものではないんです。
特に面倒くさがりな人だと「爆速」っていうワードに引かれがちだったりします。
爆速インストール系の記事はある程度プログラミングに対する知識がついていて そういえばこのフレームワーク使ったことないからちょっと使ってみるか程度のノリの人が活用する記事で プログラミング初学者が見るような記事ではありません。
話を安定版と最新版の選択に戻すと、初学者が最新版を選んでしまうとノーマルモードではなくハードモードになってしまうので ある程度プログラミングに慣れてくるまでは
安定版を導入して動くことを確認してから最新版を導入して同じように動くか、 安定版との違いを見つけてみると確実に成長します。
要約すると入門を何度も繰り返すのが成長の近道ですね。
ちなみに入門を何度かする場合、同じ入門でも違う人の記事を参考にするとよいです。
手段を目的にしてしまう
よく何かを覚えたり達成するために「手段を目的にしてはいけない」って決まり文句のように言われます。
確かに仕事に関しては全く持ってその通りなのですが、 勉強に関しては必ずしもそうとは言えません。
例えばショップサイトを作るのが一応最終目的としましょう。
ここでEC-Cubeを使うかShopifyを使うかカラーミーショップを使うか……
はたまたフレームワークを使って自分で1から組んでみるか。
いろんな選択肢があると思います。
これらが手段に該当するわけですが、 おそらく仕事であれば納期がないので一番効率良く完成させられるものを選んだり、 予算と納期があるので今後のことを考えて拡張性の高いものを選んだりと様々だと思います。
今回は納期とかも一切関係ない「手段を目的にする」ということなので Laravelを使ってショップサイトを作ることに決めましょう。
ここで「Laravelを使ってショップサイトを作る」ということを固定化します。
おそらく作ってると規模的にカラーミーショップで十分じゃないか?
ってなる可能性もあります。
そうなってしまってもとにかくLaravelでショップサイトを完成させることに注力します。
何が何でもLaravelで作り上げることでめちゃくちゃLaravelについて調べるわけです。 ショッピングサイトの作り方はもちろん、Laravelについての知識がグンとアップします。
ここでもう一度なぜ「手段を目的にする」ということを振り返ってみましょう。
ショッピングサイトを作りたいという意識だと、ショッピングサイトを作ることに意識が偏ってしまい 初学者の場合、既にあるコードをコピペを使いまくってとにかく完成させるということをしてしまう可能性が高いです。
そうしてしまっては完成したところで大して成長してないんですよね。
もう一度組んでみてくださいってなっとき前回よりは早いけどおそらく理解度はたいして上がっていません。
一方手段を目的にすると、技術について調べまくっているのでその時点で知識と経験が段違いに成長しています。
なのでどうも使ってる技術の知識が身についてる感じがしないなぁって方は 一度手段を目的にする勉強法を試してみてはいかがでしょうか。