Extreme-programming-pair-programming
エクストリームプログラミング-ペアプログラミング
ペアプログラミングは、2人のプログラマが1台のコンピューターで並行して作業し、1つの画面、キーボード、およびマウスを共有し、同じデザイン、アルゴリズム、コード、またはテストで継続的にコラボレーションするプログラミングスタイルです。
- ドライバー*と呼ばれるプログラマーは、キーボード/マウスを制御し、コードを積極的に実装するか、テストを作成します。 「ナビゲーター」と呼ばれる他のプログラマーは、ドライバーの作業を継続的に監視して欠陥を特定し、作業の方向について戦略的に考えます。
必要に応じて、2人のプログラマーは困難な問題についてブレーンストーミングを行います。 2人のプログラマーは定期的に役割を切り替え、平等に協力してソフトウェアを開発します。
ペアプログラミング-利点
ペアプログラミングの重要な利点は次のとおりです-
- QAテストや現場ではなく、入力時に多くの間違いが検出されます。
- 最終欠陥の内容は統計的に低くなっています。
- 設計は改善され、コード長は短くなります。
- チームは問題をより迅速に解決します。
- 人々は、システムとソフトウェア開発についてより多くを学びます。
- プロジェクトは、システムの各部分を理解する複数の人々で終わります。
- 人々は一緒に仕事をすることを学び、より頻繁に一緒に話し、より良い情報の流れとチームのダイナミクスを提供します。
- 人々は仕事をもっと楽しんでいます。
ペアプログラミング実験
ペアプログラミングの実践は、ソフトウェア製品の生産性と品質を改善するために実証されています。
ペアプログラミングの研究は、それを明らかにします-
- ペアはシングルよりも多くの工数を使用しません。
- ペアはより少ない欠陥を作成します。
- ペアは、より少ないコード行を作成します。
- ペアは自分の仕事をもっと楽しんでいます。
ユタ大学はペアプログラミングの実験を実施しました。 結果は次のことを明らかにしました-
- ペアは、個人よりもプログラムに15%多くの時間を費やしました。
- ペアで記述されたコードは、個人で記述されたコードよりも一貫して多くのテストケースに合格しました。
- ペアは、より少ないコード行で個人によって生成された同じ機能を一貫して実装しました。
- 急速に具体的な結果が得られる環境でプログラミングする方法を学ぶことは楽しいことであり、より速く学ぶことができます。
ペアプログラミングへの適応
ほとんどのプログラマーは孤独な仕事に慣れており、ペアプログラミングへの移行に抵抗することがよくあります。 しかし、実際には彼らは最終的にこの移行を行うことができます。
ローリーAによると ウィリアムズとロバートR ケスラーは、「幼稚園で学んだペアプログラミングについて本当に知っておくべきこと」という本で、一般的にチームの結束を確立するために、幼稚園で学んだスキルを育てる方法をよく説明しています。特に。
ペアプログラマとしての移行と継続的な成功には、多くの場合、日常の礼儀を練習することが含まれます。
以下のセクションは、本書の抜粋であり、効果的なペアプログラマーになるのに役立ちます。
幼稚園のレッスン
幼稚園では、次のことを学びました-
- すべてを共有する
- プレイフェア
- 人をhitらないでください
- 見つけた場所に戻す
- あなた自身の混乱をクリーンアップ
- 自分のものではないものを服用しないでください
- 誰かを傷つけたらごめんなさい
- 食べる前に手を洗う
- 流す
- 温かいクッキーと冷たいミルクはあなたに良い
- バランスの取れた生活を送る–いくつかを学び、いくつかを考え、絵を描き、ペイントし、歌い、踊り、毎日遊び、仕事をする
- 毎日昼寝
- あなたが世界に出かけるとき、交通に気をつけ、手を握って一緒にくっつく
- 不思議に注意してください
次に、上記の教示のコンテキストでペアプログラミングの原則を見ていきます。
すべてを共有する
ペアプログラミングでは、
- 2人のプログラマーが一緒に座って、共同で1つの成果物(設計、アルゴリズム、コードなど)を生成します。
- 1人が入力または書き込みを行い、もう1人が継続的に作業をレビューしています。 Both
- プロセスに平等に参加している
- アーティファクトのあらゆる側面を担当
- すべてを所有する
プレイフェア
ペアプログラミングでは、
- 一人が運転する、すなわち キーボードを制御したり、デザインのアイデアを記録したりしながら、もう一方は継続的に作業をレビューしています。
- これらの役割の1つが他の役割よりもかなり経験がある場合でも、これらの役割を定期的に切り替えて、平等な参加を確保します。
- 運転している人が実装について考えている間、他の人はコードを継続的にレビューし、可能な限り単純な設計、現在の開発が現在のシステム全体にどのように適合するかについて考えます。
パートナーをhitらないでください
ペアプログラミングでは、
- パートナーが常に集中し、タスクに集中できるようにします。
- あなたは集中して仕事を続けます。
- パートナーが規定のコーディング標準に従っていることを確認して、チームの他のメンバーに対するコミットメントを維持してください。
ペアプログラミング調査では、生産性の大幅な向上と品質の改善が実現されていることがわかりました。 これは-
- 一人ひとりが、パートナーの集中力を維持し、タスクをたるみのない状態に保ちます。
- 各アーティファクトは、品質を確保しながら生産されているため、継続的にレビューされます。
所属する場所に物を戻す
ペアプログラミングでは、
- 自分のスキルとパートナーのスキルも信じる必要があります。 この面での否定的な考えは、ゴミ箱に入れてください。
- あなたはあなたが知っていることを表現し、必要なときにあなたのパートナーから学ぶために開かれていることを確認する必要があります。 パートナーを観察するか、即座にフィードバックを受け取ることで、パートナーから学ぶことができます。
- あなたはその自信を持っている必要があります-
- 遅れる可能性がある場合はいつでも、すぐにパートナーから引き取ることができます。
- ペアで一緒に、単独では解決できない問題を解決できます。
- お互いのスキルを向上させることができます。
混乱を解消
ペアプログラミングでは、「肩越しに監視する」テクニックを使用して、
- パートナーが気づいていない明らかな欠陥の数を知ることは驚くべきことです。
- 正式な検査会議で発生する可能性のある自然な敵意なしに、これらの欠陥を削除できます。
- 欠陥防止と欠陥除去の効率を特徴付ける。
物事を真剣に受け止めないでください
設計とコーディングを継続的かつ客観的にレビューするパートナーを持つことは、ペアプログラミングの非常に有益な側面です。 ペアプログラミングでは、過剰な自我や少なすぎる自我なしで作業することを保証する必要があります。
これが必要な理由は、
- 過剰な自我は2つの方法で現れることができます-
- 「自分のやり方または高速道路」の態度を持つことは、プログラマーが他の人のアイデアを検討するのを妨げる可能性があります。
- 防御的であると、プログラマーは建設的な批判を受けないか、この批判を不信と見なす可能性があります。
自我の発現のこれらの両方の方法は、共同関係を損ないます。
- 一方、緊張を生じさせないように常にパートナーに同意する人は、共同作業の利点を最小限に抑えます。 良好な意見交換のためには、必要に応じて健康的な意見の相違/議論が必要です。
したがって、エゴを多めに表示するか少なすぎるかを微調整する必要があります。 効果的なペアプログラマーは、個人、仕事の性質、およびペアプログラミングの過去の経験に応じて、数時間または数日かかることがある初期調整期間中にこのバランスを整えます。
家具を動かしているときに誰かを傷つけたらごめんなさい
プログラマーは、コンピューターの画面を見ながらキーボードとマウスを共有しながら、横に並んで座ってプログラムできる必要があります。 極端なプログラマーには「キーボードをスライドさせる/椅子を動かさない」というルールがあります。
コラボレーションペア内および他のコラボレーションペアとの両方で効果的なコミュニケーションを確保するために、プログラマーは労力をかけずに、お互いを確認し、お互いに質問し、統合の問題などについて決定する必要があります。 プログラマーは、重要な貢献が可能な他の会話を耳にすることからも恩恵を受けます。
始める前に懐疑を否認する
ペアプログラミングを成功させるには、両方のパートナーがプログラミングにおけるコラボレーションの価値、メリット、およびエクスペリエンスの喜びを理解する必要があります。 この点で懐疑的な見方は、最初から止めておく必要があります。
経験上、ペアプログラミングに非常に積極的かつ/または経験のある1人のプログラマーがいると、そのペアは勝利を収めて1つの優れたコラボレーションチームになることができます。
- そのようなチームの生産は、ジェリー化されていない形で働く同じ人々の生産よりも大きい。
- 作品自体の性質を考えると、人々が自分の作品から得る楽しさは、あなたが期待する以上のものです。
- チームが鳴り始めると、成功の確率は劇的に上がります。
流す
ペアのプログラマーは、独立して何かに取り組むことができます。 ただし、再参加する場合は、独立した作業を組み込む前にレビューするか、独立した作業をフラッシュして書き直し、追加の欠陥を特定する作業の継続的なレビューを行う必要があります。
パートナーによるレビューなしに、独立した作品を取り入れないでください。 これは、研究によって、ペアによって生成された作業と比較して、独立した作業に欠陥があることが示されたためです。
温かいクッキーと冷たいミルクはあなたに良い
ペアのプログラマーは、お互いに継続的に集中し、タスクに集中します。 それは非常に激しく、精神的に疲れることがあります。 したがって、定期的に休憩を取って、生産的なペアプログラミングの別のラウンドのスタミナを維持してください。
休憩中は、タスクから切断し、再起動時に新鮮さを持ってアプローチするのが最適です。 推奨される活動は、電子メールの確認、電話の発信、Webの閲覧、または軽食を取ることです。
バランスの取れた生活を送る
定期的に他の人とコミュニケーションをとることは、バランスの取れた生活を送るための鍵です。 パートナーや他のプログラマーとの非公式な議論により、効果的なアイデアの交換や情報の効率的な伝達が可能になります。
毎日午後に一緒に仕事をするのを休む
毎日午後に別々に働く必要はありませんが、10〜50%の時間で単独で働くことは許容されます。 これは-
- 多くのプログラマーは、実験的なプロトタイピング、困難で深層的な問題、論理的思考のみを行うことを好みます。
- シンプルで明確に定義された日常的なコーディングは、一人のプログラマーによってより効率的に行われ、その後パートナーとレビューされます。
交通に注意し、手をつないで一緒にくっつく
ペアプログラミングでは、
- 2つの間に競合はありません。 アーティファクトが単一のマインドによって生成されるかのように、両方が連携して動作する必要があります。
- パートナーは、互いの判断とチームへの忠誠心を信頼する必要があります。
- パートナーは、問題や欠陥について他のパートナーを非難しないでください。
2つの脳の力に注意してください
2人が一緒に作業している場合、それぞれに独自の知識とスキルのセットがあります。
- この知識とこれらのスキルの共通セットは、効果的なコミュニケーションを可能にします。
- 彼らが自分のタスクを達成するのに貢献できるユニークなスキル。
一緒に、ペアは-
- 単独で作業する場合の2倍以上の可能な解決策を考えてください。
- より迅速に進み、最適なソリューションを絞り込みます。
- より迅速に、より良い品質で実装します。
したがって、常に同じ問題に集中する2つの脳があるため、ペアプログラミングは強力な手法です。 目の前の問題に完全に集中することを強制します。