Home » 未分類 » ペアプログラミングってどんなんだ。

ペアプログラミングってどんなんだ。

ペアプログラミング(英: pair programming)は、2人のプログラマが1台のワークステーションを使って共同でソフトウェア開発を行う手法である。一方が単体テストを打ち込んでいるときに、もう一方がそのテストを通るクラスについて考えるといったように、相補的な作業をする。

実際にキーボードを操作してコードを書く人を「ドライバ」、もう1人を「ナビゲータ」と呼ぶ。30分ごとか、単体テストを1つ完成させる度に役割を交替するのがよいとされる。また、1日に一度の頻度でパートナーを変えるのがよいともされている。

wikipediaから引用

ペアプログラミングには、以下のような利点があるとされている。上に挙げた項目ほど重要である。

  • 規範意識の増大。ペアプログラミングでは、個人の作業よりも怠けることなく作業を進める可能性が高い。
  • よりよいコード。相乗効果により設計の質が向上することが期待される。
  • 作業効率の向上。1人で作業するときとは流れが変わる。例えば、次に何をすべきか考え込むといったことが少なくなる。また、外乱要因に対しても耐性を示し、他の人が割り込んできても、一方が応対している間にもう一方が作業を進められる。
  • 多数の開発者による設計。ペアを頻繁に入れ替えれば、複数の人間が1つの機能の開発に関わることになる。これにより、よりよい設計が生み出される。例えば、あるペアが解決できない問題で作業が止まってしまっても、別のペアでは解決できることもある。
  • 勤労意欲の向上。ペアプログラミングの方が1人で作業するよりも楽しいと感じる開発者もいる。
  • 集団的なコード所有権。プロジェクトの全員がペアプログラミングを行い、頻繁にペアを組みかえる場合、そのコード全体について全員がそれなりの知識を共有することになる。
  • 教育的側面。初心者であっても固有の知識(プログラミングテクニックなど)を持っているものである。ペアプログラミングでは、余計な手間をかけずに、そのような知識をチーム全体で共有できる。
  • チームワーク。ペアプログラミングを行うことで、チームの各人が互いをよりよく知ることができ、結束力を生み出しやすい。
  • 割り込みの削減。1人で作業している人に割り込みをかけるよりも、ペアプログラミング中の2人に割り込みをかける方が抵抗があるため、割り込みが少なくなる。
  • ワークステーション数の削減。2人で1台のワークステーションを使うため、ワークステーションが少なくて済み、余ったワークステーションを他の用途に活用できる。

ペアプログラミングのメリットを自分なりに解釈してみたいと思います。

規範意識の増大とありますがその通りだとみています。

ペアの一人が頑張れば、もう一人も頑張ろうと必死になるし、

逆のことを言えば、ペアの一人が怠ければもう一人も怠ける。

前者・後者に当てはまらない人もいるとおもいますがほとんどの人は

前者後者のどちらかに該当すると思います。

 

二人で一緒にプロジェクトに向き合うことによって

問題が発生した時にはどうやったら解決できるかを一人ではなく

二人で考えることによって解決が早くなるんではないかと思いますし、

そのほかにもプロジェクトになんらかの不具合が発生した場合でも

指摘し合ってよりよいプロジェクト・コードに繋げていけることも考えられます。

 

ペアプログラミングということもあって

二人で一つのパソコンに向き合うということですから

一人がパソコンに向き合えば、もう一人は設計図や方向性などの

コードの打ち込み以外の事を担うことになります。

上記のことを考えれば作業効率の向上も納得できます。

 

多数の開発者による設計というのがありますが

メモが重要になってくるものだと思います。

 

勤労意欲の向上は共感できるものがあります。

人数が多ければ多いほど発見できるものも違ってくると思いますし、

悩んだときには相談もできるので一人よりかは誰かいたほうがいいとは思います。

 

ペアプログラミングには教育的側面が多く含まれていると思っています。

いいものは吸収して自分のものにしていくということが結構あると思います。

 

チームワークとありますがこれは相性の問題かな。

デメリットに関して

  • 経験を積んだ開発者によっては、初心者とのペアプログラミングを退屈な指導と捉える場合もある。
  • 一部の技術者は1人で作業することを好み、ペアでの作業を面倒と感じる場合もある。
  • プログラマの生産性についてはさまざまな議論があり、ペアプログラミングで生産性が必ず向上することが保証されているわけではない。
  • 経験を積んだ技術者は、非常に正確なコードを書く。その場合、ペアを組んだとしても、もう一人が何か寄与することは難しい。
    • ペアプログラミングの目的は、正確性の向上だけでなく、知識や技術の共有という面もある。
  • コーディング・スタイルの違いによって、一種の衝突が発生する場合もある。
  • 各人のスケジュールが異なるようなプロジェクトでは、スケジュールがうまくかみ合ったときにだけペアプログラミングが可能となる。したがって、その場合にペアプログラミングを採用すると、作業にかかる工数が増加するだけでなく、ペアプログラミングに割ける時間が制限され、結果として完了までの期間が長くなる。
    • エクストリーム・プログラミングなどでは、そもそもコードは特定の個人が独占するものではなく、また、30分から数時間[2]の頻度でペアを交換するべきである。つまり、その時に作業可能な2人がタスクをこなしていくのである。これが可能になるのは、エクストリーム・プログラミング自体のタスクの粒度の小ささにも由来している。

デメリットは的を得ているものだと思います。

ペアプログラミングと言うものの

ペアも満足に見つからないかもしれまんせん(汗)

コメントを残す

%d人のブロガーが「いいね」をつけました。