最近あるインターンが始まりました。Guildというインターンです。これは僕のような入社して日の浅いエンジニアが、学生やそれに準ずるエンジニアに対して実践型の育成を行なっていくというスキームを持ったプラグラムです。
就業型実践育成プログラム「Guild」|VOYAGE GROUP インターンシップ ~ミチをソウゾウせよ~ http://voyagegroup.com/internship/guild/
こういうインターンの場合、学生一人ひとりに合わせて方法を変えていかなければなりません。一人ひとり癖がありますし、スキルも異なります。また事業に対する理解度も最初は浅いでしょうし、所属するチームのやり方も様々です。そんな中でもフレキシブルに、かつ着実に学びを得られるような環境をつくる、ということについて最近は考えています。
育てる、と言いつつ僕は育てられてばかりです。不思議な事ですが、大学院にいる時よりも学習ペースが上がりました。それは時間に対して自分でしっかり管理するようになったからとか、評価してくれる人がいるからだとか色々な要因がありますが、総じて環境による影響は大きいです。同じような関心ごとをある人に囲まれて、日々それとなくご飯を食べたりお酒を飲んだりしながら技術の話をして、帰り道や運動している時や帰って風呂に入っているときにふと「あ、あそこはもっとこうすればよかったなぁ」なんて思って次の日にとりかかるのです。今もそうです。こうして帰宅して文章を書きながら、あのときこういうふうに問いかけていたら良かったのかな、なんてことを思い返しています。
前に出て講義形式で教える時と、対話しながら教える時では、今はやり方が異なります。対話しているときは特に問いかけていることが多いです。ゲーテとの対話 ほど諭すことができるほど高尚ではありませんし、アプレンティスシップ・パターン に書いてあるほど定型的なやり方を心得ているわけではないのですが、人によって問いかけが多かったり少なかったりします。たとえばとあるMVCフレームワークに関するチュートリアルをやっていたとして、MVCに関して理解していることを確かめようと思った時には、大体頭の中に以下の様なツリーを描きます。
- なぜMVCの構造が必要なのか
- Model View Controllerそれぞれの役割を把握しているか
- 複数人で開発する場合はどうか
- MVCの構成は自分の感覚とズレはないだろうか
- それはもしかしたら正常かもしれない
- HTTPリクエストをなぜControllerで捌くのだろうか
- そもそもHTTPリクエストには何が含まれているのだろうか
- ControllerのプロパティにModelインスタンスの参照を渡すのは妥当だろうか
- なぜModelでデータの操作をするのだろうか
- そもそもModelによって抽象化しているものは何なのだろうか
- このチュートリアルではModelにどのような工夫がなされているだろうか
- Viewに表示する際にどのようなフローを経ているだろうか
- そのフローは合理的だろうか
ただ、もちろんこんな一例にすぎないことで完結するものでは当然あるわけもなく、日々少しずつ続けていくということをしています。逆も然りで、僕も気がつけば教わっていたという場面が多々あります。そういうとき、「ああ、巧いなぁ」と感じたりもします。教えているようでなくて、気がついたら本人が気がつく環境が作られていた、ということなのです。僕ももう少しそういう環境づくりをうまくできたらなぁとよく思います。
前も一度書いたのですが、「誰のために何ができるのか」というのはやはり僕の中で日々の大きな部分を占めている関心ごとなのです。相変わらず変わらないなあ、などとこの文章を書きながらまた思い返しています。