こんにちは、 TECH PLAY Academyでメンターをしている久保です。本記事では弊社がプログラミング初学者に対して技術研修を行う際に使用するレクチャー資料を作成する際に工夫していることに関して執筆します。
TECH PLAY Academyでは、企業のエンジニア向けにプログラミングの技術研修を提供しています。新卒・既卒エンジニアを対象に、モバイル、Web開発、フルスタックといった幅広い分野での技術研修を行い、受講者が短期間でスキルを習得できるよう、充実したサポート体制を整えています。特に新卒エンジニア研修に参加する受講者の中にはプログラミングのバックグラウンドを持たない未経験の状態で参加することも多く、初学者はプログラミングの概念やコードの書き方を理解するのに苦労するケースが多く見られます。また、特に他の分野の研修と比べて挫折する可能性が高いという課題も抱えています。
研修の1日の流れは、冒頭1〜2時間で全体に向けての講義を行い、その後5〜6時間は個人で課題に取り組む形をとっています。だからこそ、講義で使用する資料は非常に重要な役割を担っています。受講者は復習の際にも講義資料を閲覧することが多いため、資料だけでプログラミングの方法や概念を理解できるようにする必要があります。これから、私たちが新卒エンジニアに対して資料を作成する際に、受講者が円滑な学習を進めるために具体的に工夫していることに関して紹介します。
未経験向けエンジニア資料作成のTips
既習内容と新たに学ぶ内容の差分を明確にする
各時点で受講者が何を知っているか・何を知らないかといった既習内容を把握し、新しく学ぶ内容には既習内容以外の言葉は使用しないように注意します。概念や文法を伝える説明文にまた他の未知の言葉が含まれていると理解の妨げになるためです。資料を作成する際には、読み手(受講者)がその時点で知っているはずの単語や概念のリストを作成しながら行うとこのエラーを防ぐことができます。
文法と自由度の境界を明確に
プログラミングでは文法で記述方法が決まっている部分と開発者によって自由に記述することができる部分があります。例えば関数を定義する際には「def greet(message):」のように記述しますが、「def」や「():」の部分は言語によって指定されたルールに従わなければならず、「greet」や「message」の部分は開発者によって自由に記述することができます。しかし理解がままならない受講者にとってプログラムは時に暗号に見えてしまい、資料で提示されたプログラムをそのまま暗記しようとしてしまいます。暗記に頼ってしまうと応用の効かない知識となってしまうため、文法と自由度の境界を明確にすることが重要です。
記述の理由を説明
プログラミングでは時に簡単に記述することができる処理でも、依存性注入やドメイン駆動開発のように意図的に複雑に記述することがあります。これは単なる慣習で複雑化しているわけではなく保守性の観点に起因するものが多いです。しかし初学者にとっては理解が難しいことが多く、講師としても複雑化する背景やメリットの説明を怠りがちですが、そこを怠ると受講者が現場に配属された際に、必要以上に複雑化してしまうなど、応用の効かない知識となってしまいます。記述方法だけでなく、複雑化することで防げるエラーやその論理の説明責任が講師には伴います。
裏側の仕組みを解説
アプリケーション開発ではフレームワークやライブラリなどのを使用することが多いですが、それらは第三者によって記述されたコードのため、初学者にとっては内部の仕組みや処理の流れを把握することが難しくなります。既存のフレームワークやライブラリには内部の仕組みを理解しなくても使用することができるというメリットもありますが、内部の仕組みを大まかにでも説明しておくことで受講者は円滑にエラー文を読み取ることができ、現場でのデバッグ作業も建設的に行えるようになります。
概念は日常の例に置き換える
プログラミングや技術的な概念は、抽象的で理解しにくいことがあります。そのため、初心者に対しては、概念を日常の身近な例に置き換えることで理解を深めることが有効です。しかし、語弊が生まれやすいため、例を選ぶ際には慎重に行う必要があります。多くの人が親しみやすく、理解しやすい例を選ぶことが大切です。また、可能であれば一つの例に統一することで、複数の概念を一度に説明できるようにすると、違いが明確になり、受講者の理解を助けることができます。
例えば、オブジェクト指向の4つの概念(カプセル化、継承、ポリモーフィズム、抽象化)を伝えるときには、4つ別々の例え話をするのではなく、エアコンのリモコンを例に統一します。この例を通じて、各概念の違いを明確にすることができます。
- カプセル化: エアコンのリモコンが、複雑な内部の動作(温度調整、風量調整など)をユーザーに隠し、ボタン操作という単純なインターフェースを提供していること。
- 継承: 新しいエアコンのリモコンが、前のモデルの機能(基本的な操作)を引き継ぎ、さらに新しい機能(例えば、Wi-Fi接続機能)を追加すること。
- ポリモーフィズム: リモコンが複数のエアコンのモデルに対して同じ操作(例えば、電源ボタン)を行えること。異なるモデルでも同じボタンで異なる動作をすることが可能です。
- 抽象化: リモコンのユーザーが、「エアコンを操作する」という高いレベルの目的に集中できるように、複雑な内部の技術(例えば冷却システムやセンサー)は隠されていること。
複数のプログラム例を用いる
プログラムの概念や処理の説明だけでは、受講者が十分に理解できないことが多いです。しかし、複数の具体例を用いることで、受講者は異なる状況や使い方を学びやすくなり、パターン認識をサポートすることができます。このアプローチにより、受講者は一つの例から得た理解を他の例に応用しやすくなり、より深い理解を促進することができます。複数の例を示すことによって、受講者はプログラムの概念をさまざまな視点から捉え、幅広い理解を得ることができるようになります。
クイズを使用する
プログラムや概念を学ぶ過程で、読み手は自分が理解できているか不安になることがあります。コーディングを実際に行うことが最も効果的ですが、時間がかかるため、すぐに試すことが難しい場合もあります。そのため、クイズを資料に導入することで、受講者に思考を促し、自分の理解度を確認することができます。クイズは、単に知識を確認するだけでなく、受講者にエキサイティングでインタラクティブな学習体験を提供し、理解の深化を助ける効果もあります。
最後に
TECH PLAY Academyでは、未経験の新卒エンジニア向けにプログラミング技術研修を提供しています。研修資料作成では、受講者がスムーズに学習を進められるよう、いくつかの工夫をしています。まず、既習内容と新たに学ぶ内容の差分を明確にし、未知の言葉が混ざらないよう配慮します。また、プログラムの文法と自由度の境界を理解させ、単なる暗記ではなく応用力を育むことが重要です。さらに、記述方法の理由や裏側の仕組みを説明し、概念を日常的な例に置き換えて理解を深めます。複数のプログラム例を通じて、受講者が異なる視点から学べるようにし、クイズで理解度を確認することでインタラクティブな学習を促進します。これらの工夫により、受講者が理論を実践に活かせるよう支援しています。
今後ともプログラミング初学者がどんな点につまづき理解が滞るのか、どのような伝え方をすれば受講者がより学習した知識を応用することができるのかなどを観察・研究してまいります。ご覧いただきありがとうございました。ご質問やフィードバックがございましたら、お気軽にお知らせください。