ペア交換:長所と短所は何ですか?


15

ほとんどのアジャイル / XP理論家が支持している一般的な考え方は、ペアは定期的に交換する必要があるようです。たとえば、各プログラマは1日に1回ペアを交換する必要があります。一日の始めに人の半分、昼食後に人の半分が入れ替わります:会議、休日などの外部要因により、ほとんどの人は週に1、2回スワップ時間を反転させ、ペア構成が分散する傾向がありますチーム全体でほぼ均等に。

頻繁にスワッピングを行う理由の1つは、特定のスキルや知識が特定の個人に集中するのではなく、知識がチーム間で迅速かつ均等に分散することです。ペアプログラミング自体を取り巻くドグマの一種の帰結である別の理論的根拠は、誰かがあなたを交換するたびに、新しいペアの目で新しいコードレビューを取得しているため、コードの品質を向上させることです。

どちらの主張も理にかなっています。管理の観点から見ると、安定性と品質の両方が向上したように聞こえます。このような頻繁な交換は、私が見たほとんどのアジャイル / XPの本でかなり標準的な理論です。

だから、実際に実行するとき、人々は実際にペアスワッピングについて何を考えますか

  • プログラマーの視点?
  • マネージャーの視点?

そして

  • 誰かがペアから/にスワップするとき、何を決定する必要がありますか?

これは「ペアプログラミング」と同じですか?
ロバートハーヴェイ

@Robert Harvey-それはペアプログラミングの1つの側面です。チームがペアでプログラミングすることを決定したら(稼働日のある程度)、プログラマーをペアに配置する方法、つまり、あるプログラマーがペアを離れる(他のプログラマーが同時に参加する)方法を決定する必要があります。 )。それが「ペアスワッピング」です。

すばらしい質問には+1。残念ながら、定期的にペアリングを行うショップを見つけるのは十分に難しいと思います。ペアスワッピングに関するデータを保持するのは言うまでもありません。うまくいけば私はこれについて間違っていて、あなたはいくつかの良い反応を得ます、私はいくつかを聞くことに非常に興味があります。
ジェシーマカロック

2
個人的にはペア交換が非常に気が散ることに気づくでしょう。このように近い場所で非常に多くの異なる性格やスキルレベルに対処しようとすると、認知的不協和音が多くなりすぎます。
ロバートハーヴェイ

@Jesse McCulloch-私は、本がチームがすべきだと言っているように、プログラムとスワップのみをペアリングする場所で働いています。また、私は純粋なソロ環境で仕事をしてきたので、コントラストに関してかなり良い見方をしています。しかし、あまり影響を与えずに自分の意見と一致するかどうかを確認したいので、他の人の意見を聞きたいです。

回答:


4

ペアプログラミングは困難です。

関係する2人のスキルレベルが近い場合に最適に機能し、一部の作業環境では困難になる可能性があるため、困難です。適切なスキルレベルを持つ他の人を見つけて、現在の問題についてスピードを上げる必要があるため、交換するのはより困難になる可能性があります。利点は、ペアリングされたコードの一部にさらされる人が増えることです。誰もコードについて十分な知識がないため、コードを修正できない場合は、これが少なくなるはずです。また、グループの所有権と、誰でも作業を引き受ける能力を広める必要があります。

ペアリングが行われる環境であっても、ペア交換はコストに見合わないことがわかりました。ただし、これは、タスクが1.5日以上かかることがないためです。タスクを分解することで、最大1.5日分の作業に相当する大きなメリットがあることがわかりました。ペアスワッピングは、実行時間が長いタスクのコンテキストでより意味があります。


個人的には、すべてのレベルの人々とペアリングを楽​​しんでいます。時々私は学んでいます、時には教えています、そして時々私たちはただ物事を成し遂げています。しかし、学習と教育は長期的なチーム能力を構築します。これは機能をチェックするのと同じくらい重要だと思います。
ウィリアムピエトリ

あなたはそう思うかもしれませんが、あなたの専門知識として彼の締め切りが蒸発するのを見るプロジェクトマネージャーは、あなたが同意できないほど速くコードを大量生産するのではなく、彼の時間に人々を訓練することに慣れます。そして、それがほとんどのプロジェクトの運営方法です。仕事をするのに必要なスキルを持つように人々を訓練する時間がないので、後輩はぶら下がり、予算超過のせいにするだけです。
11

@William Pietri:私の経験では、ペアリングは教育に適した形式ではありません。何が起こっているのかを説明するために誰かを連れて行き、コードを調べていくのに問題はありません。ただし、それはペアプログラミングではありません。
-Dietbuddha

