こんにちは。KOUKIです。
プログラマーを目指されている方の中には、こんな疑問を持たれている方もいらっしゃるのではないでしょうか?

プログラマーに興味があるんだけど、どうやって勉強したらいいのかな?
私は、この3年間、自分の時間をほぼプログラミングの学習に費やしてました。
勉強した内容については、以下の通りです。
●プログラミング言語(マークアップ言語も含む)
・Java
・PHP
・javaScript
・HTML5
・CSS3
・C
・C++
・C#
・VBA
・PowerShell
・Python
・Go言語
・Kotlin
・Ruby
●Webフレームワーク
・Django
・Ruby on Rails
・React
・Vue.js
●DB
・MySQL
・PostgreSQL
・Redis
●インフラ
・Linuxサーバー構築
・Docker
・ネットワーク
・AWS
・GCP
沢山、勉強したことがわかると思います。
しかし、単なる「ノウハウコレクター」になっており、実務では役に立たない知識が多かったです。すぐに忘れますし^^;

要するに、「効率の悪い勉強」をしていました。
本日は、「プログラミング初学者向け」に、効率的だと思う勉強方法を紹介したいと思います。
ゴールを決める

最初にゴールを決めましょう。
例えば、「Webプログラマになる」とか「インフラエンジニアになる」とかです。
何を目指すかによって、学習すべき内容が異なるはずです。
学習対象を絞る
ノウハウコレクターにならないためには、学習対象を絞り込む必要があります。
私の場合は、Webプログラマになることを目標としていたので、以下の勉強にのみ注力するべきでした。
●プログラミング言語(マークアップ言語も含む)
・HTML5
・CSS3
・Python
・Go言語
●Webフレームワーク
・Django(サーバーサイドのフレームワーク)
・React(フロントエンドのフレームワーク)
●DB
・PostgreSQL
●インフラ
・Linuxサーバー構築
・Docker
・ネットワーク
・AWS
だいぶすっきりしたと思います^^
Web系言語では、RubyやPHPでもよいのですが、私はPython推しなので、Pythonを残しておきましたw
Go言語は、クラウド環境の開発案件でよく使用される言語、かつ、私が好きな言語なので残しておきました(私見が入りすぎている?)。
PostgreSQLは、Djangoと相性がいいので、選定してます。同じ理由で、Django + React も相性がいいので、Reactを残しています。
※MySQL, Vue.jsと組み合わせることもできますが、PostgreSQL, Reactのほうが組みやすいです
インフラ系の知識をWebエンジニアが持っていたら重宝されるので、こちらはがっつり学んでおきましょう。
より詳細の内容については、こちらを参照してください。
学び方
お勧めなのは、udemyという動画学習サービスで学ぶことです。
セール時は最安1200円で購入できるので、書籍よりもコスパがいいです。
また、講義の中で不明な点が出た場合は、講師に質問できます。
udemyで学習することを前提とした学習の流れを説明します。
<学習の流れ>
①講義をパート毎視聴する
②各パート終了毎に自分で「手を動かして」実装する
③講義を終えたら、学習内容をブログかQiitaに記録する
④講義のソースコードを少しずつ変えるなど、色々いじってみる
⑤オリジナルアプリを作ってみる(講義の内容を踏襲したものでok)
⑥ブログで作り方を公開する
この流れで学習を進めていくとインプットとアウトプットがバランスよく行えます。
よく初学者の人がやりがちな勉強方法は、「基礎部分を何度も学習する」です。
<初学者がやりがちな学習方法>
①「基礎から学ぼう○○言語」などの分厚い書籍を購入し基礎学習
② 分厚い書籍を繰り返し、何度も読み直す
③ 別の言語の基礎学習本を購入し学習を始める
④ ②~③を繰り返す
上記の学習方法の何が問題か分るでしょうか?
一つは、「分厚い書籍から学習を始める」です。
書籍が分厚いと最後まで読み切る前に挫折します。特に基礎部分は「適度につまらない」ので、仕事帰りの疲れた状態で書籍を開くと寝落ちします。加えて、プログラミング書籍の殆どは分厚いので、この理由からも私は動画学習を勧めています^^;
書籍を何度も繰り返し読み込むのもあまりお勧めしません。もちろん、理解できなかった箇所については読み返したほういいです。しかし、書籍を何度も読み返すくらいなら「自分でアプリケーションを作る」方が、何倍も身に付きます。

適度にアウトプットしたほうが成長するのです!
そして、最後にやりがちなのは「基礎学習を終えたら別の言語の基礎学習を始める」ですね。
これは、本当に無駄です。ある程度知識が身についてくると基礎学習することが心地よくなってくるんです。

アウトプット作業は、頭を使いますから「無意識に避ける」のでしょうね。きっと。
「ノウハウコレクター」の仲間入りですよ。インプットばかりして、アウトプットしない人たち。。。
これは、私がやってしまった悪い勉強方法です^^;
正直、プログラマになる前は、そんなにコードが書けませんでした(沢山勉強したはずなのですが)。
コードが書けるようになったと実感したのは、仕事でプログラミングするようになってからですね。
仕事でプログラミングしたほうが爆速で成長します。
洋書で学ぶプログラミング
動画学習をお勧めしている私ですが、「英語力UP」のために洋書でプログラミングを勉強しています。
外国のプログラミング書籍は、日本の書籍よりも種類や内容が充実しており、平易な英文で書かれているので、「英語力+技術力UP」をするのにちょうどいいです。
udemyでも音声が英語の教材を購入していますが、講義についていくことが難しい場合があります。一方で、洋書の場合は、自分のペースで学習できるのでオススメです。
<お勧めの書籍>
この学習のメリットは、次の通りです。
<洋書学習のメリット>
・プログラムのエラーコードが怖くなくなる
・ググるときに「日本語+英語」で検索がかけられる※これ大事
・ブリッジSEを目指せる
特に、英語で検索できるようになると大変便利です。
私たちがシステム開発するときは、プログラミングするよりググっている時間のほうが長いので、英語検索でより多くの情報を得られるメリットは限りなく大きいのです。
あとがき
プログラミング学習は、挫折しやすいです。
色々上手くいかない場合は、ITスクールに通うのもありだと思うので、状況に合わせて臨機応変に勉強していくといいと思います^^
因みに、ITスクールだと「侍エンジニア塾」がお勧めです^^

それでは、また!
コメントを残す
コメントを投稿するにはログインしてください。