プログラミング学習中のモチベーション管理について 前編

これは「Happiness Chain Advent Calendar 2024」の25日目の記事です。

私はハピネスチェーンというスクールでプログラミングを学習しています。
ハピネスチェーンでは、競争力のあるモダンなWEBスキルを学ぶことができます。

ハピネスチェーンはこちら happiness-chain.com

この記事は私が日頃、どのようにモチベーションを管理しているのかを、文章化したものです。前半は学習や行動の話でで、後半はマインドの話になっています。 この記事は前編です。

ハピネスチェーンのカリキュラムは非常に充実しており、全てを修得するにはおよそ1000〜2000+時間の学習が求められます。

これだけの時間をただ漠然と取り組んでいては、途中でモチベーションが続かなくなるのも無理はありません。そこで、私自身が日頃どのようにモチベーションを管理しているのか、ここでアウトプットしてみたいと思います。

これは、今の私が過去の自分に教えたいことでもあります。漠然とした不安や迷いの中で学習を続けていた当時の自分に、「どうやってモチベーションを保ち、目標を達成するのか」を伝えられたら、もっと効率的に学べたのではないかと思うのです。

この経験を共有することで、同じように学習の途中で迷いや不安を抱える人に少しでも役立ててもらえたら幸いです。

学習のコストを受け入れる

学習の進捗や理解度には個人差がありますが、たとえ学習が順調に進んだとしても、1000〜2000+時間の積み重ねが必要とされます。この現実をまず受け入れることが、成長の第一歩です。学習に費やす時間が不足していれば、十分な成果を得ることは難しいでしょう。スキルを磨くには、惜しみなく時間と労力を投資する覚悟が必要です。

プログラミングと他の勉強の違いを理解する

大学受験や資格勉強と、プログラミング学習では感覚がかなり異なります。プログラミング学習では、インプット教材に載っている内容すべてを理解したり、覚えたりする必要はありません。理解度が5〜6割でも十分にOKです。

技術はバージョンが変わったり廃れたり、シチュエーションも異なるため、教材通りにそのまま実装することは少ないものです。インプット教材は、自分だけに向けて作られているわけではありません。教材の後半には、初心者にはすぐに理解できないことがよく出てきます。一度しか出てこない情報や、自分のアウトプットに必要のない情報も多いため、すべてを極める必要もありませんし、すべて理解することにこだわる必要もありません。

ただし、インプットをしないとスムーズなアウトプットが難しいので、それなりにインプットも頑張ります。とはいえ、一番大事なのはアウトプットです。アウトプットでは、実際に手を動かして学んでいくことが重要です。

ネットの記事やAIを活用し、いわば「カンニング」しながらでも構いません。課題を解決できる実装をし、自分の力で理解を深めながら取り組んでいけば十分です。

AIを活用するかどうかの議論は尽きませんが、テクノロジーの進化は不可逆的なものであり、時代が後戻りすることはありません。新しい技術が生まれるたびに、早く順応するほうが合理的と言えるでしょう。かつて、漢字の書き方を覚えて、手書きしていた時代から、現在ではデジタル入力が主流になったのも、同様の流れです。

ただし、学習段階においては自分で考え、手を動かすことが重要です。そうすることで本質を理解し、応用力を高めることができます。しかし、AIを賢く使うことで、学習コストや作業負担を大幅に減らすことが可能です。技術を取り入れつつ、必要なスキルをしっかりと身につけることが、これからの時代を生き抜くためのカギとなるでしょう。

計画を立てる

ロードマップが提示されているので、それをもとに自分の学習計画を立てましょう。 たとえば、「3ヶ月後にはここまで到達したい」「この時期までに就職したい」といった目標をざっくり設定します。計画を立てることで、学習に方向性が生まれ、目標に向けたモチベーションも保ちやすくなります。

ただし、計画はあくまで目安です。進捗状況や学習内容に応じて、柔軟に軌道修正を行うことも大切です。変化に対応しながら、無理なく目標達成を目指しましょう。

記録をつける

ロードマップが長いと、途中で宙ぶらりんになってしまいがちです。迷わないように、しっかりと学習記録をつけましょう。

まず、日報を毎日出す習慣をつけます。朝に今日の課題リストを作成し、学習が終わったらそのリストを振り返って日報にまとめます。「良かったこと」「良くなかったこと」「学んだこと」「次に繋がる改善点」などを確認しながら書くと、成長を実感しやすくなります。

