ペアプログラミングは、今日では非常に有名です。
次のようないくつかの利点があります。
しかし、ペアプログラミングの欠点は何ですか?
ペアプログラミングはかなりの評判を得ていますが、いくつかの落とし穴もあります。
それらの一部は次のとおりです。
私はペアプログラミングを数回試みましたが、すべてのエンジニアにとって必須のプロセスとして展開することを(簡潔に)検討した組織を含みます(そのアイデアがどれだけうまく機能しているかを推測できます)。個人的には嫌だった。
以下に挙げる理由は、私の主観的な経験にすぎず、具体的な影響を「測定」することはできません。しかし、ここではそれらはすべて同じです:
1-「ナビゲーター」と「ドライバー」があることは、前者がボーカルで、後者が聞く場合にのみ役立ちます。
私たちは皆、頑固で、理論的な懸念に熱心であるか、誰かが古い作品に問題を示唆したときに病理学的に-心理的に-古い作品を「捨てる」ことができない開発者に会いました。そして私達は皆、懸念を提起したり、コーナーケースを提案したりするのに臆病または自信がない個人を知っています。
これらの種類の開発者がペアになると、ナビゲーターはすぐに受動的な役割を果たし、最終的には自動コードレビューによる唯一のプログラミングになります。これは、莫大な資源の浪費です。
2-ペアリングは創造性を妨げます。
「グループブレーンストーミング」の価値について以前に感じられていたのとは対照的に、最近のコンセンサスは、創造的な知識の仕事には独立性とautonomy。一人で作業しているときは、クレイジーなアイデアをすばやくハックして、それが実際に実現可能かどうかを確認できます。 誰も知らないため、奇妙なプロトタイプを無言で組み立てることができ、失敗してもそれは問題ではありません。
それをペアリングと比較してください。新しいコンセプトを試してみたいときは、パートナーを説得し、実装について段階的に説明し、失敗しても私に判断されないようにしてください。そのような環境は毒性で新しいアイデアを生み出します。
-最も一般的な分母の設計。
上記のようにペアが新しいアイデアを生み出すことができない場合、または機能をどのように設計すべきかという基本原則に個人が同意できない場合は、妥協して誰も満足させようとしない混乱した設計が生まれます。
素晴らしく、雄弁で、空のように機能するプログラミングアブストラクションを構築する開発者と速くて汚いパフォーマンスフリークを組み合わせる場合、それらが一緒に生成するコードは、通常、ひどくエレガントでも特に高速でもありません。
4-自律性の欠如と暴力的な透明性。
暴力的な透明性は、スクラム方法論に対して中程度に有名な(そしてかなり物議を醸す)論争から私が選んだフレーズです。これは、一部の組織が開発者を幼児化し、通常は非専門家労働者のために留保されている疑いでそれらを扱う方法を説明しています。
開発者の作業を完全に透過的にすることの「害」について何を考えても(実際には害であることに同意できないかもしれません)、多くの個人は、自律性と一人で働く能力を評価し、正しいことを行うと信頼されています。これは重要な心理的な必要性であり、開発者にペアリングを強制すると(少なくとも1つのショップで見られるように)、従業員は失望し、動揺し、疎遠になります。
5-一部の開発者は、ペアでうまくプレイしません。
ペアリングされた環境で適切に行動しない、またはできない人もいます。彼らは、衛生状態が悪い、仕事の習慣が悪い、性格が研ぎ澄まされている、「騒々しい」「強烈な」態度、または他の多くの属性を持っているため、個々の労働者はすばらしいが、ペアのプログラマーは貧しい。
これを解決できますか?あんまり。個人の行動を変えることは難しいです。ペアプログラミングショップは、採用に非常に注意を払い、多くの時間を費やして、誰かがどのように働いているか、同僚とうまく仕事ができるかどうかを確認する必要があります。ただし、性格を厳しく区別することは、スキルと専門知識の基準を緩めない限り、採用に時間がかかることを意味します。
あなたの状況や視点に依存します。
ペアプログラミングは組織に適しています。しかし、それは個人にとって良いことなのでしょうか?
結局のところ、それはコスト削減(早期フィードバック)と生産性の方法です。それはあなたではなく、プロジェクト、製品、会社($$)の問題です。
個人的なメリットはありますが、それが開発方法論の理由や目的ではありません。 (フルタイム)ペアプログラミングは、たとえば、スラックやサーフィンなどを停止させ、パートナーにポーズを正当化する必要があります。
あなたの(回転する)パートナーが最高の監視カメラになります。
または、知識を配布することにより、個人は会社にとってリスクが低くなり(たとえば、会社に本質的な知識を残すことができなくなります)、「交渉用チップ」が少なくなります。
マネージャーの視点ではなく、会社の実際の状況/立場から肯定的な記事を批判的に読むことで、より多くのポイントを見つけられると思います。
ほとんどすべての方法論はマネージャーの観点から書かれています。
突然、トイレに行ったり、コーヒーを飲みたいときは、誰かに話さなければなりません。少なくとも許可を求める必要はありません。
あなたは他の人の衛生基準に対処しなければなりません。
他の回答に加えて:
私が働いてきた多くの企業がプログラマーにラップトップを発行しました(クライアントのサイトをベース-仕事の後で家に持ち帰った場合に機器を安全に保ちやすく、ピンチでVPNで家から奇妙な仕事をすることができるなど)長年以前、私はすでにショルダーサーフィンの観点から他の人(「ドライバー」)のラップトップスクリーンを見るのに問題がありました-年齢はこれを改善しません(そして、いくつかのスクリーンはいずれにしても理想的な視野角の外側で読みにくくなります)。
そのため、ペアのプログラマーは十分に大きな画面を必要とし、ハードウェアのコストが増加し、場所への適応性が制限されます。一部の人にとっては問題ではないかもしれませんが、他の場合ではそれが問題になります。
あなたの娯楽のための逸話:
ペアプログラミングは社会的および実用的な理由で失敗すると思います。基本的に、あなたは一人に一定の監視の下で働き、もう一人は穴をあける以外何もしないように頼んでいます。
しばらくすると必然的に起こるのは、ペアが「メールをチェックする」または「そのライブの問題について不正なチェックを続ける」などに分割されていることです。
コード出力を改善するのではなく、音量を下げます。実用的な理由の両方で「私はあなたと同期せずに昼食/会議に行く必要があります」と社交的です
自慢の利点については、よりシンプルで効果的な方法でこれらを達成する多くの一般的な慣行があります
2人の上級開発者に仕事ができると確信している場合に「苦痛なプログラミング」を行うように言うことは、彼の最大の欠点です。