Yuki Matsumoto

To be engneer soon / Ruby on Rails

仕事しながらプログラミング学習するコツ

2019-02-14 Yuki Matsumoto雑談

最近、未経験者からプログラマーになるための勉強方法のベストプラクティスがTwitterで話題になっており、自分も目を通したのですが、学習するなら1日8時間フルコミットと書かれており、これは仕事しながら学習している自分としては再現性がないぞということで自分なりの学習方法を書いてみます。

前提として現在本業で仕事をしながら、時間を作ってプログラミングの学習をしている人に届けばと思います。まず、個人の考え方としてはフルコミットしなくても学習方法を工夫すればいくらでも仕事しながらでもプログラマーになれると思っています。

ゴールから逆算する

自分のように時間的な制約がある人にとっては未経験からプログラミングを学習するには途方もない時間がかかると考える人も少なくないと思います。

確かに先が見えない状態だと途方もない旅だと思うのも無理はないですよね。なのでまず取り組む前にゴールを設定することをおすすめします。

ゴール設定は人によって異なると思います。

転職だとか仕事に必要になる技術の取得だとかはありますが、ゴールを明確に決めることが第一歩です。ゴールが決まったらゴールまでのプランを作る。プラン作成で重要なのは何をいつまでに終わらせるかを決めること。

自分の場合は転職をゴールとして、ゴールから逆算して「いつまでにこれを行う」というプランを起てています。プラン設定は綿密ではなくていいので、おおよその目明日を作ることがいいと思います。

あとは一週間で自分が確保できる時間を見積もることも重要です。一週間に確保できる時間を知ることで自分が起てたプランが実行可能であるかおおよその目処が起ちます。見積もりを行う際は希望ではなく実際に確保できる時間をベースに考えることが望ましいです。希望的観測で見積もりを行うとその後のプランが崩壊するので、あくまでリアルな数字にこだわりましょう。

時間を確保する

なんだかんだ言って結局一番大事なのが時間を確保することです。時間が確保できなければ、そもそも危ういです。なのでやるべきことは以下の2点かなと思います。

・仕事は定時であがること
・趣味の時間を犠牲にする(ある程度)

正直この二点ができれば必要な時間は確保できるはずです。平日は定時で仕事を切り上げて最低でも2時間は学習時間を確保するようにしましょう。そして飲み会や旅行、趣味に費やしていた時間をある程度削るのも大事です。とくに仕事終わりの飲み会や週末の付き合いなどは貴重な時間を費やすので、ゴール達成まではぐっと我慢しましょう。また、”ある程度”というのもコツで、完全に取り去ると逆にストレスばかり貯まる場合があるので、ガス抜きとして週に数時間はリラックスできる時間を設けるのがバランスがいいかなと思います。自分の場合はyoutubeで動画を見たり、ジムに行ったり、釣りに行ったりして、リフレッシュするようにしてます。

勉強方法

時間が確保できることができれば、次に大事なのが勉強法です。勉強方法で一番徹底することは”効率”を重視することです。普段仕事をしながら、スキマ時間に学習を進めていくのであれば、とにかく学習効率を上げることを意識しましょう。

学習効率を上げる上で自分が取り入れている方法

・動画学習を取り入れる
・なるべく早いタイミングでオリジナルのアプリを作成する
・学習した内容をメモる
・現役エンジニアと学習する機会を作る

動画学習を取り入れる

動画学習は学習効率を上げる上ですごくいい方法だと思っています。特に学習を始めたタイミングで全体像が把握できていない場合は動画を活用しながら、体系的な学習を通してアプリを作成することで、その後の理解度が大きく向上します。

自分が動画学習をする上で活用しているのがUdemyです。Udemyは動画コンテンツが充実しているのでプログラミング系の教材はだいたいそろっています。その中から自分のターゲットに合う内容を選んでみることをおすすめします。コンテンツは有料ですが、¥2,000ほどでアプリ開発ができると考えるとコスパは高いと言えます。

Udemyについては別の記事でまとめているので、よかったら読んでみてください。

プログラミング初学者はUdemyがオススメな理由

なるべく早いタイミングでオリジナルのアプリを作成する

動画を活用して体系的にアプリ開発を学んだら、早速オリジナルアプリの開発に取り掛かりましょう。多分まだわからないことが多いとは思いますが、わからないことは都度、ググって解消していきましょう。このタイミングでは実際に開発しながら自分が理解していないことを理解することが重要です。動画学習で学んだ開発方法をベースに必要な機能の実装を通して不足している部分を補っていきます。

学習した内容をメモる

学習した内容をメモることは一時的に開発の手を止めることになりますが、調べた内容を自分なりにまとめてアウトプットすることで、学習した内容を整理することができます。また、今後同じ内容を調べる際のメモとして機能するので、調べる手間を減らして開発効率を上げてくれます。メモは紙でも、アプリのメモ帳でも、ブログでもいいですが、ブログに書くことをおすすめします。自分が学習した内容や自分の取り組み、考え方は都度アウトプットして外部の人がアクセスできる状態にしておくことで、他者から評価、認識してもらうことが可能です。これは転職などで役に立ちそうなので惜しまず実施しておくべきでしょう。

現役エンジニアと学習する機会を作る

普段一人で学習していると息詰まることや、頓挫する瞬間があります。そんなときに現役エンジニアに質問できたり、一緒に学習できる環境があると、停滞して進捗が止まることを防止することができます。自分の場合は幸いにも仲の良い友人に現役エンジニアがいるので、週一でもくもく会を設けて合同学習をしてます。基本的には一人で学習してますが、ちょっとした技術的な会話を通して、気付きがあったり、直面していた問題のブレークスルーがあったりするので、効率的な学習方法だと思っています。未経験者が現役エンジニアと接点を持つ方法は他にも共通の技術系のもくもく会に参加するとか、イベントに参加してみるとかもいいと思います。

まとめ

今回は仕事をしながらプログラミング学習を進めていく方法を書いてみました。これはあくまで自分のやり方なので人それぞれ合うやり方があると思います。ただ、もし働きながらプログラミングを学習するのは難しいと思っている方がいましたら、自分みたいなやつでも工夫しながらやってるんだなと思っていただけるとありがたいです。