また、月単位で何をやったのかを記録するのも効果的です。NotionやExcelなどを使い、1ヶ月分を1行にまとめ、ひと目で見れるようにします。疲れたときに振り返ると、「こんなに成し遂げた」と自信が湧き、不安が和らぐでしょう。

さらに、カリキュラムの各課題にどれくらい時間を使ったかも記録しておくと、学習の効率化や振り返りに役立ちます。

日々の記録が、成長の証となり、次のステップへ進む力になります

完璧主義を捨てる

完璧主義の人は、「完璧にやれば物事はうまくいくし、完璧でなければ失敗する」と無意識に思い込んでいることが多いです。しかし実際には、完璧にやってもうまくいかないこともありますし、完璧でなくても回っているものがたくさんあります。例えば、きれいではないコードでもバグらずに動いていることもあります。

勉強中も、使わない技術や知識は忘れるのが自然なこと。気にする必要はありません。

プログラミングで完璧主義に陥ると、例えばHTMLのタグを全部覚えなければ気が済まなくなったり、GitやLinuxのコマンドを完全にマスターしようとして、肝心の膨大な課題をこなせなくなってしまいます。どうせ使わない知識は忘れますし、本当に使うものは何度も触れるうちに自然と身につきます。

使う技術を必要なときに覚え、後から改良すればOKです。

やる範囲を絞る

自信がないのか、欲張りなのか、「これもやらなきゃ」「あれもやらなきゃ」と思ってしまうことがあります。

例えば、基本情報、応用情報、AWSなどの資格が欲しい。さらにAI、IoT、ブロックチェーンも学びたい。自分でゲームやVRコンテンツを生産したい。フロントエンドエンジニアを目指すならデザインもやらなきゃ…と、どんどん学びたい分野が増えていきます。

しかし、範囲を広げれば広げるほど、学習に必要な時間とエネルギーは肥大化します。

HCの卒業生の先輩たちも、HCのロードマップにしっかり取り組むことで十分に力をつけて、就職できています。また、Web業界では、資格よりもポートフォリオやモダンな技術が重視される傾向があります。そのため、エネルギーを分散させるよりも、HCのロードマップに全力を注ぐほうが効果的だと思います。

一方で、カリキュラムにないツールや技術でも、重要だと思ったものは積極的に学ぶべきだとも感じています。自分も必要性を感じて、カリキュラムにないTailwind CSSを学びました。

広げすぎず、効果的に範囲を絞って取り組むことが、成長への近道だと思います。

ツールの力を借りる

学習や作業を効率化するために、便利なツールを積極的に活用しましょう。

例えば、Notionを使って課題ごとのデータベースを作り、エラー解決方法やコードのコピーを記録しておくと便利です。過去の解決方法がひと目でわかり、同じ問題に直面したときにすぐに参考にできます。計画や学習の進捗もNotionにまとめておくと、一貫した管理ができて効果的です。

また、Cursorのようなコードサジェスト機能を活用することで、細かい構文や記法をすべて自力で覚える必要が減り、効率的にコーディングが進みます。

こうした便利なツールは積極的に取り入れ、学習の負担を減らし、より多くのことに集中できるようにしましょう。

一日あたりの学習の下限値と上限値を作っておく

プログラミング習得はマラソンのようなものです。毎日全力で取り組むよりも、8割の力で淡々と継続していく方が成功しやすいでしょう。そのため、一日の学習時間に下限値と上限値を設けるのも効果的です。

私の場合、最初の3時間は頭がフレッシュなので「ゴールデンタイム」として、最低でも3時間は勉強するようにしています。4〜5時間目になると少し疲れは出てきますが、それでも集中できるため、5時間を目安としました。6時間以上続けるとイライラや胃のムカムカ、甘いものや酒が増えるなど、ストレス反応が強くなるため、5時間できれば十分と考えています。

仮に平日5時間、休日0時間でも、1ヶ月に20日稼働すると月に100時間、年間で1200時間積み上げられます。これだけの時間を確保できれば、十分に勝算があるでしょう。

私の場合は約5時間でしたが、人によって適切な時間は違うので、ぜひ自分なりの下限値と上限値を設定してみてください。

仲間から影響を受ける

他の人が書いた日報やブログを読むと、技術の勉強にもなるし、モチベーションの維持にも役立ちます。

