スクリーンショット_2018-11-05_23

メンターがおすすめするプログラミング学習方法

株式会社ゆうつくの森本です。
会社経営の傍に、プログラミングスクールのメンターを兼任しています。
(単にコーチングだけでは食えてないだけ)

これまで、50名以上の生徒さんを教えている中でコーチング的アプローチがすごく効果を発揮してるなと感じました。

そこで、これからプログラミングを学ぶ方のために、コーチングを使った学習方法を紹介していきたいと思います。

プログラミング学習って、Twitterの「いいね」みたいな機能は簡単に作れると思ったのに、想定以上に難しくて挫折しちゃう人がめちゃくちゃ多いんです。
ところが、そういう方にコーチングを行うとプログラミングが好きになってくれて、結果的に学習時間が増えてプログラミングスキルがどんどん身についていきます。
他のプログラミングスクールの確実に継続してくれる人が多いかなと思ってます。
特にこんな方にコーチングを使った学習方法が向いているので、ぜひ読んでみてください。

・簡単にプログラミング技術を身に付けたい
・未経験だけどWebエンジニアとして働きたい
・数学や論理的に考えることが苦手
・仕事が忙しい
・一人で勉強している(教える人がいない)

セルフコーチングを使ってプログラミングを学習するには

目的を明確にして、覚悟を決めましょう!
なぜ、プログラミングを学ぼうと思ったのでしょうか?

現状を変えたい!仕事で必要だから!起業したい!

きっと、様々な理由で勉強しようと思ったはずです。
その思いを表現すると、どのように言えますか?

勉強する目的を情熱的に2000文字以上で書いてください。

この文章の中には、具体的な理由と、どのくらいの覚悟で勉強するのかという思いの丈を込めるのです。
実際のメンタリングでは、生徒さんに文字起こしをしてもらうわけではなく、僕が質問をして、
「なぜ勉強したいのか」
「どのくらいの思いがあるのか」
「プログラミング能力を身につけた後はどのようになりたいのか」
「どのくらいの時間を使える予定なのか」
など、質問してメモしています。

メモの例)(実際の生徒さんの例ではなく、仮想の人物です)
◯プログラミングを学ぼうと思った理由
新卒で営業として就職したが、業務量が多く給料も少ない。
時間や場所に縛られず自由な働き方をしたいと思うようになって、プログラミング能力を身につけたら実現できるんじゃないかと思った。
将来は、リモートワークのフリーランスで自由に働く生活をしたい。

◯学習終了時の目標
今はプログラミング未経験者だが、転職してWebエンジニアとして就職してスキルを身につけたい。
条件
・月収25万円(ボーナスあり)
・勤務地は東京都内
・未経験でも受け入れてくれて、教育してくれる会社
・残業については希望なし。(忙しくてもOK)
転職するために
・ポートフォリオを作成する(自作のWebアプリケーション)
→ アパレル店員と女子中高生を繋げるコミュニティーサイトを作成

◯学習期間
3ヶ月間

◯勉強時間
平日2時間、休日6時間
平日2時間×5日+休日6時間×2日=週22時間
総勉強時間:13週×22時間=286時間

◯その他
自分は周りに流されがちなので、仕事終わりは必ず教室に来るようにして勉強時間を確保する。この3ヶ月間は、飲み会や遊びはやめて勉強に専念する。


プログラミングは一朝一夕では身につきません。
最低でも3ヶ月間(200時間以上)はガッツリと学ばなければ行けません。

これだけの時間をプログラミングに費やす覚悟を決めるために、なぜ勉強するかを明確にすることが大切になるのです。

スケジュールを作ろう

まずは、しっかりと学習計画を立てることから始めましょう。
僕は、Ruby on Rails というプログラミング言語を教えています。

Ruby on Rails には有名なカリキュラム、「Ruby on Rails チュートリアル」というものがあります。
(お世話になっているスクールにも当然素晴らしいカリキュラムがあります)

今回は、このフリーの教材(以下、チュートリアルと呼ぶ)を使って学習計画を立てて行こうと思います。

このチュートリアルは、学習目安時間が100時間と結構なボリュームがあります。(個人的には2周して欲しいので、150時間くらい欲しい)

学習時間だけ聞いても、挫折しちゃいそうですよねw
なので、きちんとスケジュールを立てて実行していくようにしましょう。

スケジュールを立てるポイントは、SMART(Specific、Measurable、Achievable、Related、Time-bound)を満たしていることです。

▼Specific(具体的に)
明確で具体的な言葉で表し、誰が読んでもわかるようにする。

▼Measurable(測定可能な)
目標達成の進捗を自分や他人もわかるように定量化する。

▼Achievable(達成可能な)
希望や願望ではなく、その目標が達成可能な現実的内容かどうかを確認する。

▼Related(目的に沿っている)
自分の目的に沿っている目標になっているかどうかを確認する。

▼Time-bound(時間制約がある)
いつまでに目標を達成するか、その期限を設定する。

もし、プログラミングのメンターやコーチがついているなら、あなたが立てたスケジュールを見せてSMARTになっているか確認してもらうといいと思います。
ただ、自分をコーチングするセルフコーチングをする場合は、慣れないとSMARTになっているかどうか判断するのがなかなか難しいですね。
そういう時は、一旦自分が納得できる物を作れたら実際に行動に移るといいです。
3日おきに振り返って、自分の行動がSMARTになっているかチェックすることを繰り返すと行動の精度が上がっていきます。
実際に僕が生徒さんに質問して作るスケジュールのメモをは次のようになります。

