こんにちは、かみざとです
今回は「プログラミング学習で初心者が本当に学ぶべきこと」についてお話をしていきます
トピックはこちら
- 【もったいない学習法】
- 【本当に学ぶべきこと】
- 【考え方を身につけよう】
※YouTube動画は下記リンクからご視聴ください
もったいない学習法
プログラミング初心者の頃って結構もったいない学習をやりがちなんですよ
大体2つのアンチパターンがあるのでこれから紹介しますね
アンチパターン1.技術書を隅から隅まで暗記しようとする
1つめは「技術書を隅から隅まで暗記しようとする」こと
初心者の中には、一字一句違わず覚えようという考えで勉強する方が多く見られます
けどね、これ非常に効率の悪い学習方法なので絶対にやめてください、丸暗記で技術書覚えようとすると頭パンクしますよほんと
確かに右も左も分からないうちは全て暗記しようと思う気持ちはわかります
プログラミングは一字でも間違えれば「エラー」が出て正常に動作してくれませんからね
なので、上手く出来ているコードを一字一句違わず覚えれば、ひとまずエラーはでないので、勉強は問題なく進めることができるでしょう
ですが、現場でそのやり方は通用しません、ここがプログラミング学習の落とし穴です
現場では「答えがない」という状況が当たり前です
つまり、自分の頭で考え、目的に沿うような処理をコードで実現する必要があるわけなんですよ
その時に最も大切なのは『周りにある情報やツールを上手に使いこなす能力』です
暗記とは全く正反対の能力であることにお気づきでしょうか?
アンチパターン2.プログラミングの知識を紙のノートにまとめる
もったいない学習法の2つめは、紙のノートに「プログラミングの知識をまとめる」という方法
これ、効率悪すぎるのでいい加減やめません?
知識を整理することは重要ですが、プログラミングで学ぶべき知識は膨大な量があります
それを1つ1つノートにまとめていたらどう考えても非効率でしょう
他にも紙のノートにまとめるデメリットとして以下のことが挙げられます
・スピードが遅い
→タイピングして文字を打ったほうが早い
・検索機能がないので復習しづらい
→パソコンにまとめていれば、検索機能を活用して簡単に復習が可能
・嵩張る、持ち運びしづらい
→情報をデータで管理すれば場所も取らないし、持ち運びも簡単
どうです?紙でまとめるメリットあります?
基本的に、プログラミングの知識をまとめる為にノートを使用するのは効率が悪いです
紙のノートを使った方が効率的だなと思うのは、自分の頭の中にある抽象的なイメージを図式化する時ですね
初心者なら「サーバーとクライアントの関係性」を図示するときとかなら紙もありかな、僕はやらないけど
プログラミング初心者が本当に学ぶべきこと
さて、プログラミング初心者は何を意識して、どのように学習していけばいいのでしょうか?
それは以下の2つです
- ①わからないことを調べる方法=検索能力
- ②問題が起きた時に解決する方法=問題解決力
検索能力と問題解決力が備わっていれば、言語に関してわからないことがあっても、自分で解決することが出来るようになります
これが「自走力がある」ということです
しかし、検索能力と問題解決のスキルは、独学したりスクールに入ったからといって学べるものではありません
残念ながら多くのスクールは実務経験のない学生をメンターとして雇っちゃっています
当然、そんなメンターたちから考え方を学ぶことは難しいですよね
現役エンジニアと積極的にコミュニケーションを取ろう
検索能力と問題解決のスキルを身に着ける為には『現役エンジニアとコミュニケーションを取ること』が一番効果的ですね
そうすることで、現場で活かせる大切な考え方を身につけることができます、格上エンジニアにがっつきましょう
実際に現役のエンジニアに会い
「わからないことがある時には、どう調べますか?」
「何を参考にしていますか?」
みたいなことを積極的に聞いてみるといいですね
オンラインで質問するのは微妙ですが、ちゃんと顔を合わせて質問するとわりとみんな快く答えてくれますよ、格上の承認欲求刺激するの大事
一般的なエンジニアの問題解決法
エンジニアは、分からないことがある時公式サイトを見ます
なぜなら公式サイトには一番正確な情報が記載されているから(公式サイトが間違ってたらもうどうしようもないと思ってる)
で、公式サイトは英語で書かれている場合が殆どなので、ある程度英語にも慣れておくと良いですね
「おれ英語苦手、、、」とか言ってる場合じゃないですよ、やれ
その他に、評価の高いプログラミングのブログ記事を参考にして、機能を実装したりします
公式サイトやブログ記事を参考に、わからないことを明らかに出来れば胸を張って「初心者を卒業できた」と言ってもいいかと
技術レベルがどうであれ、自分で調べて解決できるなら初心者は卒業です、あとは勝手にいくらでも成長していってください
エラー解決方法
何かしらの機能を実装していると、だいたい何かしらのエラーが出ます
このエラーハンドリングのやり方に関しても、やはり現役エンジニアから色々話を聞くことが重要ですね
僕の場合ですが、エラーが起こった際に参考にするサイトが3つあります
この3つのサイトを参考にすれば、割と難しいエラーでも解決できるよね、という感じ
それが以下の3つ
- ①公式サイト
- ②Stack Overflow
- ③GitHub Issues
上記の3つを見て回れば、大抵のエラーの解決方法がわかります
ちなみにどれも英文表記なので、やはりプログラマーになりたい方は英語学習は必須、アレルギー起こしてる場合じゃねぇ
もちろん、上記3つのサイトを参考にしても解決できない場合もあります
そのような時の為に、現役エンジニアに知り合いを多く作っておくんですよ
で、いつでも質問できる環境を整えておきましょう、そうするとマジで精神的に安定します
考え方を身につけることの重要性
プログラミング業界では
「技術書はどれがいいか」
「どんな言語を学んだ方がいいか」
「どんな順番で学習すればいいか」
など、学習方法に関する様々な意見が飛び交い宗教戦争のようになっています
でも、そんなこと議論しても意味ないんですよね、本質的じゃない
僕が大切だと思うのは「エンジニアの考え方を身につけること」です、これだけ
で、やはり考え方を身に付ける上で最短なのは『現役エンジニアから直接話を聞くこと』ですね
技術書を読んだり、スクールに通っても手に入らない情報を自分の力で掴みに行ってください
現役エンジニアの中には「教えることが好き」という人も多いですし、丁寧に教えてくれる人は必ず居ます
エンジニアとの人脈を作ることは簡単
現役エンジニアの知り合いが居ない方でも、オンラインサロンやコミュニティに参加したり、Twitterで発信したり、自分で勉強会を主催したりすればいくらでも人脈を作れます
「僕人見知りだからぜんぜん知り合いできないんですよ〜」とか言っちゃってるやつはエンジニア以前に社会人としての器がないですね、学生時代にもどってコミュ障直すことから始めてくれ
で、あれこれやって現役エンジニアと仲良くなったら
・考え方
・わからないときの対処法
・問題が生じたときの解決策
などを積極的に学びましょう、それはもうスポンジのように吸収しましょう
ネット上の記事も参考になる
もし、地方に住んでいて全然繋がりを作ることが出来ないという方は、色々なエンジニアがネット上に記事を投稿しているので、それを参考にしてみてください
Rilsエンジニアなりたいなら、特にオススメなのは「伊藤純一」さんが書いた「Qita」や「はてなブログ」の記事です
上記のブログを隅から隅まで読めば、エンジニアとしての考え方はかなり身につきますよ
無料で公開して下さってることに感謝しまくり、現役エンジニアの思考を吸収しまくってください
これであなたも現役エンジニアの仲間入り