わたしが PyCon MY 2018で行ったトークに関してお話します。 JennaのPyCon 2018 MYでも言及されているのですが、役に立つ補足となるといいと思っています。 PyCon MYでお話しした内容のいくつかを、ここでも読者の皆さんに共有しようと思います。
トークは技術的なものではなく、初心者にも分かりやすいものでした。 想定していた対象は教育者、技術グループや、トレーニングを運営している個人や組織などでした。 普段から仕事で使っていたり、交代要員や新規入社で一回トレーニングことがあるか、という感じでしょうか。 組織やコミュニティの一員として、だとすれば、知識共有のため、招かれたとか、参加権を振られたりしたのかもしれません。 誰しもが突然、何らかの理由で何かしらのトレーニングの必要に迫られることがあるでしょう。 参加者は無料か、自腹、または会社持ちの費用で来ているのかもしれません。 参加者がトレーニングに料金を支払う場合、人数が増える事はより多くの収益を意味します。 会社に大変革が起き、巨大な部屋に参加者を迎えて、なんてことがあるかもしれません。 準備しておくに越したことはありません。
何にせよ、柔軟性があることは参加者にとってよいことです。 より大きなグループでのチャレンジは、より問題が起こりやすい、と言うことです。 人が増えると質問も増え、エラーもより多く起きるということです。 中には、単に話について行くのにも時間がかかる、ということもあります。 そんな人が沢山、たまたま、あるイベントに参加した、ということもあります。 グループが大きいほど管理は難しく、脱線しがちです。 これでは、大きなグループのトレーニングに参加すると、質の高いものを受けられなくなりがちです。 グループのサイズを大きくしたければ、届ける内容の価値にも同時に注意しなければならないのです。 スタートアップの世界や技術サークルなどで、いずれ誰かが「価値があるのか?」という疑問を持つことになります。
自分の経験から学んだことがあります。このことだけに限りませんが、 わたしはトレーニングのやり方を改善し、トレーニングの品質を保ちつつ、扱える参加者数を増やしていくことができました。 トレーニング経験から得た知見をまとめると、以下のようなものです。
• より良いツール - その作業に適したツールを使うこと、という格言もあります
• やり方を再考する - 利用するツールによって、作業方法を変えることが可能です
• 個人をエンパワーする - クラスを一つの単位で扱うかそれぞれの参加者単位で捉えるかで、違ってきます
• 双方向性は不可欠 - 社交的相互関係は、邪魔になるのではなく、助けになるのです
私の使うメインのツールはJupyter notebookです。これは教育用として素晴らしいと思います。多くの講演やデモに使われ、インタラクティブなコードスニペットと共に口述を行なっています。プログラミングを教えるのに使う場合には、最初から全てをタイプしたり、前の誰かの話を聞いたりする必要が無くなるので進行がスピーディーになります。参加者はコードをより快適に試すことができ、より早いフィードバックループが得られるのです。
クラスの運営の仕方という意味では、私のガイドに沿って、一歩一歩進められるnotebookのレポジトリの準備のほか、バグの取り扱いと問題の回避方法を参加者へ与える準備をします。こうするとより自信を持って学ぶことができるのです。わたしは、簡単には壊れないけれど、もしものときにはリセットボタンがある、と言って安心させます。迷子になったり、何をすれば良いかわからない、と彼らが感じることは無いようにします。ある時点で、参加者自身でnotebookの使い方を把握しているか確認します。壇上のわたしの話を聞かせず、新しいnotebookを使って自分のペースで進めさせてわたしは歩き回り、近くに行った時に質問してもらえるようにします。クラスが、わたしの話を聞いているのではなく、頭を下げてnotebookに取り組む人々の集団となります。私は彼らのフロー状態を邪魔したり、私が前で話すのを待たせたりして妨害したりしません。この方法で、私は歩き回って個々の人への指導に集中することもできるのです。
この手法は個人をエンパワーすることに重点を置いています。クラスを一つの単位として捉えることも可能ですが、一日の終わりには皆家に帰って、参加したことで得られた価値というものを彼らがそれぞれで評価するのです。クラスを一つと捉えることと各々を個人と見ることを比較することで、トレーナーは成長する機会に恵まれるのです。デモをしながら講義をすることとはちがって、コーチングの能力を向上させることもできます。両方のアプローチを持っていることで参加者にも多くのメリットがあるだけでなく、知識の共有者として自らがステップアップできるメリットもあります。
個人としては、双方向性は学習に不可欠なものです。仲間というのは、知っていること・知らないことの理解を助けると共に、質問や解き方の提示方法を学ぶことで、チームとして活動する心構えをさせてくれます。伝統的なスタイルのクラスでは、隣の人に質問すると授業の邪魔になりかねません。しかし、個々の人が彼らのnotebookで非同期に取り組んでいる場合、問題はすでに解決していたり、誰かが解決への道をひらめいていて、皆の助けになるかもしれません。もし誰かが邪魔をされたとしても、それはクラス全体ではありません。
これにはnotebookのセットアップを行い、使い方を学ぶ時間が必要であるというデメリットもあります。短いセッションではかなりの時間を食いつぶしてしまうかもしれません。初心者クラスでは実際に開始できるまでに、少し時間が必要でしょう。しかし、わたしはデメリットを上回るメリットがあると信じていて、というのも参加者は、notebookを持ち歩き、残りを自分のペースで続けることが可能なのです。わたしは単に、正しい方向に向けてあげて、参加者自身で進めていけるようにするだけです。何が誤りとなり、それで何ができるのかを垣間見せてくれるnotebookがあります。レッスンはすでにnotebookにあり、セッション中の私の話の中には無いので、参加者がそこから何を得られるかは、自身の努力にかかっているのです。教室を出たとたん「Python-fuを理解した!」と、急に言うことはあり得ませんが、その道は開いたので、どこまで行けるかは自身の努力にかかっています。Jupyter notebookは様々な言語でも動作しますので、Python専用では無い、と言うことも言っておくべきでしょう。
授業のはじめには古典的な授業のような始まり方をしますが、しばらくしてnotebookの使い方を学ぶにつれて変化が起こり、参加者は各々で取り組むようになります。個々に取り組んでいますので、自然と他の人より早く進む人もいます。注目すべき興味深かった点には、トレーニングのあと、わたしが雇いたくなるような参加者が、はっきりと分かったことです。他の人よりもまさに抜きん出ている人がいました。この手法で、わたしはプログラミング経験のない人、最大120人を超えるグループを扱うことができたのです。