◯学習目標
3ヵ月間で、Railsの基礎を身につけ、ポートフォリオ(アパレル店員と女子中高生を繋げるコミュニティーサイト)を作成する。

◯マイルストーン(小目標)
・最初の1ヵ月でRailsチュートリアルを終わらせる。
・2週間かけて2週目を終わらせる。
・残り1ヵ月半で、ポートフォリオを完成させる。

◯最初の1ヵ月間(チュートリアル1周目)のスケジュール
・1日(2時間で)2節ずつ進める。(第1章2節という感じ)
・週に1回6時間かけて、勉強したところの振り返り。(理解度チェック)

◯学習方法について
・エラーやわからないところがあれば、その都度メンターに確認すること。
すぐに質問できない場合は、何がわからないかを具体的にしてメモしておいて後日質問する。
・もし、風邪や仕事で勉強できなかった場合は、スケジュールを引き直すこと。明日挽回するという思考はやめる。
・モチベーションを維持するため、できるだけ教室に通うこと。頻繁に質問してメンターとコミュニケーションを取ること。

※普段からGoogleカレンダーなどで、スケジュール管理している人にはその場で、登録してもらうようにしています。カレンダーに登録するかTODOリストに落とし込むなど、慣れている管理手法で対応してもらっています。

メンターとしての進捗確認や理解度チェックは1週間に1度実施しています。
そこで、スケジュールの修正や曖昧な理解だったところを潰すようにしています。

モチベーションを管理する

最初はやる気に満ち溢れていても3ヵ月間も継続するのは、なかなか難しいです。そこで、自分のモチベーションを維持できるようにしていかなくてはいけません。

▼モチベーションを維持する方法
・学習環境に身を置く(プログラミングスクールなど)
・一緒に勉強する人を作る(conpassなどに参加する)
・応援してくれる人を作る(友人や家族、メンターなど)
・勉強を習慣化する(習慣化の方法は後述)

学習環境に身を置く

モチベーションを維持する上で、最も効果的で、最もハードルが高いのが学習環境に身を置くことです。
大卒の方なら、16年間も学校に通って勉強してきた経験があるはずです。
学習環境の中に身を置いて勉強する習慣が身についているんです。
しかし、プログラミングスクールなら数十万円ものお金が必要になります。
この金額をポンと出すのは中々難しいですよね?
本当にプログラミング能力を身につけたいなら、この程度の金額は必要な投資ですが、できるだけお金をかけずに勉強したいとという方は次の方法を試すといいです。

一緒に勉強する人を作る

今、プログラミングを勉強したいという人は増えています。小学校にもプログラミングの授業が追加されるらしいですね。
「プログラマーで集まろう」「一緒に勉強しよう」という集まりは色んなところで開催されています。
おすすめなのは、conpassというIT勉強会プラットフォームを活用することです。僕も何度も参加させてもらいました。
ここでは、現役のプロエンジニアが主催になって勉強会を開催してくれたりしています。
参加費は無料~1,000円程度と低価格で参加することが可能です。
プロのエンジニアと初学者が集まるので、わからないところを教えてもらったり、学習の悩みを共有できたりと有益な時間を過ごせます。

応援してくれる人を作る

特に勉強を始めたばかりだと、友人から飲みに誘われたり、家族に家事を手伝えと言われたり、これまでの生活習慣を変えることに苦労します。
だからこそ、これまで付き合いのあった人に、
「自分はプログラミングを勉強するからしばらく付き合えない」
とあらかじめ伝えておくことが大切なんです。
逆にそういう人から応援してもらえれば、勉強が辛くて挫けそうになった時も勇気をもらえます。

勉強を習慣化する

これが簡単にできれば苦労しませんよねw
ただ、習慣化することでモチベーションが下がっても勉強を続けられるようになります。
仕事でモチベーションが上がらないから休むという人は、ほぼいないですよね。
習慣化する上で大切なのは、トリガー(きっかけ)を作ることです。
例えば、「勉強のやる気が起きなくても教室にはいく」とか、「電車に乗ったらスマホでチュートリアルを開いて、5分間だけでも内容を読む」といった内容です。
そうすると、気分が勉強モードになり自然とやる気が湧いてきます。
ポイントは、今の生活の一部をトリガーに組み込むということです。
電車通勤している人は、平日は必ず電車に乗りますよね。
この習慣に、「電車に乗ったら、チュートリアルを開く」という習慣を付け加えるのです。
スマホで開くだけですから、この行為にモチベーションは必要ありません。
にも関わらず、「開いたから読んでみよう」と次の行動に繋げる高い効果を持っています。
少しの努力でできるので、ぜひ今の生活の一部にトリガーを組み込んでみてください。
大きな効果を実感できると思います。

まとめ

コーチング的アプローチが有効と書きましたが、やってることを書き出してみるとマネジメント的要素が多かったですね。
コーチングとは、質問によって相手を目的の場所に導いていくスキルです。
メンタリングや質問への対応の時には、答えを教えるのではなく、
「何を理解しているか」
「何を理解できていないか」
を質問によって整理してあげています。
そうすることによって、「わからなかったことがわかるようになった!」と感じてもらえて、それが一番モチベーションアップに繋がるのかもしれません。

最後に

プログラミング学習についてお悩みがある方はコメントしくれれば回答します。
相談以外にも何かあればコメントくださいね♪

サポートしていただけると、泣いて喜びます! 嬉しくて仕事をめちゃめちゃ頑張れます。