なぜ、この記事を書こうと思ったのか
普段、エンジニア向けの講師業・メンター業をしている際に、気づいたことを記述しておこう思います。どなたかのお役に立つ内容であれば幸いです。
私が講師として、メンターとして見てきた範囲で、なかなか伸び悩んでいる方の傾向としましては、用語や言葉の理解に終始してしまう方が多く、なかなかアウトプット(プログラムを実際に記述して実行してみる、または完成コードを実際に実行してみる、改造してみる…等)に取り組もうとしない方々が一定数いらっしゃいました。
また、アウトプットに取り組んでいる方でも、闇雲に調べたり、調べたものでエラーが発生してさらにハマってしまい、そもそも自身が何に取り組んでいたのか迷子になってらっしゃる方もしばしばお目にかかりました。
そこで、毎回個別にお伝えをしていることを、あらかじめ言語化しておこうと、この記事を執筆するものです。
スキル(プログラミング等)を習得する時に意識すること
日々の勉強や自己研鑽を効果的に進めるためには、ただ漫然と知識を追いかけるだけでは不十分で、かつ、非効率です。ここでは、効率よく自己学習を行うために、次の3ステップをまず念頭においてください。
- 「考える」
- 「調べる」
- 「自分の中に落とし込む」
3ステップを具体的に解説します。
1. 「考える」―問題や疑問に向き合う
自己学習の第一歩は、目の前の問題や課題について「自分の頭で考える」ことです。何がわかっていて、何がわからないのかを明確にしましょう。この段階では、必ずしも答えが出なくても構いません。まずは自分が問題に対してどのような視点を持っているかを整理することが重要です。
例えば、「オブジェクト指向が難しい」と感じたら、具体的にどの部分が難しいのか(クラスやインスタンスの概念、継承やポリモーフィズムなど)を考えてみます。
2. 「調べる」―自力で解決できない部分を明らかにする
次に、自分で考えても解決できなかった部分を「調べる」段階です。この段階では、インターネット、書籍、オンラインチュートリアル、専門家の意見など多様なリソースを活用して情報収集します。ただし、調べる際にも目的意識を持つことが大切です。自分の疑問点を明確にし、それを解決する情報に集中して収集しましょう。
例えば、「ポリモーフィズムがわからない」と感じたら、「オブジェクト指向 ポリモーフィズム 具体例」など具体的なキーワードで検索し、有効な解説やサンプルコードを探しましょう。
3. 「自分の中に落とし込む」―学習を確かなものにする
最後は、調べて得た情報や知識を「自分の中に落とし込む」段階です。これは、単に情報を収集するだけでなく、理解し、自分なりの言葉で説明できる状態を目指す(あくまで”目指す”です。たまに”説明できる状態”を目指しすぎて時間をかけてしまう方もいらっしゃるので注意です。)ことを意味します。具体的には、自分で他人に説明するようにノートに書いたり、実際にコードを書いて試したりすることが効果的です。
例えば、ポリモーフィズムを利用したコードを書いてみて、その動きを確認し、自分の言葉で説明をまとめることで理解が深まります。
なぜこの3ステップが重要か?
この「考える」「調べる」「自分の中に落とし込む」のサイクルを繰り返すことで、知識が着実に定着し、同時に問題解決能力や思考力が鍛えられます。
自己学習においては、ただ知識を覚えるのではなく、「なぜその仕組みが必要なのか」「どうすれば効率よく活用できるのか」を常に意識しながら取り組むことが重要です。この方法を継続的に実践することで、自分で学ぶ力が身につき、自己研鑽が自然と進んでいきます。
ぜひ、この3ステップを日々の学習に取り入れて、自分らしい成長を実現しましょう。
3ステップを実施するにあたっての注意点
これら3ステップに則って実施する際に、それぞれ注意点があります。
「考える」を実施する際の注意点
いきなり答えを見ない
いきなり答えや正解を眺めてしまうのではなく、まずは制限時間(例:15分)を決めて自分で解法を考えましょう。制限時間を設けず、際限なく考えるのはNGです。「考える」は思っている以上に脳を使うため、長時間考えていると疲労が溜まり非効率になります。また、単純にレベルが不足している状態では、いくら時間をかけたところで解法が降ってくることはありません。
「わからない」を放置しない
わからなかった点をメモに残します。これは後の「調べる」に使用する為です。メモは自身で見返してわかる程度にします。メモを残すこと自体に、あまり時間を使わないようにするのがコツです。
「調べる」を実施する際の注意点
情報源を鵜呑みにしない
検索結果で出てきた内容の最終更新日付を確認します。プログラミング言語や技術内容にもよりますが、おおよそ3年以上経過している記事は、今では使用できない可能性が高いです。
また、AIから得られた回答も、ハルシネーションや誤った応答をすることがあることを念頭におきます。AIが回答のソースを提示している場合は、リンク先も参照しておくことをオススメします。
情報源通りにしたからと言って、必ずしも解決するとは限らない、ということを常に念頭に置いておきましょう。
複数ソースで裏付けを取る
公式ドキュメント → (あれば)専門書 → 信頼できるブログや情報サイト(Qiita,Zenn等) → QAサイト(StackOverflow等)の優先順位で確認します。理解できたらメモに要約を書き出しておきます。
「落とし込む」を実施する際の注意点
インプットだけで終わらせない、アウトプットで理解を検証する
学んだ概念を使って小さなサンプルアプリを作ります。小さなサンプルアプリを書けない状態なのであれば、公式サイトやブログなどに掲載されているサンプルコードを写経してみます。AIに提示してもらうのも良いです。コードをそのまま打っても一見意味がないように思われますが、そもそもプログラミングをしている環境(PC操作やIDEの操作、コンパイル・ビルド・実行など)に慣れていない可能性もあり、「慣れる」という意味では意味があります。「慣れる」ことも「落とし込む」うちの一つ、と考えます。もちろん写経ばかりしていてもレベルアップしない為、ある程度の本数写経したら、小さなサンプルアプリを作る作業に戻ります。何を作ったら良いかわからない場合は、AIや講師・メンター等の援助を得ましょう。
おわりに
改めて言語化すると、そこそこのボリュームになり、私自身驚いています。
今までは、向き合った人々一人一人に、これらの言葉を投げかけていましたが、今後はこの記事を使って、まずは内容を見てもらって活用していこうと思います。
もし、この記事を見てくださった方がいて、内容について、疑問点や質問がある場合はコメントをください。