ペアプログラミングの時代

1年ほど前、ペアプログラミングについてのエントリとか読んでいたが、当時はまだまだそのパワーを理解できなかった。
が、フレームワーク導入や開発環境の工夫でそろそろいけるんじゃないかと思って、こないだのプロジェクトでペアプログラミングをやってみた。

やっとまともなペアプログラミングを体験したので、思った事を書いておく

どんな感じでやんの?

  • プログラマ2人で1台のPC、1台のキーボードで開発は行う。
  • キリの良いところか20-30分交代ぐらいでキーボード担当を切り替える。
  • リサーチ用に1台ノートPCがあると便利かもしれない。キーボード担当してない人が触る用の。
  • キーボード担当を「コーダー」、見てる奴を「ウォッチャー」と呼ぶことにする。

三人寄らなくても文殊の知恵

  • 2人が同一のスキルレベルでないとしても、お互いをフォローできるので、アウトプットとしてのコーディングのレベルは高くなる。
  • アルゴリズムの妥当性やパフォーマンスについて知識を交換しあいながら行えるので、大変勉強になる。
  • OJTでやるのに大変よろしいかもしれない。

工数が無駄じゃね?

  • マネージャ的立場からみると、別々に作業するより工数が倍必要なように見えるが、実はそうでもない。
  • いまどきのフレームワークコーディングの場合、キーボードを叩くよりマニュアルやAPI Docを眺めている時間の方がはるかに長いケースがほとんどだ。
  • また、仕様を逐次討議していくことで仕様認識の一致や、穴の発見などが行えるので、最終的なアウトプットに対しての工数は2人でやっても1人でやってもほとんどかわらない。そして成果物のレベルは明らかに高い。

工数のコントロール

  • ビジネスコーディングの場合、完璧を目指すより要求仕様に対して妥当かどうかの判断が常につきまとうので、自己満足的なコーディングに手数をかけないようになる。
  • 一人でやってるとハマりがちなスパイラルにおちいらないのも良いところ。

ケアレスミスの予防

  • コーダーとウォッチャーのの立場の違いなのか、ウォッチャーでいると、プログラムや仕様を俯瞰的に見られるのでミスを発見しやすい。
  • typoからアルゴリズムミスまで見抜けるので、ウォッチャーはしっかりとコーダーが何やってるかを見ておく必要がある。

気が散らない

  • そういう環境をきちんと整える事も重要だが(例えば電話の取次ぎを一時拒否とか)、やってる最中にmixiやらtwitterやらtumblrの誘惑に負ける事が無いので作業自体がとても進む。
  • お互いに監視してるようなもんだからwこれはいいと思った。僕たち意思が弱いんで><

時間を区切る

  • 見られながらのコーディングは何かと疲れるので、適宜休憩を挟んで行うほうが良い。
  • 休憩タイミングはあらかじめ決めておくと良い。
  • あと、明確に当日の達成目標をあらかじめ決めておいて、終わったらペアを解いてそれぞれの作業に戻る(または即帰る)つもりでいると良い。ダラダラやってしまいがちなので、目標の見える化は必須といえる。

ペア☆プロがいいので〜す♪→結論

その他にもペア作業でやったほうがいいんじゃないかと思うのがいろいろある。
今後のビジネスワークフロー構築時に検討しようとオモタ。