👨‍🏫

ゼロから教えるプログラミング教室 反省編

2021/03/23に公開

ちょうど1ヶ月前から、情報や数学、プログラミングに関する知識等がほとんどない方に、プログラミングを教える事になりました
これまで、誰かにプログラミングを教えることはありましたが、情報系の学校を卒業していたり、プログラミングスクールで勉強していた方に教えることはありましたが、ほぼ何もない方は初めてです
前提知識のレベルがすでに違うので、今までとは教え方が異なるだろうと思って、スクラップに思ったことはまとめていました

https://zenn.dev/luna_chevalier/scraps/ef6fde8ec9d4dd

予想通り、色々なところで問題が出たので、それらの整理、解決策の模索をこの記事ではしていきます
試した結果などはまた別記事にまとめようと思います

概要

最初に教える環境だとか、最終的なゴールについて

ゴール

  • プログラミングの三要素「順次」「条件分岐」「反復」が書ける
    • 「条件分岐」、「反復」はいくつか書けるので、ifforだけに絞る
  • オブジェクト指向を理解して、これを使ったアプリを作る
    • 最終的な課題としてはブラックジャックを使おうと思っています
    • 上記に到達する前に、より簡単にオブジェクト指向がわかる様な課題を用意する(まだ作ってない)
  • Git、GitHubを使える様になる
    • addcommitpushfetchmergepullが使えればとりあえずはOK

環境

言語やツールは以下を使っています

  • Java(11.0.10)
  • Slack(質問などのやり取りを行う場所として)
  • Google meet(不定期で口頭、実際の課題の取り組み方を見ながらでのやり取り)
  • GitHub(課題の作成、ソースコードの課題の提出)

ちなみに、課題については↓で公開しています

https://github.com/luna-chevalier-education/elementary-level

これまでの成果

結果から言うと、良い成果は全然挙げられてないです
いくつか要因がありますが、大まかに分けて以下になると思います

順を追って解説していきます

質問のレスが遅い

個人的には真っ先に解消すべきポイント

まず、教える側の自分ですが、現場の業務の片手間で教える状況です
そして、現場のセキュリティがガッチガチなので、教育用のSlackにログインできません
なので、教わっている側から質問が来た時、すぐにレスすることができません
良くても30分、ひどいときは2時間以上のタイムラグが出ます
また、現場の作業で残業が発生すると、深夜になってレスしづらい時間になります(この時間にレスしても、すぐに見てもらうことはできない)
双方のレスやSlackのチェック頻度がまちまちなので、教わっている側がエラーや思い通りに動かないときに質問した場合、ずっとつまづきっぱなしになります
とても時間がもったいないところです
まだ始めたばかりなので、エラーになったときの調べ方もままならず、今の所自力で解決できたことは多分ないです

数学の教養がないことが思ってたよりも足を引っ張ってる

具体的に話すと、これまで「FizzBuzz」、「素数判定」、「英文の文字カウンタ」を課題として用意したのですが、この部分のロジック構築が自力ではほとんどできなかったところです
主な要因は以下の様に感じました

  • 1÷3や2÷3の商とあまりが計算できない(商が0になるあまりの計算ができない)
    • 3÷3は無難にできる
    • 11÷3は怪しい(あまりがあると対応できない?「3.66・・・」や、「3と3分の2」という答えが出がち)
  • 「素数」という言葉を知らない
  • 複雑にロジックを組みがち

日常的にあまりの計算とか、素数について触れないので、数学的な要素はハードルが高くなる結果になりました
数学の中でもかなり初等レベルの内容でも、下手に課題に設定するのは微妙そうです
日常生活でよく使うものに注力した方が良さそうですが、今の所それくらいの内容ですぐにできそうなものが見つからない・・・

「英文の文字カウンタ」では、複雑にロジックを組むのが見受けられました
どういうことかというと、英文の長さでロジックが変わってしまうというものでした
具体的には↓のようなロジックになっていました

  • 1単語くらいなら、全部の文字を見てカウント
  • 長文になると、最大文字数 - 1の文字だけをカウントしていく(見る文字を省略)

見る文字を省略する事自体は性能面を向上可能性があるので考え自体は良いですが、これを実現するにはどうするか具体的な方法が出ませんでした
最終的には、まずは単語ごとに文字をカウント、すべての単語のカウントが終わったら集計する様にしました
これでもちょっと複雑(まだシンプルにできる)ですが、とりあえずこれでもできるので、これで今進めています

Google Meetを使った教え方があまり効果がない(様に感じる)

不定期にGoogle Meetを使って教えていますが、あまり効果が得られてません
詰まっているところや、進み悩んでいる箇所を一気に解決することができているので、全く効果がないというわけではありません
ですが、↑以外での効果がないので、あまり使えていない気がしています
画面共有を使ってペアプロとか、したほうが良さそうな気がします

今後の方針

全体的に教える側と教わる側のコミュニケーションが少なすぎるので、まずはここを改善していきたいと思います

Discussion