2019年に発表された論文「Ten quick tips for delivering programming lessons(意訳 : プログラミングの講義を行うための簡単な 10 Tips)」を読んだ.僕自身のキャリアとして「今まで」も「今後」もプログラミングを教える機会は多く,今までの教授戦略を振り返るためにも本論文に興味を持った!
(PDF) Ten quick tips for delivering programming lessons
もしかしたら,前に紹介した論文「Ten quick tips for teaching programming」と似ていると感じると思う.確かに論文のタイトルはとても似ている.実際に本論文の中でも引用されていて,本論文は「Ten quick tips for teaching programming」を実践的に拡張した Tips を取り扱っていると書いてある.詳しくは以下の記事を読んでもらえればと!
本論文に載っている 10 Tips は以下で,日本語訳は意訳してみた!
- Tip 1: Use formative assessment every 10–15 minutes(形成的評価を 10~15 分ごとに活用しよう)
- Tip 2: Give learners and yourself a break every 45–90 minutes(学習者と自分自身に 45~90 分ごとに休憩を与えよう)
- Tip 3: Use a variety of exercise types(さまざまな種類の演習を活用しよう)
- Tip 4: Use sticky notes to monitor progress and distribute attention(付箋を活用して進捗を確認したり目を向けたりしよう)
- Tip 5: Create a visible backlog(目に見えるバックログを作ろう)
- Tip 6: Have learners take notes(学習者にメモを取ってもらおう)
- Tip 7: Present diagrams incrementally to complement other material(図を段階的に表示して教材を補完しよう)
- Tip 8: Teach together(一緒に教えよう)
- Tip 9: Include everyone(全員を含めよう)
- Tip 10: Enforce a code of conduct(行動規範を強制しよう)
Tip 1: Use formative assessment every 10–15 minutes(形成的評価を 10~15 分ごとに活用しよう)
聞き慣れない言葉かもしれないけど「形成的評価 (formative assessment)」とは,講義中に行う評価(理解度チェック)のことで,生徒の学習を促進するために使われる.そして講義の後に行う評価を「総合評価 (summative assessment)」と言う.Tips 1 はこの「形成的評価」を定期的に行うというプラクティスだった.
本論文にはプログラミングの講義で使える「形成的評価」の例も載っていた.僕自身は講義中に理解度を確認する発問をすることは多いけど,今後は以下の例を参考にしつつ,より頻繁に「形成的評価」に取り組んでみたいと思う.生徒の疑問や誤解に素早く気付くこともできて効果がありそう.
- Answer a multiple choice question.(複数選択の質問に答える)
- Write a few lines of code.(数行のコードを書く)
- Predict what the code on the screen will do when it runs.(画面上のコードが実行されたときにどうなるかを予測する)
- Contribute the next line of code.(次の行のコードを考える)
- Label a diagram of a data structure.(データ構造の図にラベルを付ける)
- Trace the order in which statements are evaluated.(ステートメントが評価される順序を考える)
Tip 2: Give learners and yourself a break every 45–90 minutes(学習者と自分自身に 45~90 分ごとに休憩を与えよう)
講義が長く続きすぎると疲れてしまって集中できなくなるというのは誰しも感じることだと思う.本論文で興味深かったのは,休憩は「インストラクターのためでもある」という点でこれは「そうそう!そうなんだよ!」と読みながら首を縦に振ってしまった.本論文にも書いてある通り,インストラクターは休憩中に「未回答の質問に対応」したり「次に教える内容を準備」したりしていて,高品質な講義になるように工夫している.実はほとんど休憩を取れていなかったりするのだ!
Tip 3: Use a variety of exercise types(さまざまな種類の演習を活用しよう)
Tip 3 は前に紹介した論文「Ten quick tips for teaching programming」にも出てきた「Parson's Problems」を使うという内容だった.コードを実装する以外の演習を活用することで,プログラミングの構文を思い出さずにプログラムを学べるというメリットがある.「Parson's Problems」は複数の論文で紹介されていて,重要なプラクティスなんだと再認識した.
Tip 4: Use sticky notes to monitor progress and distribute attention(付箋を活用して進捗を確認したり目を向けたりしよう)
Tip 4 は,例えば演習中に困っている生徒が手を挙げにくいこともあるので,机の上に付箋を貼ってもらうというプラクティスだった(問題なかったら緑/困っていたらオレンジ).またインストラクターは学ぶことに熱心な生徒に注目しすぎてしまうこともあるため,手を挙げたりすることに不安を感じている生徒に優先的に目を向けられないかもしれない.そこで「付箋」を活用して,心理的な負担を減らしながらサポートを求めることができる.
個人的な経験からも納得感のあるプラクティスだった.教室なら歩き回って個別にフォローすることもできるけど,オンラインだと少し難易度は高くなってしまったと思う.個別チャットを使ってもらうなど気軽に相談してもらえる雰囲気を作るのが重要だと思う.ちなみに付箋を買うなら「強粘着」がおすすめ!付箋が剥がれてしまうという悲しい思いをしなくなるぞー!(突然何の話❗️)
Tip 5: Create a visible backlog(目に見えるバックログを作ろう)
講義中に質問が多く出ることはインストラクターとして嬉しいことだけど,多すぎると時間管理が難しくなったり,質問によってはすぐに答えられずに別途調査が必要な場合がある.だからと言って質問を拒否するような雰囲気になってしまうと,生徒は質問することを諦めてしまう.そこで「付箋に質問を書いて後ろの壁に貼っておく」というプラクティスが Tip 5 で紹介されていた.モブプログラミング中に話題を一時退避する「パーキングロット」にも似ていると思う.もし関連する質問が多かったら優先的に回答するという工夫もできる.オンラインだと「ホワイトボード」や「Miro」を使って実現できるし,とても良いプラクティスだと思った!
Tip 6: Have learners take notes(学習者にメモを取ってもらおう)
Tip 6 は,1日の終わりに生徒にメモを取ってもらうというプラクティスだった.以下のようにメモ(表裏)を取ってもらうことによって,クラス全体の理解度や誤解に気付ける.僕自身はこのプラクティスを「レトロスペクティブ(振り返り)」としてよく使っている.オンラインでもチャットに投稿してもらえば状況を把握できる.ポイントは「何も気にせず気軽に書いてもらうこと」かなと!講義に KPT を実施する感じとも言える.
- 表 : 学べたこと
- 裏 : まだわからないこと / 混乱していること
Tip 7: Present diagrams incrementally to complement other material(図を段階的に表示して教材を補完しよう)
よく Microsoft PowerPoint のアニメーションは不要だ!という話を聞くけど,本論文では以下の3種類に分類して「教育的なグラフィック」を活用することは学習効果を底上げすると書いてあった.アーキテクチャ図を説明したり,コンポーネントの関係性を説明したりするときに意識的に使っている.またホワイトボードを書くというプラクティスも結果的には段階的に説明することになるので有効的だと思う.
- 魅力的なグラフィック(教育目標には直接関係しない)
- 装飾的なグラフィック(教育目標には直接関係しない)
- 教育的なグラフィック(教育目標に直接関連する)
Tip 8: Teach together(一緒に教えよう)
Tip 8 では「Co-teaching(インストラクター2名で教えること)」というプラクティスが紹介されていた.2名とは言え役割はいろいろあって以下が載っていた.実際に今の仕事でも「Co-teaching」の機会はあるけど,1番多いのは「Teach and assist」かなぁー.他はインストラクターにオンボーディングしてもらうときなど.
- Team teaching(チーム指導): インストラクター2名が交代しながら教える
- Teach and assist(指導とサポート): メインインストラクターが教えてサブインストラクターは困っている生徒をサポートする
- Alternative teaching(代替指導): メインインストラクターが教えてサブインストラクターは少人数のグループに専門的に教える
- Teach and observe(指導と観察): メインインストラクターが教えてサブインストラクターは生徒の様子を観察する
- Parallel teaching(並行指導): インストラクター2名が同時並行で教える
- Station teaching(駅指導): 少人数のグループに分割してインストラクター2名が必要に応じて顔を出す
Tip 9: Include everyone(全員を含めよう)
Tip 9 は「知識的にも / 文化的にも / 身体的にも」どんな違いがあっても平等に学べるように講義を運営することが重要というプラクティスだった.本論文には例として「専門用語を使いすぎないこと」や「えっ知らないんですか (Oh, you don’t know that?) と言わない」が載っていた.個人的にはグループディスカッションが苦手な人がいることを尊重して,参加を強制するのではなく個人作業で代替できるように選択肢を増やしている.観点としては関連していると思う.
Tip 10: Enforce a code of conduct(行動規範を強制しよう)
Tip 9 にも関連するけど,講義でも「行動規範」を重要視して,攻撃的な発言や敵意を抑え込む必要があるというプラクティスだった.直近4年間ほどは技術講師(インストラクター)として教えることを仕事にしてるけど,CoC 的に問題になる場面はほぼ経験したことがない.お客様同士の問題なら何よりも最優先に対処するけど,僕自身に対する発言なら「フィードバックありがとうございます!」という気持ちで受け取るようにしている.とは言え,そういう状況になると講義全体の雰囲気も落ち込んでしまう.特にオンライン(チャット)だと無意識に語尾が強くなってしまうこともあるとは思う.
まとめ
2019年に発表された論文「Ten quick tips for delivering programming lessons(意訳 : プログラミングの講義を行うための簡単な 10 Tips)」を読んだ.今までプログラミングを教えたりする講義(トレーニング)などを多く担当してきて,意識していたことが正しいと確認できて良かった.また Tips 1(形成的評価)や Tips 5(バックログ)は今後積極的に試したいと思った❗️