また、イベントに参加したり、現役エンジニアに会ったりすることで、良い影響を受けることができます。強力なスキルを持つエンジニアでも、駆け出しの時期があり、特別な存在ではないことがわかります。駆け出し時の失敗談や今の仕事の話などを教えてくれると、「みんな普通の人間で、努力すれば、ここまで成長できる」と感じられるのです。

周りの人ができることが「当たり前」に思えてくると、自分も自然と「これくらいできて当たり前」と思えるようになり、良い意味での勘違いが成長につながります。

ネット上で情報はゼロコストで手に入ります。だからこそ、リアルでしか伝わらない肌感や熱量があると感じます。

簡単な仕事をしてみる

初めて仕事を受ける際、営業活動や仕事を振ってくれる人とのつながりが必要ですが、たとえ簡単なLP制作で3万円を稼ぐだけでも、モチベーションが高まり、自信がつくものです。

簡単な仕事であっても、実際に報酬を得ることで、「自分のスキルが対価に繋がる」という感覚が芽生えます。プログラミングの学習は一人での作業が多く、どうしても成果が見えにくいこともありますが、こうして仕事として完了させることで、自分のスキルの価値を具体的に感じられるようになります。

特に初心者のうちは、難しい案件をこなすよりも、こうした手の届く範囲の仕事をこなしていくことで、徐々に経験と実績を積むことが大切です。小さな成功体験が積み重なれば、より難しい仕事や高額案件にもチャレンジできる自信がついていくでしょう。

仕事の難易度に関係なく、自分のスキルを活かして収入を得る経験は、次のステップへの大きなモチベーションになります。まずは、簡単な案件から少しずつ挑戦し、少しずつ自分の市場価値を高めていきましょう。

困難を分割する

複雑に絡み合った問題を解決するには、それを簡単な要素に分割して、一つひとつ対処する力が必要です。このスキルはプログラミングに限らず、日常生活のあらゆる場面で役立ちます。

具体的な手順

  1. 問題を俯瞰して把握する

    複雑な課題に直面したとき、まず全体像を理解することが重要です。一度立ち止まり、何が問題になっているのか整理します。

  2. 課題を簡単な要素に分割する

    複数の小さな問題に分解し、それぞれに注目することで、解決の道筋が見えてきます。たとえば、メモ帳やノートに見出しとして問題の項目を書き出すのがおすすめです。

  3. 解決策を言語化する

    各課題に対する解決策を日本語で具体的に書き出します。頭の中だけで考えるのではなく、視覚化することで混乱を防ぎ、優先順位が明確になります。

  4. プログラミングで実装する

    解決策が明確になったら、それを一つずつコードに落とし込んでいきます。この段階では、分割した要素ごとに集中して作業できます。

この力が生きる場面

  • プログラミング

    エラーの原因が複数あるとき、一度に解決しようとすると混乱しがちです。それぞれを切り分けて対応することで、効率的かつ確実に修正できます。

  • 仕事やプロジェクトの管理

    複数のタスクが絡み合っているときも、タスクを分解して個別に対応することで、スムーズに進行できます。

  • 日常生活の問題解決

    たとえば引越しの準備、旅行の計画、家計管理なども、要素ごとに分割して考えると、ストレスなく進められます。

「複雑な問題を分割する」力は、問題解決能力を飛躍的に向上させます。俯瞰する力、分解する力、そしてそれを実行に移す力を身につけることで、どんな課題にも柔軟に対応できるようになります。このスキルを磨き、プログラミングだけでなく、生活全般に活かしていきましょう。

やる気が出ないとき

私の場合、特に月曜日の朝がめちゃくちゃだるいです。土日で集中のスイッチを切ってしっかり休むと、月曜の朝にスイッチを入れるのにコストがかかるからです。こんなとき、私は簡単な作業から始めるようにしています。例えば、エディタを開いてプロジェクトを読み込み、Dockerを立ててサーバーを起動する。あるいは、Udemyの教材を開いて閲覧準備をするなど、すぐにできる準備作業を始めます。これだけでも、作業を進めるうちに自然と集中力のスイッチが入ってきます。

ここで大切なのは、やる気に期待しないことです。やる気がなくても手を動かせば作業は進みます。そして、不思議なことに、やり始めているうちにスイッチが入って、やる気が出てくるものです。それでもどうしても疲れてだるくて動けないときは、無理をせず、思い切って休むことも選択肢の一つです。心身を回復させたら、また次の日から頑張ればいいのです。

