プログラミングの勉強法【マインド+具体的な勉強内容】
今回は、プログラミングの勉強方法について、マインドと具体的な勉強内容について話していきます。
自分もプログラミング学習は一度挫折して現実逃避したことがあるのでよくわかりますが、一発ですんなりとできるものではないですよね。
だからこそやりがいはあるし、燃えてくるという人もいるかもしれませんが、中にはそのままフェードアウトして、プログラミングの世界から消えてしまう人も多くいます。
なんとなく勉強を始めてしまうと、なかなか勉強がうまくいかずに途中でやめてしまう可能性があるので、あらかじめ、プログラミング学習に対する正しい心構えや、勉強内容を知っておく必要があります。
しっかりメンタルを武装して、正しい道を歩いていけば、途中で挫折してしまう可能性を大きく下げることができます。
そこで今回は、前半では「プログラミングの正しい勉強姿勢」を、そして後半では「具体的に何を勉強すれば良いのか」についてまとめていきます。
ここで、後半の勉強する内容に関しては、前提として、転職するまでに必要な知識のことだと思ってください。
プログラミングの正しい勉強姿勢
WHY:プログラミングを学習する目的を明確にする
プログラミングを学習する上で、重要なことの1つ目は「プログラミングを学習する目的を明確にすること」です。
プログラミング以外のことでも同じことが言えますが、プログラミングの場合は特に目的なしで学び始めると、必ず挫折することになります。
強い動機なしで学び続けられるほど、プログラミングの学習は甘くはないです。
そのため、現時点でプログラミングを学習している目的を、即答えることができないのなら、学習を進める前に、そこをしっかり詰めるようにしましょう。
パソコンでもスマホでもなんでもいいので、どんどんとプログラミングを学びたい理由を列挙していってください。
ここで注意してほしいことが、WHYは2回は掘ってほしいということです。
例えば、プログラミングを学ぶ理由として、「月に20万円ほどの副収入が欲しいから」と考えているとします。
これはWHYを1回掘った状態です。
ここで終わると、かなり動機が浅くて、ほとんど目的を設定していないのと変わらないレベルです。
そこでもう一回このWHYを掘ってみてください。
例えば、「月に20万円の副収入が欲しいのは、ワンランク上のマンションに住みたいから」とか、「YouTubeの広告費にガンガンお金を使いたいから」などが考えられます。
できたらもう一回くらいWHYを掘ってもいいですね。
「ワンランク上のマンションに住みたいのは、女の子を連れ込みたいから」とか「YouTubeに広告費を大量投下したいのは、自分の商品を売りたいから」とかです。
ここまで目的を掘っておくと、プログラミングを学ぶ動機はかなり明確になり、この目標が学習する上で大きなエネルギー源となるでしょう。
プログラミングを学ぶ理由なんて、他にもいくらでもあります。
- 会社にいきたくないので、リモートワークしたいから
- 開発してみたいサービスがあるから
- 将来、海外で働いてみたいから
- ノマドワーカーをやってみたいから
とにかくプログラミングを学習する時は、学ぶ目的を最低2回、できたら3回くらい掘って、自分の目につくところにメモしておいてください。
WHAT:何を学ぶのかを決める
プログラミングを学習する上で、重要なことの2つ目は「何を学ぶのかを決めること」です。
プログラミングを学ぶといっても、Webアプリケーション、インフラ、機械学習、データサイエンス、iPhoneやAndroidアプリなど種類はたくさんあります。
この中で、一体自分は何を学びたいのかをはっきりとしましょう。
「Web開発もしたいし、機械学習もしたい」は、駆け出しのうちは無理だと思ってください。
一つのことだけでも継続できるかわからないのに、あれもこれもと欲張って手を出すのは絶対にNGです。
とはいっても現時点で特に絶対にこれがやりたいというものがない場合は、ひとまずWebアプリの開発を学んでみましょう。
理由は、
- 初学者向けの学習教材が豊富であるから
- 最も副業がしやすい分野だから
- 一番身近で初学者でもとっつきやすいから
です。
Webアプリの開発に必要な言語は、フロントはHTML、CSS、JavaScriptがあり、バックエンドはRubyやPHPを用いることが多いです。(HTML、CSSは言語ではありませんが、便宜的に含めました。)
JavaScriptは、最近最もあつい言語でVue.jsやReactなどのフレームワークが存在します。
RubyはRuby on Rails、PHPはLaravelというフレームワークを使って開発していくことが多いです。
これらの言語、フレームワークを学ぶ教材は、無料、有料ともにかなり多いので、プログラミングを使って何をやりたいのかがわからないのであれば、無難にこれらを学んでおきましょう。
WHERE:最適な学習環境を整える
プログラミングを学習する上で、重要なことの3つ目は「最適な学習環境を整えること」です。
プログラミングに限った話ではないですが、何かを勉強や作業をしていく上で、学習環境というものはかなり重要です。
当然、数時間、もっとする時は10時間以上、勉強することになるので、長時間集中するのに向いていない学習環境しかないと、すぐに脱落してしまう原因になります。
今あなたの学習環境を思い浮かべてください。
デスクは、使いやすいものを使っていますか?
小さすぎたり、高さがあっていないなどはありませんか?
椅子は、座椅子のような腰を痛めやすい椅子を使っていませんか?
また、長時間座っていると尻が痛くなるような椅子を使っていませんか?
学習する場所の照明は、学習に集中できるものになっていますか?
暗すぎたり、明るすぎたりしませんか?
学習する部屋に閉塞感はありませんか?
適度に風通しが良くて、外のちょっとした雑音が聞こえるくらいが最適でしょう。
プログラミングを勉強するとなったら、まずは学習環境にしっかり投資しましょう。
一度、学習環境に投資しておけば、プログラミングの他の勉強だったり、作業をする時にも役に立ちます。
コンビニでからあげクンやお菓子ばかり買うことはお勧めできませんが、お金を使うべきところはちゃんと使いましょう。
WHEN:ルーティンを整えること
プログラミングを学習する上で、重要なことの4つ目は「ルーティンを整えること」です。
このルーティンを整えるということができていない人が結構多いです。
ルーティンとは、毎日どの時間に何をするのかを決めること。
なぜルーティンが大事なのかというと、人のモチベーションは不安定なものだからです。
調子がいい時は勉強が捗るかもしれませんが、調子が悪い時は一気に勉強をする気が失せてしまいます。
しかも、自分の好きな趣味など楽しいことをするならまだしも、プログラミングというそこまで好きでもなく、初めてすることに対しては、十中八九、気分が乗らない時の方が多いでしょう。
よほどの勉強好きでもない限り、モチベーションに頼っていたら、一生机に向かわないことになります。
だからこそ、仕事がある人ない日のそれぞれで、どの時間帯に学習するのかを完全に固定してしまいましょう。
例えば、自分が猛烈にプログラミングの勉強をしていた頃は、平日は仕事が始まる前の朝の7:00〜9:30、仕事終わりの19:00〜23:00を勉強に費やすと決めていました。
そして、一度ルーティンを決めたらそれは絶対に守ってください。
王様からの命令だと思ってください。
心配しなくても、初めのうちは大変でも2〜3週間経てば、その生活が当たり前になります。
このルーティン化ができるかが、プログラミングの勉強を続けられるかどうかに大きく影響してきます。
WHO:仲間と一緒に勉強する
プログラミングを学習する上で、重要なことの5つ目は「仲間と一緒に勉強すること」です。
プログラミングはよほど意思が強かったり、勉強好きでないと、一人で学習するとかなりの確率で挫折します。
自分の場合は、中学三年生の時から真面目に勉強を継続してきたので、一人で長時間勉強することも作業することも、全く苦でありませんが、ほとんどの人はそうではないと思います。
昔からちゃんと学校の勉強をして、受験勉強も真面目に上を目指してとやってきた人なら、なんら問題ないですが、ずっとサボってきた人が急に机に長時間も向かえるはずがないのです。
そのため、少し一人でやってみてもしダメだと思ったら、すぐに仲間を作るようにしましょう。
仲間の作り方はいくらでもあります。例えば、
- Twitterで同志を集める
- プログラミングのコミュニティに入る
- スクールに通う
などがです。
仲間ではなくてもメンターという形でも大丈夫です。
MENTAというサービスを使えば、簡単にメンターを見つけることができます。
お金を払うことには抵抗があるという人も、学習を継続できるのであれば、お金を払う価値は十分にあります。
とにかく一人で無理して勉強しようとしないことです。
HOW:正しい勉強方法を理解する
プログラミングを学習する上で、重要なことの6つ目は「正しい勉強方法を理解すること」です。
これまでの紹介してきたことを実行してくれれば、プログラミングを勉強する環境やマインドはおよそ整えることができます。
環境やマインドが整ったところで、ようやく学習に移るわけですが、もちろんただ闇雲に勉強すればいいということではありません。
正しい勉強方法を理解した上で、進めていかないと効率が悪いだけでなく、すぐに挫折してしまうことになってしまいます。
ここから説明するプログラミングの正しい学習方法については、必ず忘れないようにしてください。
暗記はいらない
初学者が一番勘違いしているのは、プログラミングは暗記しなければいけないということです。
これに関してはネット上で、自分も含めて色々な人が指摘をしていますが、いまだに勘違いしている人が大勢います。
プログラミングは各文法の記述方法を全部丸暗記する必要なんて1mmもありません。
大前提として、プログラミングはネットでカンニングしながらコーディングしていくものだと思ってください。
正直、全て暗記しなければいけないんだったら、自分もやりたくないです(笑)。
そもそもプログラミングというものは、変化が早いため、業務で使用する言語が変わるなんてことも全然あり得るので、逐一暗記なんてしていたら身が持たないです。
しかも同じ言語であっても、バージョンが変わると記述方法が変わったりするくらいです。
もはや暗記をするなんてことは、プログラミングを学習する上で最もやってはいけないことです。
どんなベテランエンジニアさんもずっと横でGoogleで検索しながら、コーディングしています。
プログラミングは暗記するものではなくて、カンニングしながら書いていたら勝手に暗記してしまうものです。
初めから覚えようとしている人は誰もいません。
まずは、プログラミングに暗記はいらないということを絶対に押さえといてください。
インプットは最小限にしてすぐアウトプット
初学者が押さえなければいけないポイントの2つ目は、「インプットは最小限にしてアウトプットを重視すること」です。
とにかくインプットばかりする学習は、初学者ほどやりがちです。
インプットは読書と同じで、やっていて気持ちがいいんですね。
頭に入れるだけなので、手が止まるなんてことも、つまずくこともないからです。
しかも勉強した気にもなるので、大変でつまずきまくるアウトプットをなかなかしない初学者がたくさんいます。
ただ、いくらインプットを繰り返したところで効率が悪いだけです。
一回寝て起きたら50%以上はもう頭に残ってもいません。
だからこそ、インプットベースの学習ではなくて、アウトプットベースの学習に切り替えてください。
つまり、何かを作りながら、わからないことがあればその都度調べて解決していくということです。
インプットとアウトプットを高速に繰り返すことこそが、最も効率のいい勉強方法です。
アウトプットは確かに大変ですが、大変だからこそ成長が早いのです。
楽な道に成長なんてありません。
楽じゃないのが嫌ならやめてしまった方がマシです。
「プログラミングを勉強するんだ!」と決めたなら、腹をくくって気合い入れてください。
必要最低限だけ学習する
初学者が押さえなければいけないポイントの3つ目は、「必要最低限だけを勉強するということ」です。
初学者は、あれもこれもと過剰に勉強範囲を広げがちです。
適当に勉強をしていると、自分の目的には全く不必要な知識まで勉強しているなんてことは往々にあります。
Web開発をしたいなら、Pythonに時間をかけるべきではないし、AngularのようなJavaScriptのフレームワークも初学者が勉強すべきではありません。
フロントをメインでやりたいのに「PHPの勉強も念のためにしておくか」ということで時間をかけて勉強している人もいる。
念のためとか、出来るだけ広い知識を持っておいた方がいいとか、そんなの初学者にいりません。
とにかく自分の目的を達成することに必要なことだけを勉強してください。
そのためには、2つ目で話した、アウトプットベースの学習が効いてきます。
自分が作りたいものを作りながら、わからないことがあればその時に都度インプットしているので、本当にその制作物に必要なインプットしかしなくなります。
初学者はこれでいいです。
あれもこれもと手を出すのではなく、必要なことだけに集中特化して学ぶようにしてください。
転職するまでの具体的な勉強内容
転職するまでに勉強しなければいけないことについては、言わなくてもわかってくれると思いますが、Webアプリケーションの開発を行う企業を目指すという前提です。
ネイティブアプリエンジニアや機械学習系のエンジニアを目指す人は、申し訳ないですが、自分は全然わからないので、全く触れません。
勉強しなければいないことは、フロントエンドの開発とバックエンドの開発で違うので、二つに分けて、簡単に紹介していきます。
今回紹介するものを現場に入る前に勉強しておけば、困ることはないと思うので、ぜひ参考にしてみてください。
フロントエンドエンジニアを目指す場合
まず、フロントエンドエンジニアを目指す場合、転職するまでに勉強しておくべき内容は、以下になります。
- 基本的なIT知識
- HTML / CSS
- JavaScript(Vue.js or React)
- SPA
- Git / GitHub
- Linux
- Docker
- タイピング
基本的なIT知識に関しては、基本情報技術者試験の問題が解けるくらいのレベルにしておけば大丈夫です。
勉強には、過去の動画でも何回も紹介していますが、『キタミ式イラストIT塾基本情報技術者令和02年』が一番おすすめです。
JavaScriptのフレームワークに関しては、Angularは難しいので、ひとまず勉強しなくてもいいので、Vue.jsかReactのどちらかをある程度触れるレベルにしておけば大丈夫です。
フロントエンドエンジニアなら、大抵、このどちらかのフレームワークを使うと思います。
そのため、転職活動で使うポートフォリオサイトはjQueryでもいいですが、内定が決まったら、その会社で使っているフレームワークを聞いて、そのフレームワークでポートフォリオサイトを書き直してみましょう。
SPAに関しては、Vue.jsやReactを勉強していれば、自然と出てくると思うので、その時に調べて概念を理解しておいてください。
Dockerについても、転職活動中のポートフォリオサイトには組み込まなくてもいいですが、先ほどのJavaScriptのフレームワークと同様、内定が決まってから入社するまでの間の期間に、勉強するようにしましょう。
意外と見落としがちなタイピングも、時間に余裕があるなら、早く打てるように練習しておいたほうがいいです。
タイピングはもはや皆さんならすでにやっているかもしれませんが、寿司打を使うと、ゲーム感覚で楽しみながら練習できると思います。
バックエンドエンジニアを目指す場合
次にバックエンドエンジニアを目指す場合に、転職するまでに勉強しておかなければいけないことは以下になります。
- 基本的なIT知識
- HTML / CSS
- JavaScriptの基礎
- RDB / SQL
- Ruby or PHP
- Git / GitHub
- Linux
- Docker
- タイピング
フロントエンドエンジニアと違うところは、JavaScriptの勉強はがっつりとやりこまなくてもいいという点と、SQLとRuby、PHPの勉強が必要だということです。
JavaScriptに関しては、ベンチャー企業の場合、バックエンドとフロントエンドの両方を担当する可能性が高いですが、バックエンドエンジニアとして入社するならひとまずは、JavaScriptの勉強は基礎とjQueryを使ってポートフォリオを作れるだけのスキルがあれば大丈夫です。
もし事前に、フロントエンドも担当することがわかっていて、なおかつ使用するフレームワークも決まっているなら、入社する前にそれを勉強したほうがいいと思いますが、それ以外の場合、がっつりと勉強しなくてもいいです。
それよりも、RDBやSQLの勉強をしたほうが、バックエンドエンジニアとしてはよほど有意義なので、こちらを頑張りましょう。
RDBとSQLについては、正規化、トランザクション、デッドロックのようなRDBの基礎からSQL基礎まで、全部わかりやすく解説してくれているSQLドリルがおすすめです。
RubyとPHPの勉強は、どちらか好きな方を勉強すればいいと思っています。
大体の企業はどちらかを使っているので、わざわざPythonのDjangoを勉強してポートフォリオサイトを作るというクセの強いことをしなければオッケーです。
ポートフォリオはRubyとPHPのどちらを使って作ってもいいですが、内定が決まったら、その会社が採用している方の言語をしっかりと勉強しておきましょう^^
まとめ
ここまでで、前半でプログラミングの正しい勉強姿勢を、そして後半でフロントエンド、バックエンドのそれぞれで入社するまでに勉強しておくべきことについてまとめました。
ひとまず、入社するまでに今回紹介した内容をしっかりと頭に入れて、実行に移してくれたら、全く問題ないと思います。
転職してエンジニアになるまでに、やらなければいけないことや、正しい勉強方法などは、今回紹介したように、もう決まっています。
あとは、やるかやらないか、そしてやるならいかに早く完了させるかが勝負です。
早く勉強して、早く就職して、早く独立して、自分の人生をテンポをどんどん上げていってください。
「マイペースが一番」とか「自分のペースでやることが大切」というのは、他人と比較しすぎないことが大事というだけで、だらだらしてもいいといっているわけではないですからね。
本記事の内容が、これからエンジニアを目指す人の役に立てば嬉しいです。
本記事の内容は、YouTubeでも解説しているので、動画の方も是非ご覧ください^^
今回もブログをお読みいただきありがとうございます😎 以下のLINE公式では、LINE限定の動画コンテンツやコラム、みなさん一人ひとりにパーソナライズした情報などを配信していますので、ぜひ友だち追加お願いします^^
(追加していただいた方だけに配布する限定動画もございます🎁)