[初学者向け]プログラミング学習でやめた方が良いこと/やった方が良いこと
はじめに
Twitterだったり自分が運営しているプログラミング学習コミュニティ(Progaku)で業界未経験の初学者の方々を見てきたエンジニア歴8年ほどのフリーランスSEが、これは初学者がやりがちな効率の悪い学習のやり方だなって思う事があったので具体的な例と個人的なおすすめ学習方法を書いていこうかなって思います☺️✨✨
それでは本編へGO!
辞めた方が良いこと
1.丸暗記しようとする
こういう人をよく見ます
良くツイートとかで
「Progate(同じ章)を〇周しました!」
「まだ覚えれてないからもう一周読もう」
こういう人を見ます。
これを暗記のためにやってるのであれば、時間の無駄です😰😰
*もしご家庭にドラえもんがいたり四次元ポケットがあって暗記パンが用意できるのであれば、全然暗記してもらっても構わないです!
それ以外の人は、プログラミングにおいて丸暗記をする思想は即刻辞めた方がいいです
なんで?って思う方向けに、理由を書いていきますね。
暗記が必要ない理由
世の中には覚えた方が良いやろ勢とかいるのは分かってるんですけど、
多くの人は転職したいとか副業でリモートワークしたい、そういった理由でプログラミング学習を始めるのかなっと。
学習時間も無限ではなく有限で大事なものだと思います。
未経験からプログラミングの基礎を叩き込んで全て暗記していこうなんて進めていたら、とてもじゃないけど膨大な時間がかかります。
貴重な時間を不要な暗記時間に割かない方が良いし、必須でない。
といったことから、僕は暗記が必要ないと思います。
じゃあ、暗記しなくて何すればいいかって言うのを次に書いていきます。
暗記じゃなくてこうしよう
例えば、JavaScriptでID指定したい時って
document.getElementById('hoge')
こう書いたりします。
こういう構文って初めて見た時は、なんか学生の時の数学の公式みたいにちゃんと覚えなくちゃいけない感ありますよね笑
でも、これを暗記しようと思わなくて良いです!
プログラミング言語ってアップデートされて記述変わったりもするし、一言一句丸暗記する必要がありません。
プログラミングってテストや試験じゃないので、「JavaScriptでIDを指定する構文を書け」って問題解くとかじゃないんですよね。
構文を覚える事が目的ではなくて、実際これを使わなくちゃ知識が無駄になるんです。
プログラミング言語は覚えれば良いものではなく、実際に使って(書いて)ナンボなのです
そのためには「設計」というものが大事になるのですが、ここではこの話は置いておきますね。
正直覚える気なくてもJavaScriptを使っていれば何回も出てくるので嫌でも覚えますし、なんならVSCodeといったテキストエディタの補完機能といったものを使った方が正確に早く打てたりします😏
テストじゃないのでもし忘れたら「JS ID 指定」とかでググれば出て来ますし、忘れた=>調べるの繰り返しで知識が定着したりします。
また、Notionやメモ帳とかに自分なりのメモを残しておくのもおすすめです🙆♂️
個人的にはwebブラウザをメモ帳にする方法が便利でした!
2.完全に理解しようとする
よし、その考え捨てようか
「完璧に理解してから次に進みたいし、それまでは繰り返し復習するぞ!」
これを思ってる人は今からその考えを捨ててください👋👋👋
そもそも地球上にプログラミングを完全に全て理解している人なんかいないです。
もしこれ読んでる人や周りにそういう人がいるなら是非お話聞かせてください!!
なので、完璧に理解する必要はないし出来ると思わないでください。
ある程度理解したら次に進むといったことが出来なければ、正直一生学習するだけで終わっちゃいます・・・
おい、ある程度ってなんやねん。そんな曖昧な言葉で言うなよ。どこまで理解したら進んで良いか分からんねん。しばくぞ。
といった殺気を感じたので、個人的な進め方を書きますね🥶🥶💦
「ある程度で次に進もうよ」=>ある程度とは?
僕がRubyニキなのでRubyで失礼しますが、その他の言語の人でも分かるような簡単なコードで進めますね🤝
例えばバックエンドでは良くみるif文ですが、
a = 'one'
if a == 'one'
1
else
2
end
これがProgateなり書籍なりで出現したとしましょう。
[Level1]一回書いてみる
テキストエディタに一回そのまま書いてみましょう。
[Level2]コメントを書く
# aという変数に'one'という文字列を入れた
a = 'one'
# もしaが'one'なら1を返して、違うなら2を返す
if a == 'one'
1
else
2
end
こんな感じで、自分なりにプログラミング言語を日本語に変換してみましょう。
[Level3]自分なりにちょーっとだけ変えてみる。
b = 'two'
if b == 'two'
2
else
3
end
正直Level2でも良いかなって思いますが、Level3まで出来れば次に進んで大丈夫です👍
ずっと理解するまで繰り返すというよりは、使うタイミングで分からなくなればもう一回やってみる。って考えでいいです。
次に僕が思う学習に取り入れると少し幸せになれるかも?なことをお伝えしますね。
学習に取り入れると良いこと3選
インプットしたらアウトプットする
プログラミング学習はインプット作業になりがちです。
でもプログラミングってあくまでモノづくりというアウトプットするための手段なんですね。
インプットばっかりやってたら便秘になっちゃいますしね。(絶対ならない)
例えば、HTMLで新しいタグを学んだとか配列をどうこう整形する記述とかを知った際にはそれを使って個人サービスに組み込んでください!
タグでも記述を覚える方に意識を持って行きがちですが、実際にどういう時に使うとか、それを使って何を作るとかの方が大事だったりします。
ゲームとかでも新しい技覚えたりとか新しいアイテムやキャラを取ったらすぐ試したくなりませんか??
そんな感覚で、「知ったことは使ってみる」
という意識を持つことで良い学習になると思います。
学習時間を記録する
良く積み上げとかで〇〇を〇時間やったとか見ますが、僕はとても良いことだと思います!
人間って数字に対して割と信頼を持ってる生き物なので、体感的に今月は頑張ったっていうよりは数値として今月〇〇時間勉強したって見た方が比較もしやすいし、努力したぞっていう目に見える根拠になります。
もう1段階先の話をすると、個人サービスで例えば「お問い合わせフォームを作る」みたいな機能を作ろうと思った時には、作業前に予想実装時間をメモしておいて、作業後に実際にかかった実装時間と比べてみてください。
そうすると、予想より実装が早くできたのか(遅れたのか)が数値で判断できます。
これのメリットとしては、
・実務では作業前に「実装にどれくらいかかる?」って聞かれることが多々あるので、そういった際の訓練になる
・時間を決めて開発しないと、ダラダラ拘って開発しがちになるのでそれの防止
が挙げれます。
業務でも個人学習でも無限に開発できるわけじゃないので、時間というものは意識しながら進めたいですね。
独学を辞める
正直、世の中ググればすぐに教材や記事がありふれていて独学でも学習出来ない事はないです。
それでも、
・エラー出た時に詰まって諦める
・難しくて諦める
・日常生活が忙しくて学習から離れて諦める
といった理由からプログラミング学習挫折率が高くなっています。
これらの多くが独学でやっている人が多いのかなと思っています。
僕は去年何人もプログラミング学習を始めた人を見て来ましたが、圧倒的に誰かとやってる人の方が吸収率高いし挫折率は低いです。
誰かとやるメリットとしては、
・分からない時に人に聞ける
・同じ学習者同士で情報共有したり、お互いで教え合いが出来る
・モチベーションの低下防止
があります
人と関わるのはちょっとって言う人以外は、是非誰かと学習をしてもらうことをお勧めします
学習者と現役SEが集まってる環境
ちょっと冒頭でも書いたのですが、僕はプログラミング学習コミュニティを運営しています。
プログラミングスクールとかもありますが、お金をかけずに学習出来るの良いよねって僕は思ったので、無料のコミュニティを作って色々学習等出来る環境を作りました。
具体的には
・分からないことを現役エンジニアにチャット形式で質問できる
・時間が合えばzoomを使用して、オンラインで教えてもらったりペアプロできる
・未経験から転職や副業した人に学習方法やノウハウを聞ける
・アウトプットの一つとしてチーム開発を行って、現役エンジニアにフィードバックをもらったり一緒に開発できる
などなどみんなでプログラミングを楽しく学ぼう!みたいな活動しているので、興味ある方は下記のツイッターアカウントにDMなりリプもらえれば詳細をお教えします。
ちょっと宣伝みたいになっちゃってすみません
最後に
色々な理由でプログラミング学習されているかと思いますが、あくまで学習は目的達成のための手段です。
いつの間にか学習が目的に・・・なんてならないようにしてほしいなって思います!
僕もまだまだ日々学習中なので、お互い頑張りましょう✨✨✨
貴重な時間を割いてこの記事を読んでくださりありがとうございました🥺
Discussion