これは ZOZO Advent Calendar 2024 カレンダー Vol.6 の 21日目の記事です
はじめに
今回の記事では、自分が今年経験した「Javaが未経験のメンバー」に対して自分が講師を務めた際に感じた、プログラミングを「教える」ことの難しさと、同時にそこに隠れている楽しさについて共有したいと思います。
経緯
以前に自分が書いたこちらの記事:Event Stormingワークショップを体験してきた話でも紹介したのですが、現在自分が所属しているブロックでは、ZOZOTOWNを裏で支える基幹システムのリプレイスを推進しており、リプレイスを進める過程でVBScriptからJavaへの言語リプレイスを段階的に始めています。
※ 今後数年でJavaでの開発が100%になるように推進している
リプレイスを推進していくメンバーについては、前職でJavaでの開発してきたメンバーや、VBScript以外の言語での開発経験もあるメンバーで構成されている為、特に問題なくリプレイス開発を進められますが、今まで保守・運用でVBScript・ASP環境下でずっと開発を進めてきたメンバーにとっては、いきなりJavaでの開発を強いられても参入ハードルの高いものになってきます。
これから部署内での開発がJavaに一本化されていく方針の中で、「JavaおよびJavaでのアプリケーション開発のイロハをJava未経験のメンバーにどんどん伝えていこう!教えていこう!」という動きが強まった中で、Javaでの開発をこれまでも長くやってきた自分もJava講師としての役割を担うことになりました。
講師としての自分と向き合う日々
上記のJava講師を務めて約2ヶ月半程経ちます。
ここからの内容は現在進行形で自分が日々向き合っている内容なのでかなりリアルな内容にはなってきますが、自分の想いを言語化する為にも赤裸々に書いてみます。
私自身がまだまだ教える立場として未熟だったことが大いにあるので、ウィークポイントの克服は来年の目標として、しっかりと受け止めていきたいと思います。
説明することに躍起になってしまったこと
「トレーニング受ける人全員にわかってもらう資料・サンプルコードを作るぞ!!!」と意気込んでスタートした講師としての役割。振り返ると、自分の中で「説明すること」に全力を注ぐあまり、受け手側が自発的に考える余裕を奪ってしまっていたという反省点があります。
「これさえ読めばアーキテクチャについて完璧に抑えられるだろう!」
「OpenAPIの定義の仕方、資料にしっかり落とし込めたし、これを説明できればOKだ!」
各トレーニング会用に資料をまとめ、毎回その準備に費やして説明の仕方を練習して臨んでいました。
説明する内容が不安なので、カンペも作成して論理武装をしっかりした状態で臨んで、その内容をよくわかるように述べることはできていたかなとは思っています。
説明する:ある事柄が、よくわかるように述べること。
「goo辞書」より
しかし、実際に受講者がその説明をもとに何かを「できるようになる」段階に進んだかというと、決してそうではなく、情報を伝えるだけになってしまったように思います。
聞いている相手の表情を見る余裕がなく、こちらが伝えたいことを伝えるのに躍起になってしまって、質問しやすい雰囲気をなかなか作り出せなかったという反省も合わせてあります。
反省点
- 説明を聞く時間が長くなりすぎ、受け手の能動的な理解の時間を阻害してしまった
- 自分が説明する内容に集中するあまり、受講者が感じている疑問や戸惑いを拾いきれなかった
教えることはできていなかった
教える:知識や技能を身につけるように導く。
「goo辞書」より
「教える」
- 講師が伝えた知識・技能を自分のものにしようと、受け手側が自発的に動くよう促す。
- 分からないことをそのままにしないことを良しとして、積極的に質問できる雰囲気を作る。
受け手が「わかった!」と理解できるレベルまで、時には具体的な例も交えながら伝えて、受講者が前のめりになるようなトレーニングにはできていないという自覚はあります。
プログラミングを始めた時に味わう「あ!俺の書いたコードが動いた!楽しい!!」
楽しさ、奥深さを感じてより学ぶ意欲が湧くようなトレーニングを今後は目指していきたいと思っています。
教えるのは楽しい
試行錯誤の連続ではありますが、数ヶ月経ってきて少しずつですが余裕が出てきている感覚はあります。
前はこだわりすぎていた説明資料の作成もほどほどにし、トレーニングのスタイルをペアプログラミングやモブプログラミングを中心とした「みんなでコードを書いていくスタイル」に変えてから、自分自身も楽しめるようになり、受講者からのレスポンスも増えてきました。
自分自身も一緒にコードを書きながら、受講者と同じ視点にいることを心がけるようにすると、トレーニングにおいての一体感が生まれ、その場で「動いた!」瞬間を共有する喜びも得られるようになりました。
教え方の部分ではまだまだ改善点が沢山ありますが、自分自身も楽しみながら今後のトレーニングに取り組みたいと思っています。
まとめ
プログラミングを「教える」ことは、改めて難しいことだと実感する毎日です。
説明だけで終わらせず、受講者が自発的に学び、実践し、成長できるように導くためには、講師自身の工夫や成長が必要であり、以下のことを強く感じました。
「説明」と「教える」の違い
知識を伝えるだけではなく、それを活用できる力を身につけてもらうことが本当の意味での「教える」こと。
受講者との一体感は大事
ペアプロやモブプロのような参加型のスタイルを取り入れることで、教える側と学ぶ側の垣根を越え、共に学び成長する場を作ることができる。
成功体験を共有し、楽しむこと
受講者が「できた!」と感じる瞬間を大切にし、その達成感を共有することで学びのモチベーションを高める。
自分も成長し続ける
教える中で、自分の知識を再確認し、新たな学びを得ることが講師自身の成長にもつながる。
これからも試行錯誤を続けながら、受講者とともに楽しく学び合う場を作っていきたいと思います。プログラミングの楽しさ、奥深さを共有し、受講者が次のステップに進む手助けができるよう、講師としてのスキルをさらに磨いていく所存です。