satococoa's blog

Web や iOS アプリを作るエンジニアの日記です

ペアプロワークショップに参加してきた

感想などのメモです。

ペアプログラミングとは

まず始めにペアプログラミングについての説明を受けました。
ペアプロの利点
  • 集中しやすくなる
  • より良い実装を議論できる
  • 詰まったときに相談できる
  • 全体像とやるべきことを見失わない
  • コードを共有できる
  • 知識やノウハウを交換できる
どうやったらペアプロがうまくなる?
  • 自分に自信を持ち、相手を尊重する
  • 声を出す
    ドライバー(コーディング役)は今から自分がやろうとしていることをぶつぶつと声に出しながら作業をし、ナビゲータ役はツッコミを入れるイメージ、など
  • 頻繁に、気軽に交代する
  • 「練習すると上手になります」
はじめに
  1. あいさつをしましょう
  2. ゴールとやることを決めましょう
    このときに「どうやるか?」といった道筋も話す
    やることを決めるとき、やることリストに書き込んで、「見える化」とリストの「共有」を行う
  3. 役割を確認しましょう
ペア作業中
  • ドライバーがコードを書く
  • 何をしてるか、常に共有し続ける
  • タスクはひとつずつ片付けて、確認する(チェックリストなどを使って)
  • どんどん役割を交代する
  • ドライバー:目の前のコードに集中
  • ナビゲータ:ドライバーを支援、全体像や次のステップを考える、タスク一覧に書き足したりする
一通り説明をいただいた後で、質問タイム。参考になった質問は、「調べものをしたくなったときにどうするのか?」というもので、「調べものをする、ということもタスク一覧に追加しておいて、とりあえずペアプロをいったん中断してそれぞれ調べてから再開する」ということも一つの方法として挙げられていました。

ペアプロ開始

まずはペア分けです。たしかJava組4人、Ruby組8人、だったと思います。さらにRuby組は「Vimの人」と「Vimじゃない人」という分け方で4:4に分かれました。(emacs派の方には屈辱的な言い方ですねw)そこからペアに分かれて、いざ開始です。
与えられた課題は、ボーリングのスコア計算というものでした。第1問から第4問まであり、第1問は単純に(スペアやストライクを考慮に入れずに)スコアを合計する関数を作るだけ、というところから徐々に仕様を付け足していく、という課題です。ペアプロの課題としてだけではなく、TDDの課題としても面白いものでした。
実際、他のペアからも「まずはテストを・・・」のような言葉がちらほら聞こえてきました。僕のペアも実装の進め方を確認し、まずはRspecのテストから取りかかりました。
実装中はそれぞれのペアが声を出しながら作業していたのですが、ペアプロの効能か不思議と周りは気にならずに、かなり作業に集中することができました。

まとめ(World Cafe?綴りに自信なし)

作業が終わった後は、2グループに分かれて感想や反省などを言い合う時間となりました。僕のグループで出た意見は以下のようなものでした。
  • 集中することができた反面、休憩を意識して入れないとがんばりすぎてしまう。
    キッチンタイマーを使うなどしてメリハリをつけよう。(ポモドーロテクニックが有効。参考図書:アジャイルな時間管理術 ポモドーロテクニック入門(amazon.co.jp)
  • 互いの技術レベルが近いよりは、差がある方がやりやすい?
    実装方法の考え方の違いで対立しないですむかも。ただし技術レベルが違う場合もドライバー、ナビゲータ役は交代でやるのが望ましい。上級者がドライバーをやる場合、「技術を見せてあげる」ということにも大きな意味がある。
  • ナビゲータ役が難しく、2人とも目の前の作業に没頭してしまい余計にハマる。
    練習していくしかない。
  • 楽しかった。テストに通ったときの喜びが一人でやるよりも大きい。
  • 相手の作業環境が気になる(Vimプラグインとか・・・)
    これは初対面同士だから、というのもあるかも。会社でやったりする場合はお互いのことを既に知っているから。
その中でも僕が特に感じたのはナビゲータ役の難しさでした。僕のペアも実際、2人とも実装の方に夢中になってしまって、テストケースを間違える、というヘマを2回も犯してしまいました。
逆に、作業を楽しめること、集中できることはかなり大きなメリットだと思います。テストケースにパスしたときの喜びは、TDDを進める上でモチベーションになりそうです。

個人的な感想

今回ペアプロに初めて挑戦したのですが、これは今後ともぜひ機会を見つけて続けてみたいと思いました。懇親会などでもお話させていただいたのですが、僕は今ちょうど会社で「テストをしっかり書くような文化を根付かせよう!」と思い活動しているところなので、TDDの文化を広める手段として有効に使いたいなぁと思います。
あとはあまり関係ありませんが新型MacBook Airの所持率が高かったです。参加者のうち4,5人がMBAでした。サイズ、スペック、値段ともに優れたマシンですよね〜。
ということで、スタッフの方々、参加者の方々、どうもありがとうございました。とても良い経験をすることができました。