2015/12/06

派遣前合宿その9 粒度と順序

最近、訓練所にいて新たな悩みが発生している。
これまでのようにがむしゃらにやっていれば気がまぎれるようなものでもないので、余計にたちが悪い。
語学に関しては常にそのことだけを考え続けた。
人間関係に関しては、人の助けを借りたり、まあ自分で何とかしたりできた。
それで、なんとかここまで乗り切った。

しかし、「暇」だけはもうなんだか、どうしようもない。

徐々に終了していく訓練。
課業はこちらの意思とは関係なく上から下へ順番に流れていく。
それは、英語の課業に関しても同様だ。
過去のエントリーでも何回か触れたが、訓練中盤においては英語のテクニカルクラスへの準備が生活の大部分を占めていた。
しかし、先々週にそのテクニカルクラスの最後のプレゼンテーションも終わってしまった。

急に増える、自由時間。
いや、自由時間の物理量が増えたんじゃない。
自由時間を費やさなければならない課業が減っただけだ。
他の言語では「もう駄目だ・・・」と悲壮な声も上がっていると聞く。
授業が楽?違う、私自身が楽をしているだけだ。
まだ訓練だって終わったわけではないのにこれでは、家に帰ってからのことが今から不安だ。

考えなければならないことは沢山ある。
語学の勉強だって、もっとやらなければならない。
テクニカルクラスにて自身に課していたタスクも未完了のままだ。
今回は、そのタスクをここに記すとしよう。

まずおさらいだが、青年海外協力隊の訓練所における語学訓練は以下の二つに大きく分かれる。
  • ホームクラス
  • テクニカルクラス
ホームクラスとは、要はその言語の基礎力を高めるための授業だ。
その言語の文法の学習やボキャブラリーの強化など、その言語を使用するのに必要となる基礎をそのクラスで徹底的に鍛えなおす。
なお、他の言語の場合はイチからのスタートになる人も多いが、人によっては初期段階で大きく差がある場合もある。
したがって人数が多い言語の場合、ホームクラスは訓練所入所時の語学試験の試験結果においてざっくりとレベル分けされる。

これに対しテクニカルクラスとは、言語を使用する上での応用力の強化、すなわち「実践」である。
内容は基本的にはプレゼンテーション、人によっては模擬授業をやることになる。
こちらは職種に応じてクラス分けされる。
私の職種はコンピュータ技術なのだが、PC関連職種と言うことで「PCインストラクター」の方々と一緒にテクニカルクラスを実施することとなった。
私の内容は「DBとSQLに関する模擬授業」。
時間は40分の授業を5コマだ。
ゲゲゲ!40分の授業を5回もやんないといけないのかよ!
と、そのはじめは思っていたのだが、途中で気が付く。
DBとSQLなんて、たかだか200分そこそこの時間で教えきれるようなものではないということに。
そしてそこで思い出す。
そもそも、私はDBやSQLのことを教えてもらった経験がなかったということに。

そう、問題はまさに、語学の問題以前である「そこ」にあった。

私がITエンジニアを志したのは今から7年以上前の話だ。
私は転職の末、以前の会社に世話になることになった。
当然その時点でIT関連の技術は皆無、知識も経験もあるはずがない。
そんな私に最初に与えられたのは、研修課題だ。
≪研修課題≫
JAVA言語で指定された機能を作ってください。
わからないことがあれば先輩に聞くか自分で調べてください。
出来上がったら、レビュアーに声をかけてレビューしてもらってください。
以上。
それ自体は珍しいことでもないし、技術職であればOJT(On the Job Training)などよくある話だ。
研修が終了し、実際に現場で働くことになってからもそういったことだらけだった。
現場が変わるたびに変わる言語。
言語が違えば環境も違う。
そのたびに調べることは全て自分で調べ、自主学習と自己研鑽に努めた。
そして身に付く、「学習能力」。
ここでいう学習能力とは、完全に「プログラミング言語」限定の学習能力だ。
全く新しい言語を学習する場合に必要となる「学習内容」が、他の人よりは把握できている。
はじめに何が必要か、何をすれば動くのか、その結果何が出来るようになるのか。
ならば、それをただ教えればいいだけのことだと、思われるかもしれない。
しかし、事はそう単純ではない。
ここで私は少なくとも二つの問題に直面することになる。


それは「粒度」と「順序」だ。


一つ目の問題は「粒度」。
私が一番初めにプログラミング言語を学習した際、与えられたのは「課題」のみであった(実際はそうでなかったのかもしれないが記憶にないということは存在しなかったということだろう)。
誤解のないように言うが、私はそれが「悪い」と言っているのではなくて、ただ私の場合そうであったというだけの話だ。

ここで、私が「粒度」といっているものを再定義しようと思う。
ここで言う粒度とは、「目的地へ到達するために経由が必要な目標が現れる頻度」である。

