
「ペアプログラミング」における「コミュニケーション問題」 38
ストーリー by hylom
1+1は……・ 部門より
1+1は……・ 部門より
taraiok 曰く、
オーストラリアのソフトウェア会社Atlassianがエイプリルフールのためにパロディー動画を作った。ネタは2人のプログラマが1台のPCでソフトウェアの共同開発を行う「ペアプログラミング」。動画ではプログラマーがもう一人の膝の上に乗り、二人同時にキーボードを叩くというシュールな光景が映し出されている(Atlassianの動画、本家/.)。
もちろんこれはジョークなのだが、The Wall Street Journalではペアプログラミングの難しさについても言及されている。本来のペアプログラミングは、コードを書く役割の「ドライパー」とバグがないかチェックする「ナビゲート」の役割に分かれ、書かれたコードを作ったそばからチェックしていく、という点が特徴だ。これによってプログラミングのエラーを減らすことができ、一人で作業しているとありがちな、Webサーフィンで時間を潰してサボることもなくなると言うことらしい。ペアプログラミングの熱烈な支持者で、Facebookに所属するプログラマーKent Bec氏はペアプログラミングの効用について「コミュニケーションが深くなり、言葉を使わなくとも相手と意思疎通ができる」と言う。
いっぽう、必ずしもペアプログラミングに効果があるとは限らない。WSJの記事では、ドライバーが間違いを犯してもナビゲート役が指摘せず、そのナビゲート役がドライバー役に変わったときに問題の個所が黙って修正されたという経験を持つWill Sargent氏という人物のコメントも掲載されている。氏はその後その職場を退職したそうだ。
ペアプログラミングは理論だけの夢物語なのか、それとも本当に効果があるのだろうか?
体験談 (スコア:5, 参考になる)
昔数回ペアプログラミングをした事が有りますが、そのとき感じた事をいくつか。
ちなみにパートナーを状況を見て適宜変更したりしてました。
ドライバーとナビゲーターの技術レベルが離れすぎると出力は下がります。
(但し本来の出力向上目的でなく、教育を期待する場合は適していると思われます)
性格的相性は考慮しないとそのペアの効果が落ちます。(物腰や言い方を気にする人は結構います)
プライドの高い人や、劣等感を感じやすい人はペアプロに向きませんね。
私は一回り下の人間とペアプロはすごく楽しかったけどなぁ。
新規コードよりもリファクタリングの方が効果は高かったです。
(私がしきった時は、新規コードや技術的調査は、一旦シングルでそれぞれ疑似コードや調査結果を書き出して、
ペアで検討しつつ実装してました)
参加者自身にペアプロに対する理解が必須だと思います。(思いつきだけでヨーイドンしても効果はほぼないでしょう)
私の時は各人が日頃からXP他、仕事の仕方についての討議をしているような意識の高い環境下だったので、
ペアプロで実績作って認めさせてやるぜ!ってのもありましたが。
管理者がペアプログラミングを理解し、支援してくれないと厳しい。
よく言われるのが人件費が単純に増えるじゃーん(いや倍用意しろとか言ってないから) or
2人で1台じゃ出力1/2じゃーん(ペアがシングルと同等かより良くなる事を説得するのに苦労した。最終的にPgリーダーが俺が責任取るからやらせて!でGo)
副次的効果
ワインバーグかな? 職場で趣味で皮加工をしている人の臭いがどうのこうのって話がありましたが、
ペアプロ始めてから人員の服装や臭いに関しての意識があがりました。
また各自机の上の片付けが自然と進みましたね。
パートナーを適宜変更していたので、各自の持つノウハウや知識がチーム全体に伝播していきました。
総じて効果はありますし、実際スケジュールも遵守した上で品質的にもよいものができたと自負しています。
#残念ながら後にチームは解散分割のうえ、新チームの進行は旧態依然に戻るっていうね
#長文すんません
#へたれなので当然AC
Re:体験談 (スコア:1)
>(思いつきだけでヨーイドンしても効果はほぼないでしょう)
をみて、「エドワード・ヨードン意味ないかな。絶対読んだほうがいいと思うんだけど」と
思ってしまいました。
Re: (スコア:0)
ペアプログラミング大変興味あるので、主に物理的なことなんですが、
ぜひお教えください。
・PCやキーボードの数やレイアウトはどうされましたか?
一人使いの、画面と面と向かった体勢が変わったり、画面からの
距離や角度が変るともろもろ違和感がでると思われますが
どうだったのでしょう。フォントは大きいものに変えますか?
それとも二人並んでリモートデスクトップ的なもので?
・二人の好むエディタが異なる場合はどうなるのですか?
これは役割を固定すれば問題ないのかな? 「ちょっと貸してみろ」ってな
展開になったらどうなるんだろ。
プログラミングに限らず、他人の操作を眺めて自分の知らないショートカットや
操作テクニック・ツール他学ぶことは多いと思うんだが、なかなか流行りませんね。
Re:体験談 (スコア:1)
体験談を書いた者です。
PCは二人で1台(ドライバーアカウントでログイン)、机の3段引き出し部が別な机なので、それを移動して二人分椅子を並べるスペース確保(ナビゲーターの位置は左右任意)。
リモートデスクトップで2台は個人的には推奨しません。同じコードを同じタイミングで見ている事が重要かと。
体制によってはナビゲーターが身を乗り出すような事にもなりますが、その辺りは各ペア調整しつつやってました。
エディタはドライバーが使いたいものを使用、フォントはペア次第。
基本的にペアを進めるのに問題ないように、それぞれ調整してねという感じです。
ちなみにエディタをはじめ、ツール類もこれがいい、あれが便利って形で伝播していきましたね。
>プログラミングに限らず、他人の操作を眺めて自分の知らないショートカットや>
>操作テクニック・ツール他学ぶことは多いと思うんだが、なかなか流行りませんね。
様々な小さいけど有用なTipsが伝播していくのは見てて楽しかったです。
後いろいろ補足
管理者側、ペア側両方体験しましたが、管理者の時は各ペアの状況を毎日細かくチェックしてました。
うまくいってないペアの調停や、詰まっているペアがいたら別の作業をふって詰まっている件については調査するとか、
とにかくペアの進行を停滞させない事を心がけました。
後ルールとして、チーム内コーディング規約の遵守、ドライバーとナビゲーターは日替わりで交代、2時間ごとに10分以上の休憩、4セット8時間強超えたらその日の業務終了とかですかね。
真面目にペアを一日やると本当に疲れます。それだけ集中していたという事ですが。
お願い後ちょっとだけやらせて〜にはロスタイム5分&コミット禁止てな感じで。
ペア側では、ドライバーの時は最初のうちはナビゲーターの確認スピードと合わせる為ゆっくり目に書いていって、互いになれてきたらスピードアップ(マクロ他もだんだんと多用)。
書きつつも「ここのロジックいけてる?」とか、常にナビに問い合わせ。適正な突っ込みには即時対応。
ナビの時はコーディングスタイルから外れていたら即突っ込み、括弧の閉じ忘れや安易なコピペも容赦なく突っ込み、ロジックに関しても本当にそれで大丈夫?と再確認させる為の突っ込みと突っ込み三昧でした。
毎日心地よい疲れと共に帰宅してましたが、充実した期間ではありました。
Re: (スコア:0)
>パートナーを適宜変更していたので、各自の持つノウハウや知識がチーム全体に伝播していきました。
>残念ながら後にチームは解散分割のうえ、新チームの進行は旧態依然に戻るっていうね
成果は見えない形で会社に残ったのですから上がそれを認識していてくれているならいいですね
ご感想から推測するに常にとはいかずともたまに実施するだけでもメリットはありそうですし
日本なら二人羽織? (スコア:2)
宴会芸としては面白そうだ。
それにしても、膝の上だっこコーディングスタイルか。ぜひ女の子と…
Re:日本なら二人羽織? (スコア:2, おもしろおかしい)
> ぜひ女の子と…
現実を見るんだ。
ピザの二枚重ねなんぞ耐えられない。
Re:日本なら二人羽織? (スコア:1)
>ピザの二枚重ねなんぞ耐えられない。
椅子が?
Re:日本なら二人羽織? (スコア:1)
>ピザの二枚重ねなんぞ耐えられない。
椅子が?
床も?
答えはある。それを見つける能力が無いだけだ。
Re:日本なら二人羽織? (スコア:2)
Re: (スコア:0)
> コードを書く役割の「ドライパー」
そう思っていいですか?
Re:日本なら二人羽織? (スコア:2, 興味深い)
とりあえず、子プロセスの作り方を勉強しとかないと…
Re:日本なら二人羽織? (スコア:3)
親は一つでいいよ。
Re:日本なら二人羽織? (スコア:2)
#お後がよろしくて…よ!
永世小学六年生神アイドル支持者(バランス取らなくっちゃなぁっ!!)
Re: (スコア:0)
幼い娘をを膝に抱きつつ在宅プログラミングですね。
わかります。
Re: (スコア:0)
そのうち、バグを指摘してくれるまで育ってくれるといいなあと。
#いつまで膝にのってくれるやら
向き不向きがある (スコア:2)
その人の性格、相手との力量差、職場での力関係というのがどうしても気になる人には向かないと思う。
本来であればそういったことは気にせずに気づいたことを言うべきものではあるけど、それが出来ない人には向かないと思う。
ペアプロはコミュ障の多い日本では本質的に不向き (スコア:2, 参考になる)
だと痛感した。
海外病発症して、海外がすることは皆正しいと判断するのは勝手だが
悲しいけど、ここは日本なのね
うちは9年前かな
ペアプロ初めました
するとどうでしょう、上の人間は会話が起きると妄想していましたがキーを打つ音しか聞こえません
それもそのはず、隣の人間と話すのに声を出さずにメールで会話していたのです
メールを書くのにわざわざ自分のノートPC持ち出す奴、携帯端末で書く奴
しまいにはメール書いてるところを見られたくないからと一々トイレに行く奴まで表れました
そこら辺まで行って初めて、上の人間も「これはムリだわ」と気づいたようです
初めのうちは喋っていたと記憶してはいるけどね
他人の臭いとか、喋り方とか、呼吸音とか、癖とか、そういうものが気にいらなかったり
そもそもうちの技術の奴って、広大なパーソナルスペース持ちが多いからね
完全な個室じゃないにしても、ほぼ個室な場所にふたりで、とかもうね…
ああいうのはフレンドリーな外国の人間のみに緩されたプログラミング方だよ
人と触れあうのが嫌いどころかコミュ障の多い日本の、それもその巣窟たる技術屋に緩される技じゃない
Re:ペアプロはコミュ障の多い日本では本質的に不向き (スコア:1)
×コミュ障の多い日本では
×コミュ障の多い俺様の周りでは
○コミュ障の俺様には
Re: (スコア:0)
自分の見える範囲で日本を語られても...
私の周りでは良い感じでしたよ
Re: (スコア:0)
そういうのを前提にしてしまうからパーソナルスペースが広くなってしまうというのはあると思うけどね
臭いが気になるなら自分はどうなんだと考えるとか、誰かの要求に合うように自分を想定していないというのもあるんじゃないか
個人だけの快適性というのもあるけれど人と交わるからこその快適性もあると思います。
交流能力が0なら1ぐらいに上げた方が良いと思うのですよね、自覚があるか無いかに関わらずそういう力が0なあまりに自分で何でも抱え込むタイプの人を身近でたくさん見ているので…
#食事をするのが何時もぼっちというなら「クチャラーばんざーい、クチャラーはやっぱり正しかったんや!」というのもそんなもんかなと思ってしまうし
Re: (スコア:0)
画面共有とチャットでリモートペアプロすればいいじゃん。
履歴も残るし便利じゃないかな。
Re: (スコア:0)
プログラミング中は黙っていてくれ って感じですね
Re: (スコア:0)
確かに日本人のプログラマーには・・・若い頃から経験があれば別かもしれないけど?
でも、個人的にもちょっと嫌かな。
だって中には臭い人もいるしwww
アンモニア臭が酷い人とか・・・ニコチン中毒の人は昼間もアンモニアたっぷり含んだタバコを補給するからねぇ
Re: (スコア:0)
つ銀の弾丸はない
チームの構成人員の意識や適正が伴っていないとペアプロに限らずうまくいかないでしょう。
私が経験したペアプロでは常に会話が飛び交っていて、
他のペアの詰まっている問題に隣のペアが助け舟出したり、一時的にAペアとBペアのドライバー交代して対処とか、有機的に機能していました。
単に能力が欠如しているだけ (スコア:1)
開発プロセスの目的を理解していなかったり遵守する気がなかったりというのは
最低限の技術力が欠如しているのと同じことだと思います。
別にペアプロに限った話ではないような (スコア:0)
単に職場におけるコミュニケーション問題では?
その一例としてペアプロが機能してないということでしょう。
その点、日本企業はコミュニケーション能力を重視してるから安心(キリッ
> 一人で作業しているとありがちな、Webサーフィンで時間を潰してサボることもなくなると
これ、グサっと来たな。まさに今やってることだし。
Spooning ? (スコア:0)
つ https://bitbucket.org/spooning/ [bitbucket.org]
部門名 (スコア:0)
if (1+1 != 2 && (1+1)*10 == 200)
{
/* 本処理 */
}
Re: (スコア:0)
if (1+1 != 2 && (1+1)*10 == 200)
{
/* 本処理 */
}
読み解きます。
「ペアプログラミングで二人で働いても二人分の仕事量にならないのに
何故か、二人で10ヶ月という人月計算がされて、降ってくる仕事もそれくらい」
という状況のときに本処理が走りますね?
Re: (スコア:0)
まじめに読み解いてるとこ悪いが、このネタだと思った。
「1+1は2じゃないぞ。オレたちは1+1で200だ。10倍だぞ10倍!」
Re: (スコア:0)
if (1+1 != 2 && (1+1)*10 == 200)
これは常に偽を返し、本処理は絶対に走りません。
この文脈で出てくるという事は、
Cの演算子の優先順位について、ペアの人にやさしく教えてもらってね
という意味か?
Re: (スコア:0)
> これは常に偽を返し、本処理は絶対に走りません。
というか、そういうつもりで書いてあるんじゃないですか?
> Cの演算子の優先順位について、ペアの人にやさしく教えてもらってね
???
優先順位とかそういう問題じゃなくて、最初から成立しない式を書いているわけですよね?
名前間違ってる (スコア:0)
Kent Bec ではなく Kent Beck
それ以前に (スコア:0)
彼クラスならペアプロでなくとも成果でるだろう。
いっそ一般ペアとの比較用としてアザラシ漁30年のベテランイヌイットとでも組ませたらどうか?
コードを書く役割の「ドライパー」 (スコア:0)
IT土方ですね。わかりたくねぇ…。
Wikipediaで言う「編集合戦」が起きて終わると思う。 (スコア:0)
一人を一人がチェックするんじゃなくて、十人でチェックすればいい。
俺なら (スコア:0)
解離性同一性障害だから一人でできるぞ