大学の授業でペアプロ・モブプロをやってみた話
こんにちは。最近大学でサーバサイドのコード書いたりモバイルのバグ探ししまくったりドキュメントやガイドラインを生やしたりインフラの設定生やしたりコードレビューしたりリーダー業したりスクラムの導入をしてるchikuwaitです。
いつもの前提
前回のブログ(学生だってちゃんと開発したい!大学の授業でスクラムを導入しようと思った話 - Man page of CHIKU_WAIT(2))でも書いてありますが、 公立はこだて未来大学では3年生の必修授業で「プロジェクト学習」と呼ばれる学科・コースの枠を超えた通年の開発演習があります。この授業では様々なテーマで最大15人程度のチームを組んで1年間取り組みます。詳細はこちらを参照。www.fun.ac.jp
前回同様、リーダー業やってて色々な開発手法だったり入れてみた話をしていこうかなと思います。
ペアプロ・モブプロについて
ペアプロとは
ペアプログラミングのことで、名前のごとくペア(2人)でプログラムを書いていく開発スタイルです。ペアプロにはドライバとナビゲータという役割があります。 ドライバは実装の細かい部分を考えながらナビゲータと一緒にプログラムを完成させることに集中し、ナビゲータは一緒に考えたりコードレビューやバグチェックなどをします。 また、ドライバとナビゲータは一定期間でローテーションしていきます。
モブプロとは
モブプログラミングのことで、ペアプロの人数をもう少し増やして、4〜5人程度のモブ(群衆)でプログラムを書いていく開発スタイルです。ペアプロ同様にドライバとナビゲータが存在し、一人がドライバ、残りはナビゲータです。
ペアプロ・モブプロに至った理由
チームの状況
プロジェクト学習では基本的に成果発表などの授業スケジュールの関係で後期の9月末〜12月第一週が開発期間となるような事が多いです。とはいえ、メンバー全員が授業でやらないようなモバイルアプリやサーバサイドアプリの開発スキルを持ち合わせていてすぐにサービスの開発!!!みたいなことはほぼありえないので、基本的にどのチームも夏休み期間でその分野の勉強をするようなことが多いです。 私達のチームでも開発経験が少ない学生には夏休みでSwift、Kotlin、Ruby(Rails)について個人での開発経験が多いメンバーが支援しながら本を一冊やり終えたりしながら技術のキャッチアップをしてもらいました。多分他のチームよりは頑張ってやってたと思います。
しかしながら、いくら本を何冊かやったところで開発めっちゃすぐにできるようにはならないですし、一人である程度書けるようになるには時間がかかります。そこで僕としては個人で色々アプリ書いてきた人の知見を直接教えたりしながら全員一定レベル(一人である程度機能追加ができるレベル)まで成長できるような仕組みがほしいなと考えていました。そこで試しにペアプロ・モブプロを導入してみようと考えました。
何を求めてやったのか
僕としてペアプロ・モブプロに求めたものは以下の通りです。
- メンバーの教育
- ソースコードの共有初秋
- レビューコストの削減
- 品質向上
上でも書いたメンバーの教育を第一目標として、直接レビューをすることで一人である程度実装ができるようなるくらいを目標にしました。 また、複数人でコードを考えることでソースコードを共有所有していきたいと考えました。それから、どうしても自分である程度書ける人や開発をリードする学生にソースコードのレビューが集中しがちなので、リアルタイムなコードレビューはレビュー待ちプルリクエスト渋滞の解消なども期待しました。
やってみた
授業でペアプロ・モブプロやるときのルールとしては
- 1時間ごとにドライバ交代
- できたら褒めたり拍手したりハイタッチ
- 強い口調や不快にさせる言動はNG
- お菓子食べたりしながらリラックス を設定しました。
本当はもっと大きなモニターを使いたかったんですが教室の関係上無理でした…。
実際やってみてどうなった
授業でモブプロ・ペアプロを導入することで、メンバーの中ではわりと好評だったりしました。どうしても自分ひとりで躓いて解消できない…みたいなことは学生多かったりしたので三人寄れば文殊の知恵というわけではないですがうまくコミュニケーション取りながら詰みポイントを解消していったようです。知識が共有できて良さそうでした。あと結構意外だったのはペアプロ・モブプロをすることで生産性が少し下がるかなと思っていましたが、殆ど変わりませんでした。一人で躓いて時間を浪費することが減ったからかな?
ただ、頻度は結構難しいところで、最初は週1でやっていましたが、どうしても一人でもくもくする時間もほしいという声もあったので隔週にしたりしながら頻度の見極めをしていく必要があるかなと感じました。最終的に私達のチームでは特に時間を設けることはせず、必要なタイミングで自己主張していくと自然と人が集まってペアプロ・モブプロが始まるという感じのスタイルになっていきました。
最後に
ペアプロ・モブプロは全員をある一定レベル以上にする育成方法としては結構イケてるのでは?と思いました。ただ、乗り気ではないメンバーもいるのでそこは上手くチーム内でどうやっていくかを最適化できれば良さそうだと思います。ぜひ大学の開発演習でやってみてください。何よりも楽しいので。