パスワードを忘れた? アカウント作成
6253841 story
プログラミング

「ペアプログラミング」における「コミュニケーション問題」 38

ストーリー by hylom
1+1は……・ 部門より
taraiok 曰く、

オーストラリアのソフトウェア会社Atlassianがエイプリルフールのためにパロディー動画を作った。ネタは2人のプログラマが1台のPCでソフトウェアの共同開発を行う「ペアプログラミング」。動画ではプログラマーがもう一人の膝の上に乗り、二人同時にキーボードを叩くというシュールな光景が映し出されている(Atlassianの動画本家/.)。

もちろんこれはジョークなのだが、The Wall Street Journalではペアプログラミングの難しさについても言及されている。本来のペアプログラミングは、コードを書く役割の「ドライパー」とバグがないかチェックする「ナビゲート」の役割に分かれ、書かれたコードを作ったそばからチェックしていく、という点が特徴だ。これによってプログラミングのエラーを減らすことができ、一人で作業しているとありがちな、Webサーフィンで時間を潰してサボることもなくなると言うことらしい。ペアプログラミングの熱烈な支持者で、Facebookに所属するプログラマーKent Bec氏はペアプログラミングの効用について「コミュニケーションが深くなり、言葉を使わなくとも相手と意思疎通ができる」と言う。

いっぽう、必ずしもペアプログラミングに効果があるとは限らない。WSJの記事では、ドライバーが間違いを犯してもナビゲート役が指摘せず、そのナビゲート役がドライバー役に変わったときに問題の個所が黙って修正されたという経験を持つWill Sargent氏という人物のコメントも掲載されている。氏はその後その職場を退職したそうだ。