「やる気がないからやらない」ではなく、「やる気がなくてもとりあえず手を動かしてみる」。この考え方で、少しずつ前に進むことができます。自分をいたわりながら、できる範囲で進んでいきましょう。

脳の疲れに対処する

プログラミングを学習していると、脳が疲れるのは自然なことです。特に、情報が溢れる現代では、限界まで学習を続けることで、強い疲労感を感じることがあります。この疲労を効率的に回復するためには、デフォルトモードネットワークの働きを活かすことが重要です。

デフォルトモードネットワークは、以下のような場面で活性化します:

  • 寝ているとき
  • ぼんやりしているとき

このとき、脳は記憶を整理し、疲労を回復しています。そのため、睡眠を削るのは避けるべきですし、何もしない「ぼーっとする時間」も無駄ではありません。こうした休息の時間を確保することで、脳がリフレッシュされ、次の学習に向けてより良い準備が整います。

プログラミングと相性がいい趣味

プログラミングは非常に集中力を必要とする活動です。そのため、趣味を選ぶ際には「集中系」と「リラックス系」を意識して、自分に合ったバランスを見つけることが大切です。特に以下のマトリックスで趣味を整理すると、相性の良いものが見えてきます。

集中系 リラックス系
インドア ゲーム、読書 音楽鑑賞
アウトドア アウトドアスポーツ 散歩

疲れが溜まりやすい趣味

「ゲーム」や「読書」などのインドア集中系の趣味は、プログラミングと同じく脳を酷使するため、かえって疲労が溜まることがあります。

疲れを取るための趣味

一方で、リラックス系の趣味や、アウトドア系の趣味は、脳をリフレッシュさせる効果が期待できます。特にアウトドア系の活動は、自然の中で体を動かすことで心身ともにリラックスできる点が魅力です。

健康的な生活習慣の重要性

夜遅くまでパソコンに触れていると、私たちの体と心に少なからぬ影響を与えます。ブルーライトの影響で眠りが浅くなったり、長時間の座り作業による運動不足で体重が増えやすくなったりします。また、慢性的な疲労やストレスが蓄積することで、メンタルヘルスのリスクも高まります。

これを防ぐためには、健康的な生活習慣バランスの取れた食事を意識することが大切です。特に、“体と心を整える”ためには次の習慣が効果的です。

  • 十分な睡眠をとること: 睡眠は、記憶を定着させたり、ストレスや疲労を回復する上で最も重要です。規則正しい睡眠時間を確保することで、体と心の調子を整え、日々のパフォーマンスを最大限に引き出せます。
  • お風呂に浸かること: 温かいお湯に浸かることで血行が良くなり、体の疲れが取れるだけでなく、リラックス効果によってストレスの解消にもつながります。
  • 朝の散歩と朝日を浴びること: 朝起きたら軽い散歩をし、太陽の光を浴びることで体内時計がリセットされ、睡眠の質が向上します。また、新鮮な空気を吸うことで気持ちもリフレッシュします。

さらに、適度な運動や栄養豊富な食事を日々の生活に取り入れることで、疲れにくい体を作ることができます。また、栄養豊富な食事は脳の働きをサポートし、学習や作業の効率を高めてくれます。これらの習慣を続けることで、ストレスを軽減し、メンタルの安定にもつながります。

健康を意識することは、プログラミングや学びの質を向上させるための土台です。十分な睡眠で体と心を整え、お風呂に浸かることで癒しを得て、朝の散歩で気分をリセットし、水を摂ることで活力を保つ。このような積み重ねが、より良いパフォーマンスを引き出し、日々の課題にも前向きに取り組む力を育ててくれるでしょう。

スマホSNSYouTubeとの付き合い方

現代社会では、スマホSNSYouTubeなどのフリーコンテンツが溢れています。しかし、「ただより高いものはない」という言葉があるように、これらのコンテンツと適切な距離を取ることが重要です。

SNS(例えばX)では、極論や人の心をざわつかせるような投稿が注目されやすい仕組みがあります。無計画にダラダラと見続けると、情報の洪水に飲まれ、有害な影響を受けることがあります。YouTubeも同様に、フリーのエンタメコンテンツに浸りすぎると、時間や集中力、そしてひいては人生そのものを搾取されるリスクがあります。

一方で、これらをポジティブに活用する方法もあります。たとえば、役に立つ投稿をブックマークやスクリーンショットで保存し、後から必要に応じて見返すといった工夫です。計画的に、目的を持って使えば、これらのツールも有益なものに変わります。

