SOHOをしながら講師をする
はじめまして。まっつんと申します。
北海道は札幌市で、Webシステムの開発を請け負っているSOHOエンジニアです。
この4月から、札幌市内の某情報系専門学校で講師をすることになりました。
SOHOでWebシステムの開発を請け負いながらの講師生活ということで、いろいろと苦労があったり、開発の仕事をしているだけでは得られない様々な「気付き」もあります。
ここでは、システム開発の現場と教育現場とのギャップや、若い専門学校生との会話から気づいたことなど書いていきたいと思います。
SOHOをしながら非常勤講師で教壇に立つというのは、不規則になりがちな在宅での仕事にメリハリを付けることができ、不安定になりがちな収入をある程度底上げしてくれる効果もあり、自分自身にとってはかなり有益なものでした。
それだけでなく、システム開発をしているだけでは気付けないような、Webサービスの利用者としての若者たちの様子や、IT技術者の教育のあり方などについて、さまざまな思索の糧を提供してくれます。
わたし自身は、学生時代や大学に籍置いていた研究生時代に実習の助手をしたり、ある会社の社員教育でPHPを教えたことがあるぐらいで、教育についてはほぼ素人です。
一番初めの授業で、学生たちにわたしは宣言しました。
「教え方はあまりうまい方ではないと思いますが、まただま現役の技術者ですし、フリーランスとして複数の現場を経験してきているので、できるだけ実務的な話や現場の厳しさと楽しさを伝えるのがわたしの仕事だと思っています」
こう言った瞬間、二十数名の学生たちの一部から、期待を込めた視線が送られてきました。
IT技術者の仕事がきつくて報われないと言われ、敬遠されがちな状態にある昨今、こうした反応が返ってくることは意外でした。学生たちの多くはいわゆる「ゆとり世代」で、「学級崩壊」が問題視された時期の子供たちです。
そんな彼らが、技術者として世に出たときに、行き詰まりの感じられるIT業界の中で生き残り、新しい業界のあり方を作っていけるような技術者に育っていけるようにしたいという、少々大げさな目標を持ってしまいました。
わたしの試行錯誤も含めて、授業の方法などについても、拙い文章ながらここに書いていきたいと思います。
さて、さっそくですが、担当することになったのは、専門学校2年生を対象としたJavaの基礎を教える授業です。
学校側から教科書は指定されてきており、それに従って授業を進めれば大丈夫というお話だったのですが、最初から急に不安になりました。
まず、このJavaの基礎科目で作るプログラムはコマンドプロンプト上で動作せるCUIアプリケーションのみとなります。
考えてみれば、今の10歳前後、平成生まれの世代というのは、物心をついたときにはWindowsが一般化しており、そもそもがCUIのアプリケーションなど見たこともないという学生がほとんどです。
パソコンが好きで情報系の専門学校に来ている学生であってもそうです。わたしぐらいの世代(現在30前後)であっても、中学生ぐらいからパソコンに触れてきていて、たまたまマニアックな嗜好(しこう)がある者だけが、PC98シリーズなどでDOSコマンドに触れていたという程度でしょう。
基本的なDOSコマンドも使えないし、そもそもが「コマンドプロンプトってなんぞや?」という状態なわけです。
それは言い訳なのですが、プログラミングを学ぶ際には、最初が肝心です。
興味が持てない授業でいきなりやる気をそいでしまうことだけは避けたいと思っていたのですが、地味な上になんだかよく分からないCUIのプログラムを書くなどという話になると、「最初の時点で全滅もありうる」と思ったのです。
そこで、授業のやり方と課題の出し方に一計を案じました。
1回の授業は以下の3つのパートで構成するようにしました。
- 講師が作成したPowerPointを使っての説明
- 教科書を使っての説明
- 課題のプログラムの作成
授業は週2回、1回3時間ですが、前半で1と2、できるだけ課題に取り組んで実際にプログラムを書く時間を長めに設定しています。
PowerPointを使った説明は教科書の内容を先取りしたり復習したりすることもありますし、「開発現場でよくある問題」や学生が興味を持ちそうなIT関連のニュースなどを取り上げたりします。
ポイントは3番目の課題のプログラムです。まず、その日に教科書を使って説明した内容について、実際に確認するためのプログラムを打ち込んで実行させます。
次にそのプログラムに修正を加えたり、参考にしながら少しだけひねったプログラムを書いてみます。
3番目は必須にはしていませんが、大雑把な指示だけで、自由にプログラムを書いてもらいます。
この3番目の応用課題のテーマを「ゲーム的なモノ」にすることにしました。
CUIのアプリケーションに馴染みが薄く、普段からグラフィカルなインターフェイスに慣れ親しんだ学生たちに、「CUIだって面白い」と言うことを理解してもらいながら、楽しくプログラムを学んでもらうための仕掛けです。
内容は「計算ゲーム」だったり、「迷路ゲーム」だったりしますが、詳しい仕様は指示しません。とりあえずの形で動くものができた学生には、「自分で工夫して面白いものにしてみてください」と指示します。
わたしとしてはかなり冒険的な試みだったのですが、これが結構当たりでした。
多くの学生達が自分なりの工夫を加えて、この課題を出してから数度目の授業では、気が付くと授業の後半はまるでゲームコンテストのように盛り上がってきました。
中には「迷路の中を移動できるようにする」という曖昧な指示を逆手にとって、「お互いに迷路を作りあって、先にゴールした方が勝ち」という形の対戦型のゲームにまで仕上げてきた学生もいました。
必ずしも全ての学生がゲームに興味を持っているわけではありませんが、プログラミングの実習のテーマとしてゲームは単に関心を持ちやすいというだけでなく、どんなに貧弱なインターフェイスでも工夫の余地が大きいという側面があって、自発的な工夫を積極的にやりたくなるものなのかもしれません。
今は先に挑戦した「計算ゲーム」とあわせて、「計算クエスト」という形で、ダンジョン型RPGライクなものを作ってもらっています。
ゲームとしてのシステムも、マップを提示してその中を自由に移動できるようにした生徒もいれば、昔のダンジョンRPGのように、自分の周囲の様子しか分からないもの、まったくの暗闇状態で、壁にぶつかりながら、マップを描いていくものなど多種多様です。
一方で、学生たちの書いてくるソースコードはまだまだJavaらしいオブジェクト指向を理解してのものではありません。
やっと、クラスなどのオブジェクト指向の概念を説明し始めたところなので当たり前ですが、いままで書いてきたソースコードをオブジェクト指向的な形に変えていくことで、Javaの基礎概念を理解してもらおうと考えています。
次回以降は、教科書の使い方や、学生たちのプログラミングの学び方の問題について書きたいと思います。