ペアプログラミングは理論だけの夢物語なのか、それとも本当に効果があるのだろうか?

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 体験談 (スコア:5, 参考になる)

    by Anonymous Coward on 2012年08月31日 9時34分 (#2222221)

    昔数回ペアプログラミングをした事が有りますが、そのとき感じた事をいくつか。
    ちなみにパートナーを状況を見て適宜変更したりしてました。

    ドライバーとナビゲーターの技術レベルが離れすぎると出力は下がります。
    (但し本来の出力向上目的でなく、教育を期待する場合は適していると思われます)

    性格的相性は考慮しないとそのペアの効果が落ちます。(物腰や言い方を気にする人は結構います)
    プライドの高い人や、劣等感を感じやすい人はペアプロに向きませんね。
    私は一回り下の人間とペアプロはすごく楽しかったけどなぁ。

    新規コードよりもリファクタリングの方が効果は高かったです。
    (私がしきった時は、新規コードや技術的調査は、一旦シングルでそれぞれ疑似コードや調査結果を書き出して、
    ペアで検討しつつ実装してました)

    参加者自身にペアプロに対する理解が必須だと思います。(思いつきだけでヨーイドンしても効果はほぼないでしょう)
    私の時は各人が日頃からXP他、仕事の仕方についての討議をしているような意識の高い環境下だったので、
    ペアプロで実績作って認めさせてやるぜ!ってのもありましたが。

    管理者がペアプログラミングを理解し、支援してくれないと厳しい。
    よく言われるのが人件費が単純に増えるじゃーん(いや倍用意しろとか言ってないから) or
    2人で1台じゃ出力1/2じゃーん(ペアがシングルと同等かより良くなる事を説得するのに苦労した。最終的にPgリーダーが俺が責任取るからやらせて!でGo)

    副次的効果
    ワインバーグかな? 職場で趣味で皮加工をしている人の臭いがどうのこうのって話がありましたが、
    ペアプロ始めてから人員の服装や臭いに関しての意識があがりました。
    また各自机の上の片付けが自然と進みましたね。
    パートナーを適宜変更していたので、各自の持つノウハウや知識がチーム全体に伝播していきました。

    総じて効果はありますし、実際スケジュールも遵守した上で品質的にもよいものができたと自負しています。

    #残念ながら後にチームは解散分割のうえ、新チームの進行は旧態依然に戻るっていうね
    #長文すんません
    #へたれなので当然AC

    • by nim (10479) on 2012年08月31日 13時09分 (#2222374)

      >(思いつきだけでヨーイドンしても効果はほぼないでしょう)

      をみて、「エドワード・ヨードン意味ないかな。絶対読んだほうがいいと思うんだけど」と
      思ってしまいました。

      親コメント
    • by Anonymous Coward

      ペアプログラミング大変興味あるので、主に物理的なことなんですが、
      ぜひお教えください。

      ・PCやキーボードの数やレイアウトはどうされましたか?
       一人使いの、画面と面と向かった体勢が変わったり、画面からの
       距離や角度が変るともろもろ違和感がでると思われますが
       どうだったのでしょう。フォントは大きいものに変えますか?
       それとも二人並んでリモートデスクトップ的なもので?

      ・二人の好むエディタが異なる場合はどうなるのですか?
       これは役割を固定すれば問題ないのかな? 「ちょっと貸してみろ」ってな
       展開になったらどうなるんだろ。

      プログラミングに限らず、他人の操作を眺めて自分の知らないショートカットや
      操作テクニック・ツール他学ぶことは多いと思うんだが、なかなか流行りませんね。

      • by Anonymous Coward on 2012年09月03日 9時21分 (#2223818)

        体験談を書いた者です。

        PCは二人で1台(ドライバーアカウントでログイン)、机の3段引き出し部が別な机なので、それを移動して二人分椅子を並べるスペース確保(ナビゲーターの位置は左右任意)。
        リモートデスクトップで2台は個人的には推奨しません。同じコードを同じタイミングで見ている事が重要かと。
        体制によってはナビゲーターが身を乗り出すような事にもなりますが、その辺りは各ペア調整しつつやってました。

        エディタはドライバーが使いたいものを使用、フォントはペア次第。
        基本的にペアを進めるのに問題ないように、それぞれ調整してねという感じです。
        ちなみにエディタをはじめ、ツール類もこれがいい、あれが便利って形で伝播していきましたね。

        >プログラミングに限らず、他人の操作を眺めて自分の知らないショートカットや>
        >操作テクニック・ツール他学ぶことは多いと思うんだが、なかなか流行りませんね。

        様々な小さいけど有用なTipsが伝播していくのは見てて楽しかったです。

        後いろいろ補足
        管理者側、ペア側両方体験しましたが、管理者の時は各ペアの状況を毎日細かくチェックしてました。
        うまくいってないペアの調停や、詰まっているペアがいたら別の作業をふって詰まっている件については調査するとか、
        とにかくペアの進行を停滞させない事を心がけました。

        後ルールとして、チーム内コーディング規約の遵守、ドライバーとナビゲーターは日替わりで交代、2時間ごとに10分以上の休憩、4セット8時間強超えたらその日の業務終了とかですかね。
        真面目にペアを一日やると本当に疲れます。それだけ集中していたという事ですが。
        お願い後ちょっとだけやらせて〜にはロスタイム5分&コミット禁止てな感じで。

        ペア側では、ドライバーの時は最初のうちはナビゲーターの確認スピードと合わせる為ゆっくり目に書いていって、互いになれてきたらスピードアップ(マクロ他もだんだんと多用)。
        書きつつも「ここのロジックいけてる?」とか、常にナビに問い合わせ。適正な突っ込みには即時対応。

        ナビの時はコーディングスタイルから外れていたら即突っ込み、括弧の閉じ忘れや安易なコピペも容赦なく突っ込み、ロジックに関しても本当にそれで大丈夫?と再確認させる為の突っ込みと突っ込み三昧でした。

        毎日心地よい疲れと共に帰宅してましたが、充実した期間ではありました。

        親コメント
    • by Anonymous Coward

      >パートナーを適宜変更していたので、各自の持つノウハウや知識がチーム全体に伝播していきました。
      >残念ながら後にチームは解散分割のうえ、新チームの進行は旧態依然に戻るっていうね

      成果は見えない形で会社に残ったのですから上がそれを認識していてくれているならいいですね
      ご感想から推測するに常にとはいかずともたまに実施するだけでもメリットはありそうですし

  • by minet (45149) on 2012年08月31日 7時47分 (#2222152) 日記

    宴会芸としては面白そうだ。

    それにしても、膝の上だっこコーディングスタイルか。ぜひ女の子と…

  • by iwakuralain (33086) on 2012年08月31日 9時22分 (#2222204)

    その人の性格、相手との力量差、職場での力関係というのがどうしても気になる人には向かないと思う。
    本来であればそういったことは気にせずに気づいたことを言うべきものではあるけど、それが出来ない人には向かないと思う。

  • by Anonymous Coward on 2012年08月31日 10時31分 (#2222259)

    だと痛感した。

    海外病発症して、海外がすることは皆正しいと判断するのは勝手だが
    悲しいけど、ここは日本なのね

    うちは9年前かな
    ペアプロ初めました
    するとどうでしょう、上の人間は会話が起きると妄想していましたがキーを打つ音しか聞こえません
    それもそのはず、隣の人間と話すのに声を出さずにメールで会話していたのです
    メールを書くのにわざわざ自分のノートPC持ち出す奴、携帯端末で書く奴
    しまいにはメール書いてるところを見られたくないからと一々トイレに行く奴まで表れました
    そこら辺まで行って初めて、上の人間も「これはムリだわ」と気づいたようです

    初めのうちは喋っていたと記憶してはいるけどね
    他人の臭いとか、喋り方とか、呼吸音とか、癖とか、そういうものが気にいらなかったり
    そもそもうちの技術の奴って、広大なパーソナルスペース持ちが多いからね
    完全な個室じゃないにしても、ほぼ個室な場所にふたりで、とかもうね…

    ああいうのはフレンドリーな外国の人間のみに緩されたプログラミング方だよ
    人と触れあうのが嫌いどころかコミュ障の多い日本の、それもその巣窟たる技術屋に緩される技じゃない

    • ×コミュ障の多い日本では
      ×コミュ障の多い俺様の周りでは
      ○コミュ障の俺様には

      親コメント
    • by Anonymous Coward

      自分の見える範囲で日本を語られても...

      私の周りでは良い感じでしたよ

    • by Anonymous Coward

      そういうのを前提にしてしまうからパーソナルスペースが広くなってしまうというのはあると思うけどね
      臭いが気になるなら自分はどうなんだと考えるとか、誰かの要求に合うように自分を想定していないというのもあるんじゃないか
      個人だけの快適性というのもあるけれど人と交わるからこその快適性もあると思います。

      交流能力が0なら1ぐらいに上げた方が良いと思うのですよね、自覚があるか無いかに関わらずそういう力が0なあまりに自分で何でも抱え込むタイプの人を身近でたくさん見ているので…

      #食事をするのが何時もぼっちというなら「クチャラーばんざーい、クチャラーはやっぱり正しかったんや!」というのもそんなもんかなと思ってしまうし

    • by Anonymous Coward

      画面共有とチャットでリモートペアプロすればいいじゃん。
      履歴も残るし便利じゃないかな。

    • by Anonymous Coward

      プログラミング中は黙っていてくれ  って感じですね

    • by Anonymous Coward

      確かに日本人のプログラマーには・・・若い頃から経験があれば別かもしれないけど?

      でも、個人的にもちょっと嫌かな。
      だって中には臭い人もいるしwww

      アンモニア臭が酷い人とか・・・ニコチン中毒の人は昼間もアンモニアたっぷり含んだタバコを補給するからねぇ

    • by Anonymous Coward

      つ銀の弾丸はない

      チームの構成人員の意識や適正が伴っていないとペアプロに限らずうまくいかないでしょう。
      私が経験したペアプロでは常に会話が飛び交っていて、
      他のペアの詰まっている問題に隣のペアが助け舟出したり、一時的にAペアとBペアのドライバー交代して対処とか、有機的に機能していました。

  • まあコミュニケーションの問題でもあるのかもしれませんけど、
    開発プロセスの目的を理解していなかったり遵守する気がなかったりというのは
    最低限の技術力が欠如しているのと同じことだと思います。
  • by Anonymous Coward on 2012年08月31日 8時19分 (#2222167)

    単に職場におけるコミュニケーション問題では?
    その一例としてペアプロが機能してないということでしょう。

    その点、日本企業はコミュニケーション能力を重視してるから安心(キリッ

    > 一人で作業しているとありがちな、Webサーフィンで時間を潰してサボることもなくなると

    これ、グサっと来たな。まさに今やってることだし。

  • by Anonymous Coward on 2012年08月31日 8時58分 (#2222187)
  • by Anonymous Coward on 2012年08月31日 9時14分 (#2222196)

    if (1+1 != 2 && (1+1)*10 == 200)
    {
      /* 本処理 */
    }

    • by Anonymous Coward

      if (1+1 != 2 && (1+1)*10 == 200)
      {

        /* 本処理 */
      }

      読み解きます。
      「ペアプログラミングで二人で働いても二人分の仕事量にならないのに
       何故か、二人で10ヶ月という人月計算がされて、降ってくる仕事もそれくらい」
      という状況のときに本処理が走りますね?

      • by Anonymous Coward

        まじめに読み解いてるとこ悪いが、このネタだと思った。
        「1+1は2じゃないぞ。オレたちは1+1で200だ。10倍だぞ10倍!」

        • by Anonymous Coward

          if (1+1 != 2 && (1+1)*10 == 200)

          これは常に偽を返し、本処理は絶対に走りません。

          この文脈で出てくるという事は、
          Cの演算子の優先順位について、ペアの人にやさしく教えてもらってね
          という意味か?

          • by Anonymous Coward

            > これは常に偽を返し、本処理は絶対に走りません。

            というか、そういうつもりで書いてあるんじゃないですか?

            > Cの演算子の優先順位について、ペアの人にやさしく教えてもらってね

            ???
            優先順位とかそういう問題じゃなくて、最初から成立しない式を書いているわけですよね?

  • by Anonymous Coward on 2012年08月31日 10時47分 (#2222270)

    Kent Bec ではなく Kent Beck

    • by Anonymous Coward

      彼クラスならペアプロでなくとも成果でるだろう。
      いっそ一般ペアとの比較用としてアザラシ漁30年のベテランイヌイットとでも組ませたらどうか?

  • by Anonymous Coward on 2012年08月31日 12時13分 (#2222311)

    IT土方ですね。わかりたくねぇ…。

  • by Anonymous Coward on 2012年08月31日 15時23分 (#2222490)

    一人を一人がチェックするんじゃなくて、十人でチェックすればいい。

  • by Anonymous Coward on 2012年09月01日 9時04分 (#2223006)

    解離性同一性障害だから一人でできるぞ

typodupeerror

私は悩みをリストアップし始めたが、そのあまりの長さにいやけがさし、何も考えないことにした。-- Robert C. Pike

読み込み中...