岩崎と申します。
日頃より、当MLにてXPを学習させて頂いております。
今回、初めて投稿となります。
今、私が所属している部署における
「ペア・プログラミング」の実践について検討しております。
私なりに、これまでのペア・プログラミングを実践した報告など
を参考に、当部署の特徴を踏まえた実践方法について検討してみました。
まだまだ稚拙な検討案かもしれませんが、
もし宜しければ、皆様よりご指摘、ご意見などを伺えればと
願っております。
以下に内容を記しました。
宜しくお願い致します。
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
<私が所属している部署の特徴>
1.「新しい技術」に取り組む機会が多い。
2.担当している顧客を複数抱えている人が多い。
3.顧客へのサポート業務が日々行なわれている。
1.については、部内の教育が必要となる。
2.3.については、開発に100%参加することが難しい状況である。
このような現状を踏まえて、当部署における
ペア・プログラミングの実践を検討した。
------
1.新しい技術の習得に対応したペア
□ 経験レベルが同じ者同士のペア
[メリット]
・お互いが知恵を出し合うことで、より効率的にバランスよく習得することができ
る。
・1人で悩むことが無くなり、広い視点をもった人に眺めてもらうことで、問題解決
が早くなる。
[デメリット]
同じ問題に対して深みにはまってしまう。
□ 熟練者と非熟練者によるペア
[メリット]
非熟練者にとって、高い教育的な効果を得ることができる。
[デメリット]
熟練者の開発効率が下がる恐れがある。
2.開発に100%参画することが困難な状況に対応したペア
顧客を複数抱えた人はペア・プログラミングの原則に従って
(5分〜10分ごとにドライバとパートナを交代する。)
プログラミングを行なうのは困難であるので、
顧客担当の人は、今まで培った業務知識を活かして
常に「パートナ」を努める。
さらに、「ドライバ」に技術力が豊富な人を持ってくる。
[メリット]
難易度の高い部分や、システムの中心部分の品質を高めることができる。
[デメリット]
開発メンバ間でペアのバランスが崩れてしまう。
------
デメリットを克服するには、
常にペアのローテーションを行なっていくことで解決していく。
ペアのローテーションを行なうことで、
それぞれのペアで習得した知識を開発メンバの間で、
広く伝播させることができる。
それによって、開発メンバの間で認識のズレを防ぎ、
メンバ全体の技術向上を図ることができる。
ペア・プログラミングを実践することで
・バグ発見の早期化
・コードの軽量化
・知識の伝搬、認識のズレを防止
・教育的効果
・困難や障害へのモチベーション向上
といった効果を得ることができ、その結果、品質を向上することができる。
------