SSブログ

FORTRANから始まって41年(10) [プログラマー現役続行]

教育を行う能力

能力というよりも、ソフトウェアエンジニアとして経験した方がよいのが、技術教育です。教えることの長所はいくつかあります。
  • 教えるためには、技術を理解する必要がある
  • 教えることで、技術を理解できる
当然のことながら、ある技術を教えるためには、自分自身で理解する必要があります。一方で、受講生からの質問に答えるために、深く考えたり、調べたりたりすることで、教えている技術を深く知ることになります。

現在、私自身が行っている技術教育は、Go言語研修『Effective Java 第3版』研修です。以前は、Java言語研修も行っていましたが、現在は行っていません。富士ゼロックス情報システムおよびリコーに勤務していた頃は、以下のような教育も行ってきました。
  • ソフトウェアエンジニアの心得
  • A Quick Tour of C++
  • テスト駆動開発
  • 書籍『プログラミング作法』の第1章と第2章
  • デザインパターンや設計原則
各内容の説明は省略しますが、私自身は、技術教育担当の組織に属していたわけではなく、ソフトウェア開発組織に属していることがほとんどでした。

技術教育で難しいこと

技術教育の中で難しいのは、受講生からの質問に適切に答えることです。つまり、以下のことを行える必要があります。
  1. 聞かれた質問から、本当は何を知りたくて質問しているかを引き出すこと
  2. 質問者および他の受講生の技術的知識がどこまであって、どこから説明するのが良いかを考えること
Java言語研修やGo言語研修では、事前にテキストの指定された範囲を読んで疑問点を質問表に記入してもらうのですが、本当は何を知りたいのかについては、研修当日に質問者に聞かないと分からないことが多いです。

質問の意図が理解できたとしたら、どのように説明すれば理解してもらえるかを、その場で考える必要があります。そのためには、説明の基礎となる知識を質問者や他の受講生が知っているのかをまず聞くこともあります。たとえば、「O表記(O Notation)が分かりますか?」、「CPUとメモリはどのように接続されていますか?」、「スタックとは何ですか?」とかの質問をすることがあります。それは、質問に対する回答を理解するために必要だからです。

そして、よくあるのが、質問の回答を説明する前に私自身が質問をすることで、話が脱線することです。たとえば、Go言語ではゴルーチンのスタックが自動的に伸長するのですが、それに関する質問を受けると、「スタックとは何ですか?」「スタックにはどのような情報が保存されるのですか」「他の言語ではスレッドのスタックの大きさはどのくらいですか?」「他の言語ではスタックサイズが固定長なのはなぜですか」などと聞き返してから、私が発した質問に対する回答の説明を始めてしまうからです。一通り説明が終わってからGo言語に戻ると、「スタックが伸長することがどれだけ画期的か」という話題に戻る訳です。

コメント(0)