「これが作れるようになれれば大体のプログラミングは習得していると言えますよ」という内容の課題を与えられ、ひとまずそれを自主的にこなす。
私は必死に課題をこなした。
なぜならば、その課題を完了することが出来なければ仕事を得ることが出来ないためだ。
結果として、私は2ヶ月間でJAVA言語をなんとか使えるレベルまで習得し、IT業界の現場へと旅立ったのである。
すなわち、私にとってはその「粒度」で問題はなかったのだ。

「何かを教える」という問題に対し、まず必要なのは「どれくらい教えるか」を考えることだと思う。
私の場合、教わったのは「どれくらい出来ればOKですよ」という「目的地」である。
人によっては、それさえ教えておけば後は自主的に自分で道を見つけて目的地へ到達してしまう。
つまり、その「粒度」は極めて粗いものだった。
しかし、これから私が任地にてIT技術を教えるとなったとき、果たしてそれと同じ粒度で良いだろうか?
答えは「NO」だ。

教え方の粒度が粗ければ粗いほど、その習得は教え子の「自主性」頼みとなる。
その自主性を支えるものは、教え子自身が持つモチベーションだ。
すなわち、教え子がその粒度に耐えうるモチベーションを持ちうるのであれば、ゴールだけ与えておけば良い。
しかしそうでないのであれば、細かく中継地点を設け教え子を誘導してやる必要がある。
でなければ、教え子は途中で道を見失い迷子になるか、諦めるかしてしまう。
しかし、手取り足取り教えることが正解でもないような気がしている。
なぜなら私が行く場所は国の省庁であり、教える相手は少なくとも政府機関のスタッフだ。
恐らく私は働きながら、教え子へIT技術を教えていくことになる。
ならば、イチから全てを教えている時間など存在しない。
それに相手は少なくとも大学を卒業している大人なのだ。
手取り足取りなど不要である可能性もかなり高い。

テクニカルクラスが終了して少し経つが、これに関して掘り下げて考えることは出来ないでいる。
ただ、とりあえずは現地へ行き、国民性や現場の空気、教え子自身のキャラクターをみて判断するのが一番なのではなかろうかとも思えてくる。
とはいえ、今のうちから「どれくらいの粒度とするか」のパターンはいくつか作っておく必要があるだろう。


二つ目の問題は「順序」。
教える内容の「粒度」がもし確定し、ある程度の内容を教えなければならないとなった場合、どうしても教える内容に「順番」が発生する。
全ての内容を一気に教えることは不可能だからだ。
まず、何を、教えるべきなのか?
まずはさておき、その言語の習得がなぜ必要なのかを教えるか?
それとも、何はなくとも動くソースコードを与えて動かさせてみるか?
最も簡単なソースコードを書かせてみるか?
言語の文法からいきなり教えるか?
なぜこれらの順序がわからないかというと、これも「教わった経験がない」からに他ならない。
「私がどうしてきたか」を語るのは簡単だ。
だが、前述した通り「それで良いか」どうかは別問題である。

私の場合、課題が与えられて、それが必要となる環境をまずは自分のPCへ設定する。
Oracleってなんだ?よくわからんけどとりあえずインストールすればええんやな。
JAVAってJDKってのインストールすればOKなん?
Eclipseってなに?!
Apacheってなにーーー?!
よくわからんけど全部入れればええんやな?!
とりあえず全部動くようになったけどほんまにこれでええんやな?!

え、あぁ、あー・・・、なんか画面に「Hello World」って表示されたけど、これでやっとソースコード動かせるようになったわけなんやなー。


つまり、課題の中心である「プログラミング」へ到達するまでに「よくわからないけど進まなければならない工程」を経ている。
この工程は一般的に「開発環境の構築」と呼ばれる。
正直に言うと、面倒くさいことこの上ない。
実際プログラミング初心者がプログラミングの勉強をするうえで壁の一つとなるのが、この「開発環境の構築」である。
私が任国で教えるとなるときも、これに関しては細心の注意を払う必要があると感じている。
つまり、ホントのホントにはじめから、つまり開発環境の構築からやらせるのか、もしくはクソ面倒で挫折しがちな開発環境の構築を教えるのはひとまず後回しにしてとりあえず出来上がってる環境を与えてソースコードを教えるところからはじめるのか。

最終的に全て教えることになるといっても、その順番を違えると所々内容の理解が浅くなってしまったり、興味を引き出しきれなかったりすることもあるだろう。
これに関しても、教える内容の「アウトライン」だけは事前に想定しておいたほうが良いのかもしれない。


上記をまとめると、私がこれからしなければならないタスクは
  • 教えることになりそうな内容の粒度をパターン化する
  • パターン化した内容の順序を考える
だ。

はい、これ完璧に今年の9月にあった技術補完研修で習いました。
ここまで書いてようやく思い出しました。両国の日暮さんありがとうございます。


私のキリバス出立の日は2016/1/12に決定している。
すなわち、今から換算しても残り1ヶ月ちょいくらいしかない。
その間に全てを用意するのは困難であるのは承知の上だ。
だが、できることはやらなければならない。
でなければ、任国の人々に失礼というものだ。

0 件のコメント:

コメントを投稿