初投稿。
現在Javascriptを中心に勉強中の学生です。
学習から少々時が経ち、だんだん勉強の進め方が分かってきたので共有していこうと思います。
初心者が引っかかるトラップ
1か月前、さっそく「Javascript おすすめ勉強法」と調べると、いろんな方が勉強法の発信をしているわけですが、どれも似たようなものばかり。「おすすめ本5選!」、「progateから始めるべき理由」、「フロントエンドエンジニア学習ロードマップ」などなど・・・。
アフィリエイト収入を得るためなのか、「とりあえず紹介しまくっとけ!」みたいなものも沢山ありました。
色々紹介されており困ったものの、とりあえず自分の性分に合った勉強法から始めようと思い、本での学習を選びました。するとビックリ。
とんでもなく分かりにくい。というか、そもそもサンプルコードが動かん・・・。ネットで調べながら読み解いていくも、そもそもバージョンが古いと分かりました・・・。ネットで紹介されていたクソ高い技術書を買ったはいいものの、内容も初学者向きではなく、結局無駄に(笑)
いやはや困りました。
理論などの深い知識を学ぶ分には本が最適な気がしますが、コーディングを学ぶ上では本はダメだなと感じました。
おすすめの学習教材
ドットインストール
次に試したのはドットインストール。
これは基礎をザっと勉強するのに役立ちました。
Progateではなくこちらを選んだ理由は、vscodeでコードを書きながら勉強する実践的な方式だったからです。
Udemy
同時並行でUdemyのWeb Developer Bootcamp2021という講座に取り組みました。
こちらの講座はフロントエンド~バックエンドまで、基礎的な技術を一貫して学習するというかなりハードもので、WEBについて幅広く知識をつけることができそうなので始めました。(現在進行形で学習中)
アプリ
そして、隙間時間にちょこちょこ見てるのがJavaScript暗記カードというiphoneアプリ。
JavaScriptでよく使われるメソッドが暗記カード形式で勉強できるというものです。ただ、細かいメソッドを覚える気はないので、こんなものもあるんだな~程度に見ている感じです。ざっくりとした説明すぎるのが難点ですが、逆に調べたくなるので、そこで知識が深まるのでおすすめです。
ネット記事、YouTube
ここまで教材について色々共有してきましたが、正直、学習に一番役立っているのはネットの記事やYouTubeですね。
もちろん上記の3つを主軸に勉強しているわけですが、たびたび理解に苦しむときがあります。
例えば、「オブジェクト指向って何?」、「引数と戻り値って何?」、「関数とメソッドの違いは?」、「クラス、インスタンス、オブジェクトの違いは何なんだ~!!」などなど、次々と分からんことがでてくるわけですが、そこで役立ったのはQiitaの記事はもちろん、ネットコンテンツの数々です・・・。本当に助かる。これがないと生きていけません。
まとめると、自分は以下の4つで勉強するのがベストだと感じています。
・ドットインストール
・Udemy
・アプリ(隙間時間用)
・記事やYouTube(調べもの用)
インプットするだけでは一向にコーディングできるようにならないと感じたため、学んだことを活かしアウトプットしまくるのが一番だと思います。あくまで上記の4つはインプットをするためのもので、アウトプットの時間は別に取らなければ上達しないと思います。
自分の場合はポートフォリオ作成が目標なので、講座で学んだものを自分の成果物に落とし込んでいくにはどうしたらいいかを考えながら進めています。
リアルに結果が出た学習方法
よくプログラミングは暗記じゃないとか言われますが、個人的には基礎的なレベルの文法は死ぬほど書いて体で覚えてしまうくらいがちょうどいいと思います。最初の方は暗記せずにやっていたのですが、基礎的なことを理解していないと、分からないことすら分からずに調べることもできないのでかなり困ります。
では具体的に何を覚えればいいのか?ってなりますよね。
自分もビギナーなので、この方法で正しいのかまだ確信は持てませんが・・・
まずは講座で学ぶレベルの文法やメソッドなどを、自分なりにいじりながら体で覚える。特にループ処理や関数など、頭では理解していても実際に書きたい処理が書けないといった問題が発生する箇所を中心に練習するべきだと思います。
ゲームのチュートリアルみたいなもので、基本的なルールが身についていないとゲームをプレイができないのと同じです。
ただ、メソッドなどの細かい知識は暗記せず、実現したい処理があったらその都度調べていくのがベストだと考えます。
ここから先はまだ少ししか手をつけていないところなのですが・・・
基礎学習の次に、WEBアプリやポートフォリオサイトなどの成果物を1つでも作ってみて、そこに色々と機能を追加していくと実践的な勉強になるんじゃないでしょうか。自分はこの流れで進めるつもりです。巷ではたくさん成果物を作る主義の方がいるそうですが、全て理解して作れるのならいいものの、初心者のうちにそこまで手が回るでしょうか・・・?自分は多くて3つだと思います。その分、中身を濃くし、深く理解するイメージです。
必ずぶち当たる壁の乗り越え方
最後に、プログラミング学習のコツについて共有します。
正確には、どういった心構えで学習するといいのかについてです。
基礎的な学習を終え、実際に自分で1からものを作ろうとすると、まじで意味わからんすぎて混乱します。
これまでの人生でここまで理解に苦しむ未知のものに出会ったことがなかったのでビックリしました(現在進行形で苦戦中)
何ならエラーしか出ないし、ググっても理解できないという地獄が待ってます。
「いままで学んできたことって意味あったんか?おれセンス無いなー」と感じます。
ただ、そんな地獄のようなゴールが見えない中でも、もがきながら少しずつ前に進んでいくことで、段々分かることが増えていきます。たくさんエラーに対処する過程で色々なことを調べ、学ぶので、徐々にプログラミングの世界のルールが見えてくる感覚があります。
要するに、諦めずに1歩1歩成長していきましょうということです。
プログラミング学習を始めてから、ベテランエンジニアの方々に対するリスペクトが芽生えました。
彼らは言語も文化もわからない異国の刑務所にぶちこまれ(プログラミングの世界)、日々いじめられながらも(エラーの数々)、徐々に刑務所のルールを覚え、言葉を覚え、生き残る術を身につけた猛者たちなのだと感じました(笑)
今回は自分に向けた記事でもあったのですが、自分と同じ初心者さんが少しでも参考になれば嬉しいです。
今後も学習の中で得た気づきを言語化していく予定です。