わたしのプログラミングの教え方 ~ 冨原 祐 の場合
プログラミングを教える、とりわけ若い人に学んでもらうことの難しさは、覚えることが中心だった学校の授業との違いから生まれているように感じます。
というのも、プログラミングスキルの向上は、自分なりの答えを、自分で考えて導き出すことが近道ですが、若い人にそのような経験をしていない方が多いのです。
このため、同じように、若い人にプログラミングや IT の基礎をなんとか学んでもらおうと苦労している方は多く、ここでは「若い人に IT の基礎やプログラミングを学んでもらうための手法」を、
- 「経験していなくても出来る目標設定」
- 「学習の主役が学習者になるカリキュラム設計」
- 「『学習者が能動的に頭を使う』講座の実施」
に分けて、触れていきたいと思います。
もくじ
経験していなくても出来る目標設定(キャリアパスの設定)
目標といっても、学習目標でなく「短期・長期的に学習者が得る知識の目標」です。
短期的には「今週中にこのプログラムを書いてみる」ですし、長期的には「 1 年で Python を使って通販サイトが作れるようになる」というような感じです。
ところが、 この「目標」は、基礎的な事を広く学ぶ段階では立てにくい 面があります。
「とりあえず IT の基礎的なことは学んでおいた方がいい」みたいになりがちなんですね。そして「役に立つかわからないけど、とりあえずやってみよう」という、最悪の学習がスタートしてしまう訳です。
また、明確な目標を設定しようとして、若い人に「将来、 5 年後の自分を想像しなさい」と言っても、できるわけがありません。そもそも、今からやる仕事すらイメージできていないのですから。
ここで、我々オトナの出番です。
「勇気をもって学習者のそれぞれのキャリアパスを構築する」ことがスタートです。
といっても、押し付ける訳ではなく、カリキュラム構築のため、学習者の将来像を考え、そうなってもらうために、興味を持って楽しんで到達できる道を考えます。
キャリアパス構築の例
例えば、「 AI に興味がある」という方がいれば、 5 年、 10 年、さらに将来を見据え、データ分析からプログラミング、 AI の知識、 AI が必要な業界の知識・・・といったような必要知識の洗い出しと学習タイミングを設定します。
そうすると、「国内でもトップクラスで、 AI の世界でテレビや専門サイトで名前がでることがあり、大学と連携するなどして日本の AI 界を引っ張っていくレベル」に「 35 歳前後でなる」キャリアパスだ!というような将来像が決まります。これを基にして「だから、今やるべきこと」を考えて作りこみます。
一方で、「でも将来はどうなるかわからないから、目標を立てられません」という人がいます(実際いました)。
将来なんて、わからないからこそ想定しておくべきで、早い段階なら修正可能です。
実際、新入社員研修でチームを組んで開発演習する時は、何もわからないながらに「自分の役割」を明確にして、「データベース担当」や「チームリーダー」などの責任を自分で選択してもらいます。これにより学習者は「役割を成し遂げるため、何を学んでどう行動するのか考える」ようになります。
プログラミング学習のカリキュラムでいえば、将来 AI のスペシャリストになるための、第一歩としてデータ構造を学ぶ、というのが正しいアプローチです。講師は「基礎だから、初歩だから、とりあえず学びなさい」という言葉に逃げないことが重要です。
「学習の主役が学習者になる」カリキュラム設計
カリキュラムの設計で大切なのは、講師が「いつどんなことを学びますよ」というスケジュールを作りこむことではありません。前述のキャリアパスが定まれば、学ぶ内容は誰が作ってもそこまで差はないものです。
大切なのは、学習者が学ぶものに対してどうアプローチするように設計するのか、です。
「このコマンドを打ちこんでください。はい、 AI が動きました」と言われた学習者が、「よし! AI を使って世の中を変えよう!」と思うだろうか?という疑問を持つべきです。
その分野に興味を持ち、その分野で能力を活かすための知識をどん欲に吸収する。そういう環境を作るために、「学習の主役は学習者」という点を意識してカリキュラム設計します。
知識を押し付けるのでなく、学習者が必要としたものをスムーズに提供する、一段階進むために、何を調べ、何を聞けばいいのか考える、そういった学習者主体のカリキュラムになっている必要があります。
学習者が工夫できる余白の時間を入れる
実際にカリキュラム化するときに「教えること」を詰め込みすぎず「ここで考えさせる」「ここは自分で解決させる」ポイントを組み込みます。講座中に Web で調べる時間も考慮します。
問題を解くのであれば正解を導き出すだけでなく、学習者なりのゴール設定をして、工夫してみる時間を設けるようにします。
人に教える場合、教えるのが上手であることは有利ですが、教える能力よりも大切なのはこういったカリキュラムの設計だと思っています。
明確な目標があり、それを達成できる環境(教材)があれば、少しのサポートで学習者は自身で学習を始めます。そこで、手が止まった時のために講師がスタンバイしている、という状況を作り出します。
「学習者が能動的に頭を使う」講座の実施
カリキュラムが定まったら、実行段階です。
そもそものカリキュラムが「主役は学習者」なので、この段階でも「学習者が頭を使う」ことに重点を置きます。書いてあることを覚える、手順を学ぶというのは 1 人でもできるので、考えて動いてみて、そこに結果が伴わないときに講師を使う、という流れを作ります。
この時に注意すべきは、まだ学習者自身で試行錯誤するのか、今、講師に質問するのか、その判断基準を示しておくという点です。
学習者は「このタイミングで聞いていいのかどうか」がわかりません。事前に「試せることが無くなってしまい、手が 1 分以上止まったら聞く」「 Google で検索した 1 ページ目を全部見て解決できなかったら聞く」などの指針を示して、判断基準を作ります。
そうすると、 講座の時間 = 脳を使う時間、になっていれば、学習者は非常に疲れます。
一方で、よくわからない、何をやっていいかわからないという状況の人は、手が止まり、疲労が少ないので、講師は見分けながらフォローすることも必要です。
最後に ~講師はサポーター
結果として、目標設定から実施まで一貫して「学習する人の成長した姿をベースに組み立て」れば、おのずと「学習者自身が学習に対する裁量権を持ち、頭を回転させて学んでいく」という結果になる、ということです。
これらを意識することで、講師としては「ちょっともどかしい」状態ではありますが、個々の成長に(学習者自身が)こだわった学習環境ができると考えています。
現場の技術をどう学ぶか、工夫を凝らした演習をデザインできる講師
株式会社3plus 取締役。普段はアーキテクト、PM、プログラマとして活躍。その一方で、現場経験を活かし近年は C# 、 Java を中心とした技術的なテーマや、情報処理試験対策など講師として多数の登壇実績を積む。
講義は熱いが接しやすく、受講者からの信頼も厚い精鋭講師。