2012年08月29日

ペアプログラミングについて

このエントリーをはてなブックマークに追加
5年ほど前に「1日中ペアプロしかしないガチペアプロ」のエントリを書き、
その後も社内でも社外の開発合宿等でも
数えきれないほどのペアプロを行ったり見たりしてきたが
その中で新たに気づくこともあったので、
エントリを書こうと思う。

■ ペアプロの時こそ他人のコードを尊重する
ペアプロは、ドライバーとナビゲーターとが
二人三脚で一つのソフトウェアを作り上げたり、
磨き上げたりしていく行為だ。

二人で作業するので、ペアプロとは会話する行為でもある。
そして忘れてはならないのは、

ペアプロでの会話は聞こえている

ということだ。

バグ修正やリファクタリングの際、
既存のコードを洗練させる前向きな目的で

「この箇所、ちょっとわかりにくいね。これだとバグが出やすいよね」
「ここは本当はこういう風に書いた方がきれいだね」
「この命名は誤解を招く可能性があるから、名前を変更しよう」

というような会話をすることがある。

さらに、名前から想像しにくい動きをするメソッドがあったり、
変数名の名前が抽象的で何に使うものかわかりにくかったりするとすると、
つい

「うわ、こんなのわかるかよ!」
「いやー、これはちょっと・・・・・・」

などと言ってしまうこともある。

ソロでプログラムしている時にはこれらはすべて心の声として
自分にしか聞こえないものだが、
ペアプロでは周囲のチームメンバーにこれらの会話が
丸聞こえである。

こうした発言は、ペアのいずれかが
該当箇所の作者の場合にも相手を傷つける場合があるが、
該当箇所の作者がドライバーでもナビゲーターでもなかった場合、
会話が完全に聞こえないことで想像が膨らむ効果もあり、
「自分のコードがペアの二人にdisられてる」
という心理状態を生み出しやすい。

もちろん、わかりやすく、いつでも誰でもメンテナンスできるコードを
作り上げて行くためのペアプロなわけだが、
より良いコードを目指して軽い気持ちで発言したことが
増幅してネガティブに伝わることがあるので注意が必要だ。

先日、Twitterで「ひよコード」について書いたが、
この言葉はペアプロで進めていたプロジェクトの
ふりかえりで生まれたものだった。

ペアプロには優しさが必要である、と言えるし、
ペアプロは優しさを育む、とも言える。

ペアプロの半分は優しさでできているのだ。

■ 「デキる人ほど仕事が遅れる」現象
ペアプロを導入しているチームでは、
「デキる人ほど仕事が遅れる」現象が発生することがある。

「デキる人は頼られるのでなかなか自分の仕事に着手できない」
というのは一般に良くあることだが、
ペアプロでは「誰かとペアを組んで良い」という前提がある分、
優秀な人にペアのリクエストが殺到し、この傾向が顕著になりやすい。

もちろん、中にはすべてのペアプロリクエストに対応しつつ、
なおかつ、いつ終わらせているんだろうと思うスピードで
自分のタスクもこなし、しかもいつの間にかさり気なく
Facebookで大量のいいね!もつけていた、という人もいる。

これは個人のスキルとしては大変素晴らしいことなのだが、
一部の人に無理を強いることになる可能性もあるし、
プロジェクト管理としてはスケジュール面でのリスクがある。

こうしたリスクに対処するため、
ペアプロを導入するチームでは
以下のような事項を検討することが望ましいだろう。

(a) ペアプロでよくパートナーに指名される人はアサインを7割くらいに押さえておく。
(b) さらにその人は一日のうち半分は自分のタスクに時間を使えるようにする。
(c) ペアプロのリクエストを出す際、その相手がベストだと思えたとしても、
  本当に別の人ではダメなのかを振り返って再検討することを習慣づける。
(d) 組織として、人事考課にペアプロでの貢献を踏まえて考課する。


ペアの相性としてどういう人とどういう人が合うのか、
合わない場合どうするのか、など、他にも書こうと思っていたことがあるのだが、
長くなってきたので、とりあえずここまでで。

ペアプロを続けてきて一番気になった2点ということで、
以上、5年前のエントリへの補足エントリでした。



ペアプログラミング―エンジニアとしての指南書
ローリー ウィリアムズ ロバート ケスラー
ピアソンエデュケーション
売り上げランキング: 214217






Check このエントリーをはてなブックマークに追加
lalha at 18:44 │プログラミング  │Comments(0)TrackBack(0)

トラックバックURL

この記事にコメントする
(スパム対策のため、英数字のみからなるコメントは自動削除されますのでご注意ください。)

名前:
URL:
  情報を記憶: 評価: 顔