こんにちは、かみざとです
今回は「プログラミング学習のモチベーション低下を防ぐ7つの方法」についてお話をしていきます
トピックはこちら
- 【プログラミングはモチベーションが下がりやすい】
- 【モチベーションを下げない方法】
- 【根性論だけでは結果を出せない】
※YouTube動画は下記リンクからご視聴ください
プログラミングはモチベーションが下がりやすい
プログラミングは挫折率がかなり高いスキルの一つでもあります
実際ネットで調べてみると、約80%~90%の人が挫折してしまうという状況なんですよ
ただ、こんなに挫折率が高いというのは、才能の問題や適性の問題ではなく、単純に「モチベーションを持ち続けることができない」ところにあると感じます
学習を始めて1週間、或いは1ヶ月も経つとコードを書かなくなって、アウトプットもしなくなって「プログラミングはもういいやー」みたいな感じで諦めて違う方向に進んでいくパターンですね
別にプログラミングを辞める事が本人にとって最善の選択だったらいいですよ。他にやりたいことがあるならそれをやればいいと思います
ですが、本当に色々なリサーチをして、デザインや動画編集やライターなど色々な道を模索した結果「プログラミングが良い」と判断したのに、モチベーションが維持できなくて挫折してしまうのは勿体ないです
ということで「どうしたらモチベーションを維持することができるのか?」ということについて、僕の経験談を交えて話していきます
今プログラミング学習が辛いとか、イマイチ手が動かないと考えている人は、これから話す内容をしっかり参考にしてやると、モチベーションも維持出来て、アラサーからプログラマーに転職することも出来ますので、読んでみてください
モチベーションを維持する方法というのは、プログラミング学習だけではなく、色んな場面で応用できることなので、今後の人生も効率良く結果を残すことができるようになりますよ
まず、プログラミング初心者は最初の壁として「環境構築」というのがあるんですが、これが結構難しいです
現役のプログラマーでも、1時間、2時間費やしたり、下手したら1日中悩んだりするぐらいのレベルです
なので環境構築の知識が無い初心者の時点で、一番最初にやらなきゃいけないという難しさにぶち当たって挫折する人も多いです
あとはプログラムは「一文字でも違う」「半角スペースではなく全角スペースを入れてしまう」とか、一箇所でも間違えるとエラーが出て上手く動きません
そして、エラーに関しては読み方がわからないと、何を書いているかわかんないので、どう修正していいのか推測がつかず、初心者の段階で躓いてしまいモチベーションが続かないという事になります
では、モチベーションを高く維持するために、僕が過去にどういう対策をしてきたのか。それについて次のトピックで詳しくシェアしていきます
モチベーションを下げない方法
「プログラミング学習のモチベーション低下を防ぐ7つの方法」は下記のとおり
- 階段飛ばしで進まない
- 他人への関心、無関心を切り替える
- 習慣化する
- 人生設計を明確にする
- 小さな成功を積み重ねる
- タイムアタックをする
- 仲間を見つける
これらの要素に関して1つずつ説明していきます
1.階段飛ばしで進まない
まず「階段飛ばしで進まない」ということ。これは初心者がやりがちな行動です
初心者の頃はプログラミングに関する知識や、言語に関する理解も浅いので、エラーを解決するという経験が圧倒的に少ないにも関わらず、難しいことにチャレンジしてしまいます
もちろん簡単に成功するために「効率を求める」という行為は大事ですが、効率を求めるからこそ基礎の部分をしっかり学ぶんですよ
特に言語の基礎を学んで、ゴリゴリにロジックを書くという経験は絶対にしたほうがいいです
なぜなら、言語の基礎文法を使ってロジックを書くと、エラーを解決する経験が積めます。プログラマーにおいて最も重要な能力はエラーを解決する「問題解決能力」です
エラーが出た時に、まずは内容をしっかり読んで理解できる事。原因となる部分を推測して、エラーを元にGoogleで検索すること。ロジックの書き方を改善すること。これらを経験することでプログラマーとしての基礎的な力が身に付きます
その過程を飛ばしていきなりフレームワークを使いはじめると、
「基礎的な文法が違っていたのか」
「フレームワークの使い方が違っていたのか」
「データベースの部分に不具合があるのか」
というエラーの切り分けができず、結局無駄な時間を使ってしまいます
だから段飛ばしで進もうとすると、複雑な要素が絡んできた途端に難易度が跳ね上がり、エラー解決ができなくて「何が解らないのか解らない」という状態になってしまんです
とはいえ、やはり基礎の部分だけやっていても飽きますよね
そういう場合は言語の基礎を学びつつ、フレームワークの基礎と応用を学んだりするのがいいです
僕も初心者の頃、基礎を学んでいたら「これはいつ使うんだろう?」と疑問が浮かび、「これを覚えても無駄になるんじゃないか?」といちいち不安になってました
だからといって応用の部分だけをやっても「何を説明しているのかさっぱりわかならい」という感じ
だからこそ、基礎も応用も両方バランス良くやることが大切なんです
2.他人への関心、無関心を切り替える
最近Twitter等を見てると「他人と自分を比べないことが大事」という文言を良く見かけるんですが「ホントかよ」と思いますね
例えばプログラマーに転職したい人がいて、ライバルも何も見ないで、ひたすら自分の世界に閉じこもってる人が本当に転職うまくいくんでしょうか?
まずライバルを見ないと自分が勝ち抜くための戦略が考えられないですよね
効率よく物事を進めていくためには、絶対に競合調査が必要になってきます。このような考え方はビジネスだけではなく、転職活動や人生設計に関しても同じです
だからこそ「他人と比べないことが大切だ」という概念は本当に非効率なのでやめたほうがいいです
例えば、自分と同じようにエンジニアへの転職を考えている人がどういうアプリを作っているのか観察して、他の人がTwitterのクローンアプリを作っていたら、自分は違う路線で行ってみるとか
その方がいい差別化になって面接官の頭にも残りやすいですよね
このように、競合を見るからこそ戦略を立てられるんですよ、だからこそ「人と比べる」ということが大切なんです
他人と自分を比べると「自信を喪失してしまう」という人がよくいるんですが、あれはかなりズレています
大事なのは人と比べて落ち込む事ではなく、分析をすること
他人と比べて自分と違うところはなんだろう?自分が勝てる部分はなんだろう?
そうやって試行錯誤して成長していくんですよ
で、それとは逆に、実際に行動をおこす時は「自分の世界に閉じこもって突き進む」という切り替えが重要になってきます
この切り替えが出来る人はモチベーションを保ちながら結果を残すことができるんですよね
もちろん簡単なことじゃないけど、でもこれができないとどうしようもない
他人と自分を比べるときに大切なのは、自分の弱点ばかりに焦点を当てないことです
大切なのはただひたすら客観的に自分の強みと弱みの両方を把握すること。日本人は謙虚な人が多いのか何なのか知りませんが、自分の弱みにしか焦点を向けない人が多すぎるんですよ
そんな弱気な人が転職活動で成功するかと考えたら、絶対無理じゃないですか
僕が採用する側だったら弱気な人は絶対取らないですよ、会社に来ても多分役に立たないのが目に見えてるので
そういう意味では、「自分の強みに焦点を当て、それを活かして転職活動を有利に進めよう」と前向きな考え方ができる人の方が圧倒的に上手くいきます
3.習慣化する
自分が今やるべきことを習慣化出来ない人が多いのは不思議なんですが、プログラミングやるなら毎日2、3行コードを書くだけでもいいんですよね
別に大げさなことを毎日続けなきゃいけないというわけではありません
例えば毎日技術書を1ページだけ読んでみるとか、必ず1行はロジックを書いてみるとか、そういう簡単なところからでいいんです
むしろ簡単なことすら毎日続けられない人はプログラマーになるのは諦めた方がいいかなと
プログラマーというのは、これから先自分自身が転職してからも、勉強はずっと継続しないといけません
ということは、そもそも継続力がないとプログラマーには向いてないという事です
逆に言えば、プログラマーになりたい人は習慣化をしっかり意識して学習を進めていけばOKです
僕が初心者の頃にどういう習慣化をしていたかというと
「ちょっと早く起きて、出勤前に1時間勉強する」
「お昼休憩に1時間勉強する」
「仕事から帰ってきたら2時間勉強する」
という事を毎日のルーティンにしていました
この「時間」を絶対に守って、同じ時間に同じことをやっていましたね
こういう習慣を毎日やるようになると本当にコードを書くのもエラー文を読むのも抵抗がなくなるんですよね
「とりあえずやってみよう」という精神状態になるから、プログラミングという行動が日常生活の一部になって、意識しなくてもスキルが上がっていきます
歯磨きしたり、お風呂に入ったりするのと同じようコードを書くという状態が理想ですね
4.人生設計を明確にする
目先のことしか見えない人は、目先の目標すら達成できません
遠い場所まで道筋が見えてるから通過点を簡単にクリアできるんですよ
人生はマラソンと同じです。1キロ先まで走ることしか考えていない人と、10km、20km、100km先を見据えて走ってる人では、走ってる時の意識が全然違いますよね
実際、先の先まで人生設計をしっかり考えている人の方が多少の苦難をものともしないため、モチベーションも維持しやすいわけです
5.小さな成功を積み重ねる
人間は成功体験をすると頭の中で快楽物質の「ドーパミン」が分泌されますが、そうするとドーパミンが分泌される前の行動が「強化」されます
それが「強化学習」というもの
要は、行動することでドーパミンが得られるようになると、次も「ドーパミンを得られるように行動しよう」という人間の本能が働くわけです
これが上手くいけば「プログラミングは楽しいから、もっともっと頑張ってみよう!」という様にモチベーションが維持しやすいんですよ
それとは逆に、いきなり難しいことをやりすぎて毎日失敗の連続になってしまったら、成功体験ができないのでモチベーションもどんどん下がって最終的に辞めてしまうことになります
なので、階段を1段1段上るように挑戦して、簡単なところから成功体験を積み重ねていきましょう
自己肯定感を保つためにも成功体験は絶対に必要になりますし、比較的簡単に成功しやすい小さなステップを踏んでいく事で、自分自身のモチベーションも高く保ちながらプログラミング学習を進めることができます
6.タイムアタックをする
タイムアタックの何が良いかというと、制限時間を設ける事で、集中して「やらなきゃいけない」という状況を作れるということです
その中で自分がやると決めたものが多少難しくても、この時間内だけは一生懸命頑張って、課題を達成できるよう色々工夫してみよう!とある種の諦めが生まれます
もし制限時間を設けないで、この到達レベルに達したら終わろう。という感じで始めると、難しすぎる課題をやった時に「出来ない出来ない」という焦りばかりが積み重なり、諦めてしまいます
なので、達成目標を立てるのも大事なんですが、それと同じくらい「制限時間を設けて、その中でやってみる」ということも大事です
例えばゲームでも、制限時間のある「スプラトゥーン」とか、「時間単位」で多くのエリアを塗りつぶしたら勝ち!という具合に時間が制限されているから楽しいわけじゃないですか
人間というのは制限時間を設けられると丁度良い緊張感を保つことができて、それがゲーム性に繋がって楽しくなるんです
僕も最近は「ハッカソン」をよく企画してますが、緊張感とドキドキ感があって楽しくコードを書くことができます
「何かしらのアプリを30分で1つの機能を実装する」でもいいし「30分でエラーを解決する」でも良いと思います。とにかくタイムアタックはプログラミング学習においても有効なので是非やってみてください
7.仲間を見つける
「仲間を見つける」というのは、適当にそこら辺にいるモブキャラを見つければいいということではないです
自分自身が目指したい方向があって、その方向と「同じ方向を目指しているような人」を見つけることが重要
なぜかというと、いつでも相談できる仲間が居れば、自分が色々抱えている悩みや不安に共感してくれたり、「こういうふうに解決したらいいよ」というアドバイスをくれたりするからです
僕も3年前は、プログラミングと情報発信に関して右も左もわからない「ゼロの状態」から始めました
その時点では、会社や今までの友人関係の中にも詳しい人は全然いなかったんです。なので、どうやって情報を集めていいのかわからなかったし、自分がこれからどうアクションをすればいいのかも分かりませんでした
でも色々とネットで情報を調べてTwitterとか、オンラインサロンで色々な仲間に出会うことができたんです
そのおかげでどれだけ心が救われたことか
孤独感を抑え、一つの道に向かって楽しく進むことができるのは、やはり同じ方向を向いている仲間を見つけることができたからなんですよね、だから月商200万を超えるようになった今でも僕は彼らに感謝しているわけです
しかも、そういう仲間が成長する過程を見ていると自分にとっても凄く刺激になるじゃないですか
「アイツがこんなアプリを開発できるようになったなら、同じ時期に始めた俺もできるんじゃないか」とか「また負けてしまったら悔しいから、俺も頑張る」みたいな感じで
それに、似たような目標を持っているからこそ、自分にとって有益な情報を仲間が持ってたりするんです
だから、自分独りで調べて試行錯誤するよりも遥かに効率良く有益な情報を集めることができる
自分が3か月かけてやっと到達できたレベルが、仲間と一緒になって情報収集しながらやればわずか1か月で到達できたり
こんな効率いいことないじゃないですか?1人で戦ってるのがマジで馬鹿馬鹿しくなりますよ
プログラミング学習は情報戦なので、どれだけ良い情報をたくさん集められるか?が鍵になってきます
転職活動に関しても、学習に関しても、情報によって効率が圧倒的に変わってくるので、しっかりとそこらへんは意識した方がいいですよ
その為にも同じ方向を向いた仲間を大切にして、自分の人間関係の輪を広げていくといいですね
僕もこの3年間はプログラミングと情報発信に力を入れてきましたが、その結果、独立して沖縄の実家でのんびり生活をすることができるようになりました
というわけで、ぜひ「モチベーションを下げないための方法」を参考に行動してみてください
- 階段飛ばしで進まない
- 他人への関心、無関心を切り替える
- 習慣化する
- 人生設計を明確にする
- 小さな成功を積み重ねる
- タイムアタックをする
- 仲間を見つける
根性論だけでは結果を出せない
どの世界でも「努力をしろ」とか「根性で頑張れ」みたいなそういうことを言う人が絶対いるんですけど、根性だけで結果を出せたらそんな楽なことはないですよね
だいたいの人が最低限の努力はできるんですが、成果を出せる人と出せない人の違いが現れるのは、きちんとしたロジックがあるか?という点です
きちんとした戦略があって、その通りに物事を進められるから成果が出るんです。更に言えば「根性」があるというのは、もう当たり前の話なんですよ
何かしらの成果を出すためには根性が絶対必要ですからね、ただ、根性あればどうにかなるというわけでもない、わかるかな?
というわけで、モチベーションに関してもきちんとロジックを組み、自分が意識しなくても維持できる仕組みを構築しましょう
あらゆる物事を自動化して「仕組みを作る」のがプログラマーの仕事です
そのプログラマーが自分のモチベーションを維持する仕組みを作れないのはちょっと残念なので、色々と工夫して仕組みを作ってみてください