この記事は日経ソフトウエア2009年2月号(2008年12月24日発売)に掲載した,特別レポート「はてなインターン日記(下)」(著者:伊藤直也氏)の再掲です。再掲にあたって一部編集していますが,記述内容は執筆当時の情報に基づいています。

 この特別レポートは,筆者が勤務するはてなが,大学生や大学院生の方を対象に開催した「はてなサマーインターン2008」のまとめです。就職を少し先に控えた学生の皆さんが,はてなの京都オフィスで,4週間にわたって技術的なトレーニングや,実際のアプリケーション開発を体験します。期間は4週間です。

 2009年6月12日に掲載した上編では,前半の2週間,はてなスタッフが講師となって,はてなでの開発に必要な知識の講義と,それを確認する課題の様子を書きました。最終回の今回は,後半の2週間。インターン生がはてなの開発現場に所属して,はてなのシステムに何らかの機能を追加します。

 前回の本連載で述べた通り,このインターンシップの目的は,参加した学生に「成功体験を持ち帰ってもらう」ことです。はてなでの成功はサービスをリリースして,ユーザーに受け入れられること。そのため,前半の2週間ではてなが教えられることは,すべて学生に伝えました。その代わり,後半の2週間では学生は社員と同等の品質でシステム開発をしてもらいます。

 学生の開発成果物は,はてなのサービスとしてリリースします。機能追加の直後から,ブログなどを通じて返ってくるユーザーのフィードバックを得て,自分たちが作った製品が受け入れられたかどうか---これを肌で感じてもらうまでが,はてなのインターンシップです。

まるで新人配属,すぐに開発目標を設定

 はてなの社内では,元々複数の開発チームに分かれて開発を行っています。例えば,はてなダイアリーを開発するチーム,はてなブックマークを開発するチーム---といった単位です。前半の講義と課題の2週間を終えたインターン生は,これらのチームに所属してもらいます。

 最初にインターン生に,各開発チームの「リーダー」からのプレゼンテーションを見てもらうことにしました。リーダーはいわば管理職。チームのマネージメントを担います。プレゼンテーションの内容は,チームが扱うシステムの概要や,メンバー,課題などです。

 これを受けてインターン生から所属したいチームの希望を受け付け,なるべく希望に添うように配属します。インターン生は各チームに2人以上配属するようにしました。チーム内で孤立しないことはもちろん,他人とのチームワークで問題解決するプロセス,意義などを学んでもらうことがその狙いです。

 配属が決まったらチームの「ディレクター」と,開発するものを相談して決めます。はてなの各開発チームには,必ず一人以上のディレクターがいます。その役割は各機能の取捨選択や主な設計。誰のために,何を,どのようなスケジュールで作るのかを決めます。

必ずペアプロ,経験豊富なスタッフと一心同体

 このインターン生によるシステム開発では「必ずペアプログラミングで開発するように」と指示を出しました。

 ペアプログラミングは,アジャイル開発手法の一つで,二人で1台のPCに向かってプログラミングするものです。よくペアプロと略されます。ある一人がコードを実装している間,もう一人は同じ画面を見て,間違いを指摘したり,詰まった場合に相談に乗ったり,アイデアを提供したりします。その役割は1時間程度で交代します。特に,短期間で集中して開発するときには効果的です。

 ペアプロはインターンシップに向いている理由がありました。経験の浅い学生が実際に動いているアプリケーションに機能を追加するので,ミスは最小限に留めたいところです。重要なところは経験豊富なスタッフとペアプロすることで,重大なミスが混入する可能性を低くできます。インターン生にとっても,目の前の同じ問題を,同じ時間で共有しながら,まさに実際の開発を“目の当たり”にできるわけで,学習効果も高いでしょう。

 とはいえ,非常に疲れるという欠点もあります。自分の動きを常時見られるのは,日常にはないプレッシャです。少し疲れたので息抜きにWebサーフィンでも…というわけにもいきません。このあたり,慣れないインターン生はなかなか調整が難しいところなので,こまめな休憩も指示しました。