@jwenting:品質と持続可能性よりもでたらめな期限に焦点を当てているショップでは、ペアプログラミングがうまく機能しないと言っているなら、私は議論しません。私のヒント:異常ではないどこかで作業します。
ウィリアムピエトリ

@dietbuddha:私のために働く!私が新しい言語、フレームワーク、またはライブラリを学ぶための最速の方法は、それをよく知っている人々とペアにすることです。そして、私はペアリングよりもスピードを上げるために、より良い方法を知っています。例えば、経験上、このテイク:slesinsky.org/brian/code/starting_xp.html
ウィリアムPietri氏

3

私はプログラマーでありマネージャーでもあります。私の見解は次のとおりです。

定期的な交換は素晴らしいです。私は1日に2〜4回スワッピングすることを好みます。私たちにとっては、それは自然なブレイクポイント、つまり一般的に昼食と午後半ばです。毎日変更することはおそらく大丈夫ですが、それよりもずっと長くなることを心配しています。(6週間に1回はめったにスワッピングが行われると聞いたことがありますが、これは非常識だと思います。その時間が経てば、聖人を刺す準備が整います。)

プログラマーとしては、新鮮な視点が得られ、コードの他の領域をチェックアウトでき、好きなように何かに固執したり先に進んだりできるので、大好きです。私は最近、ソロコーディングからペアリングに戻りました。私は興奮しています。私はもっと学び、もっと楽しく、もっとやり遂げます。

マネージャーとして、トラックファクターとボトルネックの多くの問題を解決できるので素晴らしいと思います。たとえば、今週末は友人の結婚式のために長い週末を過ごしていますが、まったく心配していません。私が取り組んできたことはすべて他の人も取り組んできました。また、チームのメンバーがお互いの長所と短所を評価し、コードの共同所有を促進するのに本当に役立つと思います。

誰が現在の仕事を続けるかについては、主に関係者次第だと感じています。時には何かを見通したいこともあれば、変更の準備ができていることもあります。また、専門知識を取り入れるためにスワップすることもあります。そうすれば、誰かが興味のあることを学ぶことができます。 。


私にとって、スワッピングオフは、a)一緒にコーディングしている人と一緒にコーディングを楽しんでいない、b)私が取り組んでいるストーリーが気に入らない(ロープを固定するなど)古いメモリのバグ)。それ以外の場合は、最初から最後まで続けたいです。個人的には、ペアスワッピングはコードの品質を低下させると思います。なぜなら、良いコードには単一の明確なビジョンが必要であり、単一のパーツで作業する人が多いほど、ビジョンが乱雑になるからです。知識の共有に関しては、ほとんどの人は何が起こっているのか少し考えていると思いますが、実際に何も正しく理解している人はいません。

@B Tyler-コードベースは共同の知的作業だと思うので、共通のビジョンでもある明確なビジョンを持つ必要があります。それが私が交換することが重要だと思う理由の一部です。しっかりした共有アプローチを開発するには、多くの相互作用と議論が必要です。
ウィリアムピエトリ

1

オーキエ、ここでは、自称実用的なアジャイル/ XPプログラマーからの答えがあります。私は2年以上ペアプログラミングをしています。ペアプログラミングが適切であれば、ペアを頻繁に交換します(半日ごとではないにしても、理想的には2時間ごと)。私たちのオフィスでは、毎日(通常)または2日ごと(最悪の場合)にペアを交換することを重視しています。これを単独で行うと、コミットして学習したり奪い取ったりするコード品質に多くの自信を与えることができます。、すべてのペアのローテーションで持っていることができます(コードレビューが良いほど、より良いものであり、早いほど良いことを知っています)。これが「ペアの交換の練習を含むペアプログラミング」が達成することです)。

ペアを2/4時間ごとに切り替えないのはなぜですか?実は、私もこれを実践しているチームにいました。それは確かにずっとクールで生産的です。しかし、ここに取引があります。ペアを交換する時間間隔はルールではなく、それ自体で発生するはずです。そうして初めて、マネージャーや企業はその利益を見ることができます。

私はこれを目撃し、経験しました。私は今、その伝道者です。その理論はありません。むしろ、完全に実用的です:)ピンポンペアリングとスワッピングペア。


1
残念ながら、ペアプログラミングは一般的に悪い考えだという意見に完全に変わりました。ペアプログラミングで頻繁にペアを交換すると、事態が悪化します。私はすべての理論を聞いて実際に多くのことを試してみましたが、それは信じられないほど非効率的で、ソロプログラミングよりもはるかに退屈でイライラし、コードの品質が低下すると思います。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.