「あなたがフリーコンテンツを消費しているとき、コンテンツクリエイターもあなたを消費しているのだ」

モチベーションの「罠」

学習や仕事で、思うように成果が出ないと感じたり、疲れによってパフォーマンスが落ちているとき、つい「自分の努力が足りていない」と考えがちです。そして、その焦りから、もっと頑張ろうと無理をしてしまうことがあります。

たとえば、次のような行動をとることがありませんか?

  • 睡眠時間を削る
  • カフェイン摂取量を増やす
  • 休息日を設けず、学習や作業を続ける
  • 夜遅くまで、集中モードでいる

一時的にはこれで乗り切れるかもしれませんが、こうした無理が積み重なると、慢性的なパフォーマンス低下を招くリスクが高まります。体力や集中力は有限です。限界を超えてしまえば、心身ともに疲弊してしまい、むしろ成果を出せなくなります。

疲労しているときは意外と無自覚になりがちです。そのため、「自分が疲れているかもしれない」と意識的に振り返ることが必要です。

休息は怠けではなく、次のパフォーマンスを最大化するための戦略的な行動です。しっかりと体を休め、リフレッシュした状態で取り組むことで、効率や効果が格段に上がります。

モチベーションに頼りすぎることの危険性を知り、無理をするのではなく、自分のコンディションを整えることを優先しましょう。それが長期的な成果を得るための最善の方法です。

アクティブに自分を労る

プログラミングの学習や仕事は、どうしても運動不足になりがちで、精神的な負担も大きくなりやすい職業です。そのため、自分の心身をケアする習慣を意識して取り入れることが大切です。

ただ受け身で、楽な選択をしてしまうこともあるでしょう。例えば、お酒を飲んで気を紛らわせたり、SNSをなんとなく眺めて過ごすといった行動です。しかし、これらは短期的には楽でも、長期的な成果や健康にはつながりにくいものです。

そこで、少しだけ手間はかかるけれど、健康的で長期的な成果を得られる行動を意識して取り入れてみましょう。具体的には次のようなことが挙げられます:

  • 湯船に浸かって体を温め、リラックスする時間を作る。
  • ストレッチや軽い運動をして、凝り固まった体をほぐす。
  • 自然の中を散歩したり、植物に触れる時間を設けてリフレッシュする。

これらの行動は、最初は少し手間に感じるかもしれませんが、心身の健康を整え、モチベーションを持続させる大きな助けになります。

プログラミングキャリアはマラソンのようなものです。短期的な快適さに頼るのではなく、少し手間がかかっても健康的で長期的に効果を発揮する行動を大事にすることで、より充実した学習や仕事を続けることができます。

コラム: 劣化する社会を前向きに捉える

少子化、人材不足、学生や社会人の不勉強、政治家の裏金問題、闇バイト、国際競争力の低下、地域の衰退、インフレ──。挙げ出したらきりがないほど、日本社会には今、多くの課題が山積しています。「劣化」とも言える現状に、多くの人が不安を抱き、時には絶望のような感情に襲われることもあるでしょう。しかし、歴史を振り返ると、こうした混乱の中からこそ、強い人間が生まれてきた事実があります。

歴史上の英雄たちは、いつも乱世に生まれました。混迷の時代には、人々が希望を見出しにくく、未来が不透明なほど、信念を持ち行動する人が光を放ち、活躍する機会が増えるのです。また、格差が広がる時代には、努力をする者がその結果を実感しやすいとも言えます。他の人が挑戦を諦める時だからこそ、自分がしっかりと努力し続ければ、巡ってくるチャンスや報酬も多くなるのです。

もちろん、社会の全体像を考えれば絶望や嘆きが生まれるのも自然です。しかし、嘆いても自分の人生が好転するわけではありません。それよりも、自分の半径5メートルの範囲をしっかりと守り抜くことが、自分と身近な人々の幸せに直結します。小さな範囲でも自分が正しく行動し、誠実でいれば、その積み重ねが人生において大きな結果を生むことにつながるのです。

だからこそ、私たちはこの時代を前向きに捉えるべきです。乱世であるからこそ、自らの力を試し、報われやすい機会があると考え、一歩ずつ進んでいくことが大切です。

後編に続く

後編はマインドの話です shu915.hatenablog.com

ハピネスチェーンはこちら happiness-chain.com